0/1分数规划学习笔记

【关键字】

        0/1分数规划、最优比率生成树、最优比率环

0/1分数规划模型:

        给定整数a1,a2,a3......an,以及b1,b2,b3......bn,求解一组xi(1<=i<=n,xi=0或者1),使得最值化,segm(ai*xi)/segm(bi*xi)。

通俗得讲,就是给定n对ai,bi,从中选出若干对,使得所选得segm (ai*xi)/segm(bi*xi)最值化。

一些分析:

        我们不妨猜测一个值L,考虑这样一个问题:是否存在一组解系X,满足segm(ai-bi*L)*xi>=0.

        如果存在这样得X,使得segm(ai-bi*L)*xi>=0,变形回去可以得到:segm(ai*xi)/segm(bi*xi)>=L,说明L小于我们要求得最大值。反之对立的情况,对于任意的X,都有:segm(ai-bi*L)*xi<0的话,即segm(ai*xi)/segm(bi*xi)<=L,说明L大于我们要求的最小的值。

       显然分析的和、过程与“二分”相似。最终的答案是未知的,我们通过猜测一个L,通过判定“是否存在一组解系X,满足segm(ai-bi*L)*xi>=0”,来不断修改L的值。也即这个L关于”解的存在性“具有”单调性“。然后问题转化为如何判定”是否存在一组解满足segm(ai-bi*L)*xi>=0“。此时在这个式子中只有xi是变量,代表取或者不取,既然如此的话即求出所有的非负的(ai-bi*L)若大于0,则取,否则不取。

    综上所述:可以通过二分答案(实数),当二分的值为mid时,计算 segm(ai-bi*L)*xi的最大值,检查最大值,若非负,segm(ai-bi*L)*xi>=0,变形可以得到segm(ai*xi)/segm(bi*xi)>=LL小于我们要求得最大值,L应该大一点,则l=mid。否则r=mid.


题目:poj 3111.K Best



        



猜你喜欢

转载自blog.csdn.net/running_acmer/article/details/80864131