如何优化 0/1 背包的解决方案?

Posted

技术标签:

【中文标题】如何优化 0/1 背包的解决方案?【英文标题】:How to optimize solution to the 0/1 knapsack? 【发布时间】:2015-06-16 01:14:23 【问题描述】:

标准的背包问题解决方案是O(nW),我们将一次增加权重 +1 以获得解决方案。

有没有一种不需要每次增加重量+1的背包问题的方法。

例如我能想到的一种方法是将所有数字除以其公分母

Capacity = 100 weights = [5, 10, 20] -> Capacity = 20 weights = [1, 2, 4]

【问题讨论】:

【参考方案1】:

仅在自下而上的动态规划实现中才需要以 1 的步长递增权重。如果你自顶向下实现,你可以只做一个递归调用,同时从剩余容量中减去当前项的权重。

【讨论】:

以上是关于如何优化 0/1 背包的解决方案?的主要内容,如果未能解决你的问题,请参考以下文章

数学建模MATLAB应用实战系列(136)-优化算法:0-1背包算法(附MATLAB代码)

01二维背包+bitset优化——hdu5890

改进的背包算法

我如何解决 0-1 背包算法的这些变体?

背包问题

如何获取0-1背包中的选定物品列表?