算法設計與分析心得(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}

證畢

參考《近似算法設計與分析》 堵丁柱等

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