社区
数据结构与算法
帖子详情
关于背包问题、0-1背包问题,对于是否适合贪心算法的证明。
liutingwj
2008-05-05 03:04:28
关于背包问题、0-1背包问题,对于是否适合贪心算法的证明。
...全文
3144
7
打赏
收藏
关于背包问题、0-1背包问题,对于是否适合贪心算法的证明。
关于背包问题、0-1背包问题,对于是否适合贪心算法的证明。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
vsign88
2010-10-13
打赏
举报
回复
要把0-1背包问题为什么不满足谈心选择性质证明出来
大王派我去巡山
2008-05-06
打赏
举报
回复
首先,从证明上来说,存在反例已经足以证明命题为假。
回到背包问题上。这两个背包问题都具有最优子结构,但子结构的模型并不相同,一个向量的取值只能是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
打赏
举报
回复
不是举个反例是必须把它的贪心选择性质和最优子结构性质证明出来
大王派我去巡山
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才是最佳方案
0-1
背包问题
(
贪心算法
)C语言源程序
0-1
背包问题
(
贪心算法
)C语言源程序. 物品名称、物品效益、物品重量、物品的效益重量比等定义了物品的结构体。
贪心算法
背包问题
(非0-1)
这是一个很好的解决
贪心算法
背包问题
非0-1
背包问题
的算法。
贪心算法
解决0-1
背包问题
简单的基于价值/质量比策略的
贪心算法
,解决0-1
背包问题
。
0-1
背包问题
贪心算法
算法课程的0-1
背包问题
贪心算法
代码,含截图,经测试可用
0-1
背包问题
贪心算法
(C++实现)
这是一个应用
贪心算法
解决
背包问题
的完整的程序,供大家参考!
数据结构与算法
33,006
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章