【问题标题】:knapsack with variety of items有各种物品的背包
【发布时间】:2017-06-30 06:13:31
【问题描述】:

假设一个普通的背包问题:你有一个重量限制,C,物品的数量有ValueWeight(V, W)。你想最大化VWC 之下。在这个问题中,您只能选择一项。

但问题还有一个额外的转折点。你想拥有各种各样的物品。假设问题表明您希望拥有至少 5 个(或任意数量)不同的项目。如果一个解决方案的不同项目少于 5 个,则答案无效。有没有办法解决这个问题?

【问题讨论】:

    标签: algorithm knapsack-problem


    【解决方案1】:

    这只是另一种形式的约束,所以让我们看看 Weight(最多 C 权重)和 Diversity(至少 5 个不同的项目)有何不同:

    • 重量开始时有效(空袋低于 C),而多样性开始时无效(空袋不包含 5 种不同的物品)。

    首先要注意的是,在附加约束条件下,您需要一个无效/不可解的概念,因为如果没有 5 个不同的项目满足权重约束,则没有解决方案。

    一旦你定义了返回一些invalid结果的方法,它就非常接近标准的背包问题。在递归中,只需传递剩余的允许权重和当前的多样性。在递归anchor情况下,检查Diversity,如果Diversity不满足要求则返回invalid,否则返回正常背包问题中的结果。检查invalid 的递归结果并进行相应处理。

    【讨论】:

      猜你喜欢
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多