【问题标题】: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) = max{K(w-w_j, j-1) + v_j, K(w, j-1)}

其中 K(w, j) 是指使用容量为 k 的背包和物品 1...j 可达到的最大值,而重复背包的公式为

K(w) = max{K(w-w_i) + v_i | w_i <= w}

其中 K(w) 是容量为 w 的背包可实现的最大重量。

【问题讨论】:

    标签: algorithm dynamic-programming


    【解决方案1】:

    您始终可以将带有重复的背包简化为不重复的背包,但反之则不行。要将一个有重复的背包减少到一个没有重复的背包,只需将每个对象添加与背包容量一样多的次数。您可以认为您永远无法在背包中放入更多实例,因此结果将与拥有无限多个副本相同。

    为了证明没有重复的背包不能还原为有重复的背包,请考虑以下示例:

    您有 3 个对象,分别标有价格和重量:(100$, 1kg)、(10$, 2kg) 和 (20$, 3kg)。还可以想象我们的背包可以装 3 公斤。如果我们允许重复,最好的解决方案是取第一种类型的 3 个对象,但不重复最好的解决方案是取第一个和第二个对象,这样利润会小得多。

    【讨论】:

      猜你喜欢
      • 2020-12-04
      • 2016-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多