0-1分数规划

是什么

0-1分数规划解决这样一类问题。给定一些元素,可以进行选取,选取有好处(b)和花费(c),最后求好处的和与花费的和的比例最大或最小。
用r来表示比例, x[i] x [ i ] 来表示对应元素是否选择,取值为0,即为选择,取值为1即为不选择,那么问题就变成了:
r=b[i]x[i]c[i]x[i] r = ∑ b [ i ] ∗ x [ i ] ∑ c [ i ] ∗ x [ i ]

怎么做

对原式子做一个变形。
rc[i]x[i]=b[i]x[i] r ∗ ∑ c [ i ] ∗ x [ i ] = ∑ b [ i ] ∗ x [ i ]
0=b[i]x[i]rc[i]x[i] 0 = ∑ b [ i ] ∗ x [ i ] − r ∗ ∑ c [ i ] ∗ x [ i ]
在这里把 r r 再看做一个未知数,令其为r,将其改写为函数 z(r) z ( r ′ ) ,转换为另一个问题
z(r)=b[i]x[i]rc[i]x[i] z ( r ′ ) = ∑ b [ i ] ∗ x [ i ] − r ∗ ∑ c [ i ] ∗ x [ i ]
由于 c[i]>0x[i]0,1 c [ i ] > 0 、 x [ i ] ∈ 0 , 1 ,那么这个函数具有的性质也显而易见。

  1. r=r r ′ = r 时, z(r)=0 z ( r ′ ) = 0
  2. r<r r ′ < r 时, z(r)>0 z ( r ′ ) > 0
  3. r>r r ′ > r 时, z(r)<0 z ( r ′ ) < 0

这个函数是严格单调递减的。 有了单调的性质,就可以二分找答案了。
不过需要提醒注意的是,我们最后寻找的目标是 r r <script type="math/tex" id="MathJax-Element-1333">r</script>。

练习

POJ2976 Dropping tests——普通的01分数规划
POJ2728 Desert King——最优比率生成树
POJ3621Sightseeing Cows——最优比率环
POJ3155——Hard Life最大密度子图
ZOJ2676——Network Wars
POJ3266——CowSchool0/1分数规划+数据结构

参考

https://blog.csdn.net/hhaile/article/details/8883652
http://www.cnblogs.com/shenben/p/6379356.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值