关于背包问题、0-1背包问题,对于是否适合贪心算法的证明。

liutingwj 2008-05-05 03:04:28
关于背包问题、0-1背包问题,对于是否适合贪心算法的证明。
...全文
3144 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
vsign88 2010-10-13
  • 打赏
  • 举报
回复
要把0-1背包问题为什么不满足谈心选择性质证明出来
  • 打赏
  • 举报
回复
首先,从证明上来说,存在反例已经足以证明命题为假。

回到背包问题上。这两个背包问题都具有最优子结构,但子结构的模型并不相同,一个向量的取值只能是0-1,另一个则可以取分数,正是这一点区别导致0-1背包不具备贪心选择性质。
在对部分背包贪心性质的证明(这个证明的表述也有问题)中,可以取某物品的一部分来代替另一物品的一部分。而在0-1背包问题中,这是根本不可行的,一件物品要么全拿(取1)、要么舍弃(取0),由此可能会导致背包溢出。这根本是两回事,当然不能套用一个的问题的证明过程去解释另一个。
liutingwj 2008-05-06
  • 打赏
  • 举报
回复
最优子结构性质:
0-1背包问题:
    给定n种物品和一个背包。物品i的重量是Wi,其价值为Vi,背包的容量为C。应如何选择装入背包的物品,使得装入背包中物品的总价值最大?

在选择装入背包的物品时,对每种物品i只有2种选择,即装入背包或不装入背包。不能将物品i装入背包多次,也不能只装入部分的物品i。
此问题可以描述为:给定C>0,wi>0,vi>0,1≤i≤n,要求找出一个n元0-1向量(x1,x2,…xn),xi ∈{0,1}, 1<=i<=n,使得∑wi xi≤C,而且∑vi xi 达到最大。
背包问题:
与0-1背包问题类似,所不同的是在选择物品i装入背包时,可以选择物品i的一部分,而不一定要全部装入背包,1≤i≤n。此问题可以描述为:给定C>0, wi>0,vi>0, 1≤i≤n,要求找出一个n元0-1向量(x1,x2,…xn),xi 0≤xi ≤1, 1≤i≤n,使得∑xi ≤C,而且∑vi xi达到最大。
贪心选择性质:
背包问题:
若vi/wi ≥vi+1/wi+1 ,1≤i≤n-1,则存在背包问题的一个最优解(x1,x2,…xn),使得x1 =min {W/ w1 ,1}。
分三种情况证明背包问题的这个贪心选择性质
(1)∑wi ≤W ,此时唯一的最优解为(x1,x2,…xn)。
(2)∑wi >W ,且vi/wi =v1/w1 ,2≤i≤n ,则它的每一个解跟最优解相同
(3)∑wi >W ,S=(x1,x2,…xn),S包含于{,x2,…xn}使得x1∈S。
事实上,设S包含于{,x2,…xn } 是背包问题的一个最优解,且x1不属于S。对任意i∈S,取Si =S∪{ x1}-{ xi },则Si 满足贪心选择性质的最优解。
这两类问题都具有最优子结构性质,极为相似,但背包问题可以用贪心算法求解,而0-1背包问题却不能用贪心算法求解。
liutingwj 2008-05-06
  • 打赏
  • 举报
回复
要把0-1背包问题为什么不满足谈心选择性质证明出来
jieao111 2008-05-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liutingwj 的回复:]
不是举个反例是必须把它的贪心选择性质和最优子结构性质证明出来
[/Quote]
这个书上有啊。。
liutingwj 2008-05-06
  • 打赏
  • 举报
回复
不是举个反例是必须把它的贪心选择性质和最优子结构性质证明出来
  • 打赏
  • 举报
回复
是部分背包问题和0-1背包问题的比较吧?

部分背包问题适合贪心算法。设物品的价值为V[i]、重量为W[i],那么按照性价比V[i]/W[i]由高到低排序,从高的开始依次拿起,直到填满整个背包为止。证明也很简单:如果把其中任意单位重量的物品换成低性价比的,那么背包承载的整个物品价值就会下降。

0-1背包问题不适合贪心算法,举个反例就可以了。
V[1]=80, W[1]=60
V[2]=50, W[2]=50
V[3]=50, W[3]=50
背包上限重量是100
性价比最高的是物品1,但拿2和3才是最佳方案

33,006

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧