0-1背包的贪心算法

时间:2013-03-12 17:04:18

标签: algorithm combinatorics knapsack-problem

是否有任何贪婪算法可以为非小数(0-1背包)背包问题提供最佳解决方案?我知道Knapsack的分数版本有一个可以提供最佳解决方案。

1 个答案:

答案 0 :(得分:2)

即使贪婪适用于小背包,也没有针对0-1背包的贪婪算法。

这是因为在0-1背包中,您要么拿走了全部物品,要么根本不拿走物品,这与小背包的情况不同,在这种情况下,您可以随身携带一件物品你的包溢出了。这很关键。

以下是一个示例,它证明贪婪算法适用于0-1背包。假设您有一个6码的袋子和以下物品:

项目值大小值/大小
A 5.5 5.5 4 4.38
B 4 4 3 3 1.33
C 4 4 3 3 1.33

对于0-1背包,如果您尝试贪婪,则始终会选择价值/大小最高的商品,即商品A。在获取商品A之后,您只能容纳大小为2或2的商品。少一些,所以您将无法拿起其他东西。这意味着,您仅有的一件东西是物品A,总价值为22。

另一方面,如果您没有贪婪并拿走了最有价值的物品,而是拿走了B物品,那么您将有足够的空间容纳C物品。这样一来,袋子中的总价值便会达到24,比贪婪的路线还要好。