Algorithm 贪婪算法使0-1背包p失败的情况‌R‌o‌B‌L‌E‌M

Algorithm 贪婪算法使0-1背包p失败的情况‌R‌o‌B‌L‌E‌M,algorithm,knapsack-problem,Algorithm,Knapsack Problem,我在寻找这样一种情况:贪心的算法,即选择重量

我在寻找这样一种情况:贪心的算法,即选择重量<最大重量且价值/重量比最高的物品,然后首先将其放入背包中,这种算法将不起作用。有人举过例子吗?因为否则,贪婪的最坏情况将是Onlogn nlogn以降序值/重量排序,n进行排序,而动态规划方法的最坏情况将是OnW,当logn考虑容量为4的背包,以及具有以下重量和值的物品:

Item Weight Value value/Weight A 3 1.65 0.55 B 2 1 0.5 C 2 1 0.5 基于每重量值的贪婪算法首先选择项目A,然后退出,因为没有足够的容量用于任何其他项目-总值1.65。然而,最佳的解决方案是选择项目B和C,它们一起正好占据全部容量,并且组合值为2


更一般地说,贪婪算法在选择一组不占用全部可用容量的项时可能会失败。有时,一套不同的物品会占据更多的可用空间,这是一个更好的选择。

考虑一个容量为4的背包,以及具有以下重量和值的物品:

Item Weight Value value/Weight A 3 1.65 0.55 B 2 1 0.5 C 2 1 0.5 基于每重量值的贪婪算法首先选择项目A,然后退出,因为没有足够的容量用于任何其他项目-总值1.65。然而,最佳的解决方案是选择项目B和C,它们一起正好占据全部容量,并且组合值为2


更一般地说,贪婪算法在选择一组不占用全部可用容量的项时可能会失败。有时,填充更多可用容量的不同项目集是更好的选择。

我们还可以推广贪婪算法无法给出全局最优解的情况

详情如下:

权重={1,x,x+1} 目标重量=z

x是z的倍数 y小于z且大于x x和y都大于1 包括1,以便在所有情况下都有贪婪方法的解决方案
对于上述一般情况,贪婪方法在大多数情况下失败。您可以尝试一些例子。

我们还可以推广贪婪算法无法给出全局最优解的情况

详情如下:

权重={1,x,x+1} 目标重量=z

x是z的倍数 y小于z且大于x x和y都大于1 包括1,以便在所有情况下都有贪婪方法的解决方案
对于上述一般情况,贪婪方法在大多数情况下失败。你可以试一下例子。

有没有你已经考虑过的方法?有没有你已经考虑过的方法?