在分数背包问题中,
1。准备第三个数组,每个重量数组的值,将每个项目的权重除以其对应的值
2。根据每重量的值按降序对项目进行排序
步骤1和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/