Fractional Knapsack +“产生的解决方案小于0/1背包的最佳解决方案的1%。”

时间:2012-11-26 04:49:39

标签: algorithm knapsack-problem

我正在审查即将进行的测试,并想知道是否有人可以重述问题的b部分。这是审查表中的文字传出,但我不确定b的具体要求是什么。我猜的更加明确是什么意思“产生的解决方案小于0/1背包问题的最佳解决方案的1%。”

a)解决背包问题的以下实例,即给出所选择的每个对象的分数和最佳背包的值。显示步骤:

背包的容量是C = 100

**这里列出了对象,它们的值和权重。在表**

b)[10pts]给出一个带有两个对象的例子,这两个对象显示了用于分数背包问题的相同贪婪方法(略微修改以省略贪婪方法选择的最后一个对象,如果它不适合)产生一个解决方案小于0/1背包问题的最佳解决方案的1%。

3 个答案:

答案 0 :(得分:1)

通常贪婪的启发式对于背包问题非常有效。如果您只是随机提出一个小问题实例,那么应用贪婪启发式可能会产生一个好的,甚至可能是最优的解决方案。 (解决方案的质量通过获取其包含的对象的总值来计算,并计算其与最佳解决方案中包含的对象总值的比率。)

这个问题要求你提出一个令人讨厌的问题实例(即一个具有值和权重的对象列表),这会混淆贪婪的启发式,以至于应用它会产生一个仅包含1%最佳值的背包解决方案将包含。

答案 1 :(得分:0)

我理解b)部分要求表明贪婪算法不是最优的,并且还可以产生小于最佳值的1%。对于小实例已经是这种情况。请考虑以下实例:

Item 1: profit 2, weight 1 (efficiency is 2/1 = 200/100 = 2)
Item 2: profit 400, weight 400 (efficiency is 400/400 = 1)

Knapsack capacity: 400

请注意,项目以非递增的效率顺序给出,这是贪婪算法处理它们的顺序。现在贪婪算法会选择第1项,因为它适合,但现在无法选择第2项。这产生了2的利润。然而,项目2的选择产生400的利润。总的来说,贪心算法产生2的利润,其中最优值至少为400,因此贪婪算法产生不到1%的利润。最佳利润。

答案 2 :(得分:-1)

背包问题属于NP。我认为第二部分要求基于贪婪策略的多项式时间近似算法(其中最优解具有指数时间复杂度),这给出了一个与最优解仅相差1%的解决方案。

例如,如果最佳答案为100,则近似算法应给出99或101的结果。