算法设计与分析心得(1):为什么0-1背包问题最优解与贪心算法所得解的近似比不超过二

贪心解的选择策略

我们定义贪心解的选择策略如下:
首先,不失一般性,我们忽略掉所有单个体积大于背包容积的物品,这些物品是一定不会被选中的。
再将所有物品按照单位价值由大到小排序,分别为 i t e m item item1, i t e m item item2 i t e m item itemn, i t e m item itemn+1
不失一般性,我们假定我们取完前n个之后,恰好装不下第n+1个了,那么我们的贪心法策略如下:
m a x max max{ v v vn+1 , v v v1+ v v v2+…+ v v vn}作为我们的所得价值,其相对应的物品作为我们的放入方法。即,我们将第n+1个物品的价值和前n个物品的价值总和进行一次比较,取大的情况作为我们的策略。

为什么近似比不超过二

证明如下:
首先我们设最优解的总价值为 v v vmax,首先一定有 v v v1+ v v v2+…+ v v vn ≤ \leq v v vmax,这个是显然的。
另外,还会有 v v vmax ≤ \leq v v v1+ v v v2+…+ v v vn+1,我们可以想象,因为我们已经按照贪心法使得背包内有物品的部分的密度趋近于最大了,我们可以再极端一点,违背0-1原则,将第n+1个物品也塞进来一部分,使得背包正好被填满。那么这时候背包的密度是不可能有其他情况比他大的,也就是说价值是要大于 v v vmax的。那么若是完全把第n+1个物品算上,肯定也只能更大,这一来二去两次放缩,这个不等式显然成立了。

然后就是神来之笔,看好:
v v vmax ≤ \leq v 1   + v 2    + . . + v n    +    v n + 1 1 \frac {v1~+v2~~+..+vn~~+ ~~vn+1}{1} 1v1 +v2  +..+vn  +  vn+1

v 1   + v 2    + . . + v n    +    v n + 1 2 \frac {v1~+v2~~+..+vn~~+ ~~vn+1} {2} 2v1 +v2  +..+vn  +  vn+1 ≤ \leq m a x max max{ v v vn+1 , v v v1+ v v v2+…+ v v vn}

所以:
v   m a x   2 \frac {v~max~}{2} 2v max  ≤ \leq m a x max max{ v v vn+1 , v v v1+ v v v2+…+ v v vn}

证毕

参考《近似算法设计与分析》 堵丁柱等

你可能感兴趣的:(算法分析与设计,笔记)