所以,我有一个背包,可放入背包的一些物品有一个限制,而物品的重量也有一个限制。
因此给定项目限制5和权重100: 我们会找到最适合100重量的5件物品(可以重复5倍相同的物品)。
在动态编程中,我已经解决了无界和有界(每个项目都有限制,但使用的项目总数没有限制)。但我对如何采用这种新方法感到有些困惑。这是一个多维背包问题,如体积和重量?但相反,我们想要使用的物品和重量?或者它是0-1背包改变?
如果有人能够将其分解为更小的逻辑步骤,或者指向一些可靠的代码来阅读(我的谷歌正在努力寻找解决方案),那将非常感激。
感谢您的时间!
答案 0 :(得分:1)
这是多重约束的背包问题。您的新约束是项目数量的总和小于与其权重无关的某个数字。
这里有一些好方法:http://www2.math.uni-wuppertal.de/~klamroth/publications/klwidp00.pdf
您还应该尝试使用新约束来调整常规背包问题的递归关系,并查看您获得的位置。
答案 1 :(得分:1)
这可以表示为乘法约束背包问题(也称为多维背包问题)如下。
目标函数和第一维保持与当前公式相同(即权重之和)。
然后可以使用第二个维度来约束所选项目的数量。使用Wikipedia notation:
以下是一些参考资料: