问题:我有一个可以携带一些重量的麻袋,有重量的物品数量,我想尽可能多的重量放在麻袋里携带,经过一番思考后我得出结论,我拿了每次最高权重并放入麻袋,直觉如果给定的权重至少增加2倍,它将起作用。例如2 4 8 16 32 64 .. 任何人都可以帮我证明我是对还是错?我对此有直觉,很想听听你的。
注意:考虑说以前数字的总和不会超过当前的数字。
答案 0 :(得分:2)
是的,描述greedy algorithm将适用于2的权力。
请注意,几何序列1,2,4,8,16..2^(k-1)
的部分和是2^k-1
,这就是为什么你总是应该选择最大的项目 - 它总是大于任何较小项目的总和。
在数学意义上,2的权力形式matroid
但在一般情况下会失败(例如 - 3,3,4和总和6)。您可以学习动态编程以使用整数权重来解决此问题。它与单位项目成本的knapsack problem类似。