algorithm - 贪心算法失败 0-1 背包 p‌r‌o‌b‌l‌e‌m 的情况

标签 algorithm knapsack-problem

我正在寻找一种情况,其中贪婪算法会选择重量小于最大重量的最高值(value)/重量比的元素并将其首先放入背包中。有人有例子吗?因为否则,贪婪的最坏情况将是 O(nlogn)(nlogn 按降序值/权重排序,n 遍历它)而动态编程方式的最坏情况将是 O(nW),当 logn <

最佳答案

考虑一个容量为 4 的背包,以及具有以下重量和值(value)的元素:

Item  Weight  Value  value/Weight
 A      3      1.65     0.55
 B      2      1        0.5
 C      2      1        0.5

基于每重量值(value)的贪婪算法会首先选择项目 A,然后退出,因为没有足够的容量留给任何其他项目——总值(value) 1.65。然而,最佳解决方案是选择项目 B 和 C,它们一起恰好占据了全部容量并且组合值为 2。

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

关于algorithm - 贪心算法失败 0-1 背包 p‌r‌o‌b‌l‌e‌m 的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29267553/

相关文章:

c# - 复杂的递归函数 - 在房间和人员之间分配星星

algorithm - 遍历二进制序列,其中一些位固定为 1

algorithm - 通过自上而下的方法在 KnapSack 中超过时间限制

algorithm - 0/1 背包与相关项目重量?

algorithm - 修剪杂散节点的大图

algorithm - 关于如何进行面向对象分析和算法设计的书籍/教程?

algorithm - 背包或类似元素,没有值(value),但对哪些元素可以分配到哪里有限制?

algorithm - 0-1 有额外限制的背包(有色元素)?

r - knapsack() 向量长度问题

无法找出为什么我的这部分代码在 C 中崩溃