分数背包:为什么价值/重量?

时间:2018-01-21 11:28:36

标签: algorithm greedy

在分数背包问题中,

1。准备第三个数组,每个重量数组的值,将每个项目的权重除以其对应的值

2。根据每重量的值按降序对项目进行排序

步骤1和2背后的原因是什么?

2 个答案:

答案 0 :(得分:0)

Because it is more profitable to fill all possible volume with substance having the highest value/weight ratio. So use up all given quantity of item with the best value/weight ratio, then with the second and so on.

Just think - if you believe that it is possible to fill some part with less valuable item (while more valuable one is available) - change it to more valuable and you'll have got some additional money

答案 1 :(得分:0)

在分数背包中,您可以在背包中添加部分/分数(回答),以最大化包中物品的总价值。由于目标是最大化背包中的总价值,我们应该放置物品,使得放置的重量值很高,并且尽可能减少空间,以便可以将更多的物品添加到背包中。因此,需要计算每个值的权重。背包的容量不是无限制的,因此我们需要每重量的价值来最佳地利用空间。

例如,如果我们有权重= {10,20,30,}和价值{60,100,120},并且行李可以在最大值时保持50,那么如果不分割该项目,那么我们只能拥有20项中的1项1 of 30。所以总价值将是220。

但是按照分数背包,我们按重量划分值并获得数组{6,5,4}。对它排序(已经排序)。现在项目的顺序变为i1,i2,i3

Take all 10 kg of i1=6*10 Take all 20kg of i2= 5*20 Take the remaining 20kg from i3= 4*((2/3)*30)

总值= 60 + 100 + 80 = 240

因此,我们需要每重量的价值。

请参阅链接:https://www.geeksforgeeks.org/fractional-knapsack-problem/