无重复背包与有重复背包的不同应用
Posted
技术标签:
【中文标题】无重复背包与有重复背包的不同应用【英文标题】:Different Applications for between Knapsack Without Reptition and Knapsack With Repetition 【发布时间】:2015-11-03 08:20:10 【问题描述】:我想知道是否存在仅使用一种或另一种可以解决的情况(即仅使用重复的背包或不重复的背包),或者两者是否总是可以相互还原。
为了清楚起见,给定 n 个项目 [1...n],其中项目 i 的权重为 w_i,价值为 v_i,并试图选择项目的组合以使总价值最大化,而总重量小于一些 W。
不重复的背包公式(就动态规划而言)是
K(w, j) = maxK(w-w_j, j-1) + v_j, K(w, j-1)
其中 K(w, j) 是指使用容量为 k 的背包和物品 1...j 可达到的最大值,而重复背包的公式为
K(w) = maxK(w-w_i) + v_i | w_i <= w
其中 K(w) 是容量为 w 的背包可实现的最大重量。
【问题讨论】:
【参考方案1】:您始终可以将带有重复的背包简化为不重复的背包,但反之则不行。要将一个有重复的背包减少到一个没有重复的背包,只需将每个对象添加与背包容量一样多的次数。您可以认为您永远无法在背包中放入更多实例,因此结果将与拥有无限多个副本相同。
为了证明没有重复的背包不能还原为有重复的背包,请考虑以下示例:
您有 3 个对象,分别标有价格和重量:(100$, 1kg)、(10$, 2kg) 和 (20$, 3kg)。还可以想象我们的背包可以装 3 公斤。如果我们允许重复,最好的解决方案是取第一种类型的 3 个对象,但不重复最好的解决方案是取第一个和第二个对象,这样利润会小得多。
【讨论】:
以上是关于无重复背包与有重复背包的不同应用的主要内容,如果未能解决你的问题,请参考以下文章