【发布时间】:2017-04-28 10:35:09
【问题描述】:
有两个众所周知的背包问题:
1) 给定n 项目,每个项目都有其weight 和cost。我们需要选择适合我们背包并且总成本最高的物品。使用dynamic programming可以轻松解决。
2) 碎片背包:和第一个一样,但我们不能只带整个项目,而是它的一部分。这个问题可以通过greedy algorithm轻松解决。
假设我们使用第二个问题中的greedy algorithm 来解决第一个问题。我如何证明我们将得到的解决方案比最优解决方案差不超过两倍?
【问题讨论】:
-
“更糟”是什么意思?
-
您可能有更多限制,因为一般情况(重量、成本是双精度值,而不仅仅是整数值)对 DP 不太友好
-
@Alexander Anikin:
int不是限制 - 只是 按比例放大 我的答案 -1e100体积的背包;项目A和weight = 1和cost = 1和项目B和weight = 1e100和成本1e100-1
标签: algorithm dynamic-programming greedy