背包問題(Knapsack problem) 可分割物品之解決方案: 下面是 "當物品可分割時之解決方案: 假設某小偷帶了一個 2000 cc 的容器,準備要到某家酒店偷酒,下列是這家酒店內,可偷的酒價格與容量,每樣酒可以使用小塑膠袋盛裝,再放入容器,假設塑膠袋不暫空間,請問小偷要如何偷到總價值最高的酒? (容器可以不裝滿)(酒可以開瓶分裝)
此題因可分裝,所以可以開瓶分割內容物,因此先計算每種酒 每 cc 最高價值,再由最高者取捨。(見下表)
最後結論: 白蘭地 (600cc) + 威士忌 (320cc) + 葡萄酒 (1080cc) = 2000cc 價值: 白蘭地 (4.6$ × 600cc) + 威士忌 (4.375$ × 320cc) + 葡萄酒 (4$ × 1080cc) = 8480$ (平均每 cc 4.2$) 由上可知,可分割物品,貪婪法就可解決,沒什麼高深學問可以討論。 |