分数背包贪心选择性的证明

最近在复习算法导论时遇到了这个问题,个人感觉自己在证明方面有些欠缺,在网上找到了一些比较好的证明。

贪心选择性质:问题的整体最优解可以由一系列子问题的最优选择,既贪心选择得到。


问题描述:假设有n个物体C1,n分别标记为:1, 2, …, n。其价值分别为:V1, V2,…, Vn,重量分别为:W1, W2, …, Wn。背包的容量为W。则部分背包问题可以描述为:存

在一个n元向量(X1, X2, …, Xn),在 的条件(记为条件1)下,背包的总价值 最大(其中0≤Xi≤1)。假设C1,n的标号是

按照单位价值Vi/Wi从大到小排好序的,即:V1/W>  V2/W2  >  …  >  Vn/Wn。如果不是,则对C1,n重新编号即可。

于是部分背包问题的贪心选择性质可以描述为:每次从Ci,j中选择物品,都是优先考虑选择物品i,且在满足条件1的情况下,X越接近1越好。下面用数学归纳法证明这一贪心选择性质:

记Ai,j为从物品Ci,j中选择装进背包的最优解,则原问题为求A1,n。再记k为第k次从C中选物品进背包。则:

Ⅰ)当k=1时,满足贪心选择性质,即第一次选物品p进背包,且p=1。下面用反证法证明:

若p≠1,则p≥2。但在此情况下不能保证A1,n最优。试考虑W1=W的情况下,另外一个解A1,n={1}的价值V更大(因为V1/W1 > V2/W2 > …> Vn/Wn)。既A1,n不是最优解,产生矛盾。所以p=1。

Ⅱ)在满足条件1的情况下,假设k≤z时,满足贪心选择性质。既前z(包括z)次从Cz,n中选择物品,都是优先考虑选择物品z,且在满足条件1的情况下,X越接近1越好。

Ⅲ)在满足条件1的情况下,当k=z+1时,证明也满足贪心选择性质,既第k=z+1次选物品(z+1)。

先证明A1,n的子问题Az+1,n也具有最优性质:如果存在Cz+1,n中选择物品的子问题的解Az+1,n的总价值比Az+1,n的总价值更大,那么Az+1,n与A1,z合并后的原问题的解A1,n的总价值比A1,n的总价值更大。这与A1,n是最优解矛盾。所以Az+1,n也具有最优性质。

于是第k=z+1次选择物品等价于子问题Az+1,n的第一次选择物品,又因为在Ⅱ)假设成立的情况下,C1,n的前z个物品已经被选了,所以转换成Az+1,n从Cz+1,n中选择第一个物品。根据Ⅰ),显然优先选择物品(z+1)。所以结论得证。


∴ 综合Ⅰ)Ⅱ)Ⅲ),得证部分背包问题具有最优选择性质。

原文地址:https://blog.csdn.net/always_ming/article/details/40679761


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值