【问题标题】:Seeking maximum capacity utilization for 0-1 Multidimensional Knapsack寻求0-1多维背包的最大容量利用率
【发布时间】:2016-07-29 01:21:49
【问题描述】:

0-1多维背包的典型目标函数是最大化背包中所有物品的价值。 Stackexchange 链接中提供了一个很好的算法:0-1 Multidimensional Knapsack

但是,如果我的目标函数是在背包中装尽可能多的物品怎么办?所有的作品都有相同的价值。 Stackexchange 帖子 (Knapsack problem with all profits equal to 1) 声称可以通过贪心算法解决具有相等值的一维背包。真的吗?我认为 01 背包问题是 NP 难题,因此贪心算法可能无法给出最佳解决方案。

所以我的问题分为两部分? 1)在这种情况下,贪心算法可以给出最优解吗? 01 等值背包 2)如何实现多维贪心算法? vi/wi 是除以向量的值...

【问题讨论】:

    标签: java knapsack-problem


    【解决方案1】:

    1.) 背包问题是一个 NP-Hard 问题。所以简而言之,不,您无法使用贪心算法最佳地解决它。相反,存在可以让您非常接近的启发式方法。

    2.) 在等利润背包的情况下,这可能会退化为简单的装箱问题。在这种情况下,如果所有选择在利润方面都是平等的,那么您可能需要关注问题的不同方面,这可能类似于“规模”。如果是这种情况,您将希望每次都选择最小的项目 - 在这种情况下,贪心算法可能就足够了,只需查看您的选择并选择最小的元素即可实现。

    应该注意的是,如果线性搜索被重复很多次,它会给您的程序增加令人讨厌的开销。相反,您可能需要考虑使用 MIN-Heap,因为这将以较低的计算成本提供最小值。

    【讨论】:

      猜你喜欢
      • 2013-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-19
      相关资源
      最近更新 更多