逆背包问题
我正在尝试解决下一个任务: 给定一组物品,每个物品都有一个重量和一个价值,确定给定总价值的背包最小承载能力。
例如 输入:
item1: w = 3.4, v = 3
item2: w = 0.4, v = 1
total value = 7
输出:
我们应该采取:
item1 x0, item2 x7
对于使用动态规划的通用算法,我应该使用什么
minimal capacity = 0 * 3.4 + 0.4 * 7 = 2.8
total value = 7
递归公式?谁能举一个用微小的输入数据解决这个问题的例子吗?
PS 抱歉我的英语。
I'm trying to solve next task:
Given a set of items, each with a weight and a value, determine the knapsack minimal carrying capacity of the given total value.
For Example
Input:
item1: w = 3.4, v = 3
item2: w = 0.4, v = 1
total value = 7
Output:
We should take:
item1 x0, item2 x7
And
minimal capacity = 0 * 3.4 + 0.4 * 7 = 2.8
total value = 7
What recursive formulas should I use for general algorithm using dynamic programming? Can anyone show an example of solving this with tiny input data?
P.S. Sorry for my english.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
传统的(最大化)背包算法应该可以正常工作。只需将所有出现的
max
替换为min
,您就应该差不多了。另一种看待这一问题的方法是使用负成本,因此最小化变成最大化(不过,您需要特别注意空的情况)。The traditional (maximizing) knapsack algorithm should work fine. Just swap all the occurrences of
max
formin
and you should be almost there. Another way to see this is using negative costs so minimizing becomes maximizing (you will need to pay special attention to the empty case though).