价值密度优先贪心策略对分数背包问题的正确性证明(整理)

     思路:将贪心法的解与任意一个最优解进行比较来证明

      证明:用《算法导论》的话来说,分数背包问题中商品就好比“金砂”. 设预处理:对于这些不同品质金砂,若有某些不同金砂的价值密度相同(vm = vl, m != l),不妨将这几种金砂看作是同种金砂(或者说混合在一起成为一种商品)

      (一)设背包容量为c,价值密度优先贪心策略算法为pdf, 经预处理后商品总共有n类,每样商品的全部重量为Wrk(1<=k<=n),S(i)={Wi1,…,Win}(0<=Wik<=Wrk)是一个全局最优解;∑Wik=c.

       设S={W1,W2,...,Wn}是pdf所获得的解,且不是最优解,其中v1>v2>...>vn(*),∑Wk=c. 根据预处理可知,(*)式不会取到等号如果所有商品全部装入背包,显然这个解就是最优解;如果不是所有商品装入背包,则设j是使Wk!=1的最小下标,由算法可知,对于1<=k<j,Wk=Wrk; 对于j<k<=n, Wk =0;对于j, 有0<=Wk<Wrk. 设m是使得Wik != Wk的最小下标,由上面的假设,可以推得Wim <Wm ,这可从三种可能发生的情况,即m<j,m=j或m>j分别得到证明:

       若m<j,则Wm=Wrm,因Wim != Wm,且0<=Wik<=Wrk,从而Wim<Wm  。

       若m=j,(1)先证在这种情况下Wm!=0. 假设Wm=0,此时有Wk=Wrk=Wik(1<=k<m), 否则,与m是使得Wik != Wk的最小下标矛盾;这样就有Wim>Wm=0, 然而,此时∑Wik>∑Wk=c, 与S(i)是可行解矛盾. 故当Wm>0;(2)对于1<=k<m,有Wk= Wik = Wrk ,若Wim >Wm ,则∑Wik>∑Wk=c ,与S(i)是可行解矛盾. 若Wim=Wm ,与Wim != Wm矛盾,故Wim<Wm .

       若m>j,则Wim>Wm=0, 所以∑Wik>∑Wk=c,与S(i)是可行解矛盾.综上,Wim < Wm.

       (二)现在,假定把Wim增加到Wm,那么必须从{Wim+1,…Win}中减去同样多的量,使得所用的总容量仍是c,这将导致一个新的解Z={z1,…,zn},其中zk=Wk (1<=k<=m). 

        根据假设,重量改变量 = zm - Wim - ∑(Wik-zk)(m<k<=n) = 0.

       Z总价值量=∑zkvk(1<=k<=n) = ∑Wikvk(1<=k<=n) + 价值改变量

                                                    = ∑Wikvk(1<=k<=n) + (zm - Wim)vm - ∑(Wik-zk)vk(m<k<=n)

                                            > ∑Wikvk(1<=k<=n) + (zm - Wim)vm - vm∑(Wik-zk)(m<k<=n) (*)

                                                    = ∑Wikvk(1<=k<=n) + vm(zm - Wim - ∑(Wik-zk)(m<k<=n))

                                                    = ∑Wikvk(1<=k<=n)

        从而得出了∑zkvk(1<=k<=n)>∑Wikvk(1<=k<=n), 这与S(i)是一个全局最优解相矛盾.

        综上所述,黑体字假设不成立,从而得出了价值密度优先贪心策略用于分数背包问题获得的解是最优解的结论.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值