爲什麼貪心策略不能用於解決0-1揹包問題?

新人求贊啊!(●'◡'●)

一般會使用的貪婪準則:價值vi,質量wi,每一項計算ri=vi/wi,即價值和質量之比,再按比值的降序來排序,從第一項開始裝揹包,然後是第二項,依次類推,儘可能的多放,直到裝滿揹包。

反例:這種策略並不能保證得到最優解。利用此策略試解n= 3 ,w=[40,35,35], v=[40,30,20], c=70 時的最優解。直覺上它可能是對的,得到的結果是選擇w[0]=40,剩餘30的空間容量不能裝下其他物品,總價值量爲40。然而真正可以獲得的最大價值是30+20=50,很顯然,貪心策略的選擇方法是錯誤的。

原因:事實上這一方法只是解決普通揹包問題的最優解,因爲按此方法在選擇物品i裝入揹包時,我們是可以選擇物品i的一部分的,不一定要全部裝入揹包。但是實際上0-1揹包問題的特點就是每個個體是不可拆分的,那麼此時再按貪心策略就不能證明結果是正確的,相反我們可以舉出反例證明它是錯誤的。這兩者的關係其實有點類似於概率論中古典概型和幾何概型問題的區分。

反思:對於一個方法是否正確,有時我們雖然不能直接通過理論證明它是正確的或是不正確,但如果是錯誤的,一定可以通過反例證明。理論不能證明正確的方法一般就不要使用,因爲有可能存在反例使它出現錯誤的結果。而對於動態規劃的解法,它的本質是枚舉,這個方法無疑是證明正確的。

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