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

贪心解的选择策略

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

为什么近似比不超过二

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

然后就是神来之笔,看好:
vvmax\leq v1 +v2  +..+vn  +  vn+11\frac {v1~+v2~~+..+vn~~+ ~~vn+1}{1}

v1 +v2  +..+vn  +  vn+12\frac {v1~+v2~~+..+vn~~+ ~~vn+1} {2}\leqmaxmax{vvn+1 , vv1+vv2+…+vvn}

所以:
v max 2\frac {v~max~}{2}\leqmaxmax{vvn+1 , vv1+vv2+…+vvn}

证毕

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章