01背包问题的贪婪算法

本文探讨了01背包问题的三种贪婪策略:价值最大、重量最小和价值密度最大,但这些策略并不保证得到最优解。01背包问题是NP-复杂问题,通过k阶优化方法(k-optimal)的贪婪启发式算法能在大多数情况下接近最优解。文章还提到了动态规划、分支限界法和遗传算法作为解决背包问题的其他方法。
摘要由CSDN通过智能技术生成

  0/1背包问题有好几种贪婪策略,每个贪婪策略都采用多步过程来完成背包的装入,在每一步过程中利用贪婪准则选择一个物品装入背包。

  1、从剩余的物品中,选出可以装入背包的价值最大的物品。利用这种规则,价值最大的物品首先被装入(假设有足够容量),然后是下一个价值最大的物品,如此继续下去。这种策略不能保证得到最优解。例如,n=2, weight=[100, 10, 10], prize=[20, 15, 15], count=105。当利用价值贪婪准则时,获得的解为x= [1, 0, 0],这种方案的总价值为20。而最优解为[0, 1, 1],其总价值为30。

  2、重量贪婪准则:从剩下的物品中选择可装入背包的重量最小的物品。虽然这种规则对于前面的例子能产生最优解,但在一般情况下则不一定能得到最优解。考虑n=2 ,w=[10,20], p=[5,100], c=25。当利用重量贪婪策略时,获得的解为x =[1,0], 比最优解[0, 1]要差。

  3、还可以利用另一方案,价值密度pi/wi 贪婪算法,这种选择准则为:从剩余物品中选择可装入包的pi/wi值最大的物品。这种策略也不能保证得到最优解,利用此策略试解n=3 ,w=[20,15,15], p=[40,25,25], c=30 时的最优解。

  我们不必因所考察的几个贪婪算法都不能保证得到最优解而沮丧,0/1背包问题是一个NP-复杂问题,对于这类问题,也许根本就不可能找到具有多项式时间的算法。虽然按pi/wi非递(增)减的次序装入物品不能保证得到最优解,但它是一个直觉上近似的

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值