多背包问题近似解法及其近似比

多背包问题:给定n个物品,其中物品i的价格是vi,重量是wi,有m个背包,背包j最大能装物品重量为Bj,求这些背包能够装下物品的最高价格,其中每个物品要么完全放入背包要么不放入。

(1),给出一个求解该问题的近似算法。

(2),设所有Bj都相等,分析你给出的算法的近似比。

 这个问题到底有没有非近似的方法?这个是不是NP问题呢?虽然有些疑惑,但还是找出一个近似算法吧!

(1),这里用贪心算法,依次从剩余的物品中用贪心算法使得第i个背包中的物品价值达到最大,i从1到m。

(2),这里我们可以证明这个近似算法具有常近似比。

      设最优解的总价值为C*,我们要证明C*/C为常数, C为这个近似解的最大价值。

  如果有背包没有物品的话,C*=C。

  这里我们假设每个背包里都有物品。

    假设物品可以部分放入背包,那么我们可以用一个贪心算法解决上面的优化问题,得到的解的最大价值为C', 每个背包j的容量为Wj'=B,价值为Vj',那么C'>=C*。

  方案(1)中,假设每个背包j的容量为Wj,所含物品价值为Vj,那么Vj/Wj >= Vj'/Wj'。在方案(1)基础上,我们用单位价值为Vj/Wj的物品把背包j填满,最后物品的总价值为C'', 每个背包j的所含物品的重量为Wj''=B, Vj'', 那么Vj''/Wj'' = Vj/Wj >= Vj'/Wj', 所以C'' >= C'。又有C'' <= kC, 其中,k = B/min{wi}。

  所以C* <= C' <= C'' <= kC, 

     => C*/C <=k(常数)。

  得证。

 

这里有一个更优的解法,近似比为2.

http://wenku.baidu.com/link?url=9PZvMIQN6c_yjckpmLdA98Sm25kE-f61hKxjFlmOdDleDO6Nz-GNqBWCV2F70lOEeccINnpWbTOAywG_xd3r6phFCwCCYRgnsFuTTC6hXHK

转载于:https://www.cnblogs.com/jiaorenyu/p/multibags.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值