ImageVerifierCode 换一换
格式:PPT , 页数:24 ,大小:367.50KB ,
文档编号:5202115      下载积分:22 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-5202115.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(晟晟文业)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(动态规划解背包问题课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

动态规划解背包问题课件.ppt

1、5.5动态规划求解0/1背包问题形式化描述:形式化描述:目标函数目标函数:约束条件约束条件:0/1背包问题:背包问题:KNAP(1,n,M)ji1iixpmaxni1,0w,0p,10 xMxwiiini1ii或1.问题描述问题描述背包容量背包容量M,n个物品,分别具有效益值个物品,分别具有效益值P1Pn,物物品重量品重量w1wn,从从n个物品中,选择若干物品放入个物品中,选择若干物品放入背包,物品要么整件放入背包,要么不放入。怎背包,物品要么整件放入背包,要么不放入。怎样决策可以使装入背包的物品总效益值最大?样决策可以使装入背包的物品总效益值最大?v0/1背包问题:背包问题:M=6,N=3,

2、W=(3,3,4),P=(3,3,5)v贪心法:贪心法:p3/w3 p1/w1 p2/w2v贪心解贪心解 P=5(0,0,1)v最优解是:最优解是:P=6(1,1,0)v贪心法求解0/1背包问题不一定得到最优解!v动态规划求解的问题必须满足最优化原理设设y1,y2,yn是是x1,x2,xn的的0/1值最优序列。值最优序列。若若y10,KNAP(2,n,M)是初始决策产生的状态。则是初始决策产生的状态。则y2,yn相对于相对于KNAP(2,n,M)将构成一个最优序列。否则将构成一个最优序列。否则,y1,y2,yn将不是将不是KNAP(1,n,M)的最优解的最优解 若若y11,KNAP(2,n,M

3、w1)是初始决策产生的状态。是初始决策产生的状态。则则y2,yn相对于相对于KNAP(2,n,Mw1)将构成一个最优序列。将构成一个最优序列。否则,设存在另一否则,设存在另一0/1序列序列z1,z2,zn,使得使得 且且 则序列则序列y1,z2,zn将是一个对于将是一个对于KNAP(1,n,M)具有更大具有更大效益值的序列。效益值的序列。故,最优性原理成立故,最优性原理成立niiiwMzw21niniiiiiypzp222.最优化原理证明最优化原理证明3 从前向后求解的递推关系式从前向后求解的递推关系式 记记fj(X)是是KNAP(1,j,X)的最优解,则的最优解,则fn(M)是是KNAP(1

4、,n,M)的最优解的最优解对于对于fn(M)有:有:fn(M)=maxfn-1(M),fn-1(M-wn)+pn 对于任意的对于任意的fi(X),i0,有有 fi(X)=maxfi-1(X),fi-1(X-wi)+pi第第N个物品不放入个物品不放入xn=0第第N个物品放入个物品放入xn=1 递推过程:递推过程:初始值初始值 0 X00 f0(X)=X0 0 f f1 1(X)=maxf(X)=maxf0 0(X),f(X),f0 0(X-W(X-W1 1)+P)+P1 1 求出所有可能的求出所有可能的X对应的对应的fi值值 f fi i(X(X)=maxf)=maxfi-1i-1(X),f(X

5、),fi-1i-1(X-W(X-Wi i)+P)+Pi i 最后最后求求 fn(M)=KNAP(1,n,M)4例用动态规划法求解例用动态规划法求解0/1背包问题背包问题 n=3,(w1,w2,w3)=(2,3,4),(p1,p2,p3)=(1,2,5),M=6 递推计算过程递推计算过程 X0 f0(X)=0 X0 X0 max0,+1=0 0X2 max0,0+1=1 X2 X0 0 0X2 1 2X3 max1,0+2=2 3X5 max1,1+2=3 X5 f3(M)=max3,1+5=6 fi(X)=maxfi-1(X),fi-1(X-wi)+pif1(X)=f2(X)=解向量的推导解向

6、量的推导 f3(M)=6 f2(M)6 x3=1 P=6-p3=1 M=6-w3=2 X=(1,0,1)f2(M)=1 f1(M)=1 x2=0 x1=15.0/1背包问题图解过程背包问题图解过程i:fi-1(x-wi)+pii=0:函数不存在函数不存在1 2 3 4 5 6 7012i1:f0(x-w1)+p1x1 2 3 4 5 6 7012i2:f1(x-w2)+p23x1 2 3 4 5 6 7012f1(x)x1 2 3 4 5 6 70123xf2(x)1 2 3 4 5 6 7012f0(x)=0 xfi(x)1 2 3 4 5 6 70678x123458 9i3:f2(x-w

7、3)+p31 2 3 4 5 6 70678x123458 9f3(x)10注:注:fi-1(X-wi)+pi曲线的构造:将曲线的构造:将fi-1(X)的曲线在的曲线在X轴上右移轴上右移wi个单个单位,然后上移位,然后上移pi个单位而得到;个单位而得到;fi(X)曲线的构造:由曲线的构造:由fi-1(X)和和fi-1(X-wi)+pi的曲线按的曲线按X相同时相同时取大值取大值的规则归并而成的规则归并而成6.序偶表示法序偶表示法 记记 fi(X)的序偶集合为的序偶集合为 Si=(Pj,Wj)|Wj是是fi曲线中使得曲线中使得fi产生一次阶跃的产生一次阶跃的X值,值,0jr 即即Pj=fi(Wj)

8、(P0,W0)=(0,0)图中图中有有r个阶跃值个阶跃值,对应对应r个个(Pj,Wj)序偶序偶,1jr 图中图中若若WjWj+1,则则PjPj+1,0jr 图中图中若若WjXWj+1,fi(X)=fi(Wj)图中图中若若XWr,fi(X)=fi(Wr)Si的构造的构造 记记 是是fi-1(X-wi)+pi的所有序偶的集合,则的所有序偶的集合,则 其中,其中,Si-1是是fi-1的所有序偶的集合的所有序偶的集合 Si的构造的构造:由:由Si-1和和 按照按照支配规则支配规则合并而成。合并而成。支配规则支配规则:如果:如果Si-1和和 之一有序偶之一有序偶(Pj,Wj),另一有另一有(Pk,Wk)

9、,且有且有 WjWk,Pj Pk,则序偶则序偶(Pj,Wj)将被舍弃。将被舍弃。(即取最大值规则)。(即取最大值规则)。初始序偶集合初始序偶集合S0=(0,0),(|),(11iiiiSwWpPWPSiS1iS1iS1例例2 例例1的序偶表示法的序偶表示法 S0=(0,0)=(1,2)S1=(0,0),(1,2)=(2,3),(3,5)S2=(0,0),(1,2),(2,3),(3,5)=(5,4),(6,6),(7,7)S3=(0,0),(1,2),(2,3),(5,4),(6,6),(7,7)注:序偶注:序偶(3,5)被被(5,4)“支配支配”而删除而删除11S21S31S+(2,3)+(

10、1,2)+(5,4)(w1,w2,w3)=(2,3,4),(p1,p2,p3)=(1,2,5)KNAP(1,n,M)问题的解问题的解 Sn是是KNAP(1,n,X)在在0XM各种取值下的最优解各种取值下的最优解 KNAP(1,n,M)的最优解的最优解由由Sn的最后一对的最后一对有效序偶有效序偶给出。给出。xi的推导的推导 xn:设设Sn的最后一对的最后一对有效序偶有效序偶是是(Pl,Wl),则,则 (Pl,Wl)或者是或者是Sn1的最末一对序偶,的最末一对序偶,或者是或者是(Pj+pn,Wj+wn),其中,其中 (Pj,Wj)Sn1且且Wj是是Sn1中满足中满足Wj+wnM的最大值。的最大值。

11、若若(Pl,Wl)Sn1,则,则Xn0;否则,;否则,(Plpn,Wl-wn)Sn1,Xn1 xn-1:若若xn=0,则判断,则判断(Pl,Wl)Sn2?,以确定?,以确定Xn-1的值的值若若xn=1,则依据,则依据(Plpn,Wl-wn)Sn2?,以判断?,以判断Xn-1的值的值 xn-2,x1将依次推导得出将依次推导得出 例例2的解向量推导的解向量推导 S0=(0,0)S1=(0,0),(1,2)S2=(0,0),(1,2),(2,3),(3,5)S3=(0,0),(1,2),(2,3),(5,4),(6,6)M=6,f3(6)由由S S3 3中的序偶中的序偶(6,6)给出。给出。1)(6

12、,6)S1)(6,6)S2 2 x x3 3=1=1 2)(6-p 2)(6-p3 3,6-w,6-w3 3)=(1,2)S)=(1,2)S2 2且且(1,2)S(1,2)S1 1 x x2 2=0=0 3)(1,2)S 3)(1,2)S0 0 x x1 1=1=1因此得到因此得到X(1,0,1)算法算法1 非形式的背包算法非形式的背包算法 procedure DKP(p,w,n,M)S0(0,0)for i1 to n-1 do (P1,W1)|(P1-pi,W1-wi)Si-1 and W1M Si MERGE-PURGE(Si-1,)repeat (PX,WX)Sn-1的最末一个有效序偶

13、的最末一个有效序偶 (PY,WY)(P1pn,W1+wn),其中,其中,W1是是Sn-1中使得中使得WwnM的所有序偶中取最大值的的所有序偶中取最大值的W /沿沿Sn-1,S1回溯确定回溯确定xn,xn-1,x1的取值的取值/if PXPY then xn0 /PX将是将是Sn的最末序的最末序偶偶/else xn1 /PY将是将是Sn的最末序的最末序偶偶/endif 回溯确定回溯确定xn-1,x1 end DKPiS1iS1 7.DKP的实现1)序偶集序偶集Si的存储结构的存储结构 使用两个一维数组使用两个一维数组P和和W存放所有的序偶存放所有的序偶(Pl,Wl),其中其中P存放存放Pl值,值

14、,W存放存放Wl值值 序偶集序偶集S0,S1,Sn-1顺序顺序、连续连续存放于存放于P和和W中;中;用指针用指针F(i)表示表示Si中第一个元素在数组中第一个元素在数组 (P,W)中的下标位置,中的下标位置,0in;F(n)Sn-1中最末元素位置中最末元素位置1 1 2 3 4 5 6 7 P 0 0 1 0 1 2 3 W 0 0 2 0 2 3 5 F(0)F(1)F(2)F(3)2)序偶的生成与合并序偶的生成与合并 Si的序偶将按照的序偶将按照P和和W的递增次序生成的递增次序生成 中序偶的生成将与中序偶的生成将与 和和Si-1的合并同时进行的合并同时进行 设设 生成的下一序偶是生成的下一

15、序偶是(PQ,WQ);对;对所有所有的的(PQ,WQ),根据,根据支配规则处理如下:支配规则处理如下:将将Si-1中所有中所有W值值小于小于WQ的序偶直接计入的序偶直接计入Si中;中;根据支配规则,若根据支配规则,若Si-1中有中有W值小于值小于WQ的序偶的序偶支配支配 (PQ,WQ),则,则(PQ,WQ)将被舍弃,否则将被舍弃,否则(PQ,WQ)计入计入Si中;中;并清除并清除Si-1中所有可被支配的序偶,这些序偶中所有可被支配的序偶,这些序偶有有WWQWQ且且PPQPPQ 对所有的对所有的(PQ,WQ)重复上述处理;重复上述处理;将最后将最后Si-1中剩余的序偶直接计入中剩余的序偶直接计入

16、Si中;中;所有计所有计入入Si中的新序偶依次存放到由中的新序偶依次存放到由F(i)指示的指示的Si的存放位的存放位 置上。置上。注:不需要存放注:不需要存放 的的专用空间专用空间iS1iS1iS1iS13)算法的实现算法的实现 0/1背包问题的算法描述背包问题的算法描述procedure DKNAP(p,w,n,M,m)real p(n),w(n),P(m),W(m),pp,ww,M;integer F(0:n),l,h,u,i,j,p,next F(0)1;P(1)W(1)0 /S0/lh1 /S0 的首端和末端;的首端和末端;l是是Si-1的首端,的首端,h是是Si-1的末端的末端/F(

17、1)next2/P和和W中第一个空位;中第一个空位;next指示指示P/W中可以存放中可以存放(P,W)序偶的第一个位置序偶的第一个位置/for i1 to n-1 do/生成生成Si/kl u在在lrh中使得中使得W(r)+wiM的最大的最大r /u指示由指示由Si-1生成生成 的最大有效位置的最大有效位置/for jl to u do/生成生成 ,同时进行归并,同时进行归并/(pp,ww)(P(j)+pi,W(j)+wi)/生成生成 中的下一个元素中的下一个元素/while kh and W(k)ww do/从从Si-1中取元素并归并中取元素并归并/P(next)P(k);W(next)W

18、(k)/所有所有W(k)ww 的序偶直接归并的序偶直接归并/nextnext+1;kk1 repeat iS1iS1iS1 /按照支配规则考虑按照支配规则考虑(pp,ww)及及Si-1中的序偶中的序偶/if kh and W(k)=ww then ppmax(pp,P(k)kk+1 endif if ppP(next-1)then(P(next),W(next)(pp,ww)nextnext+1 endif /清除清除Si-1中的序中的序偶偶/while kh and P(k)P(next-1)do kk+1 repeat repeat while kh do/将将Si-1中剩余的元素并入中剩

19、余的元素并入Si/(P(next),W(next)(P(k),W(k)nextnext+1;kk+1 repeat /对对Si+1置初值置初值/lh+1;hnext-1;F(i+1)next repeat CALL PARTS /递推求递推求取取Xn,Xn-1,x1/END DKNAP4.过程过程DKNAP的分析的分析1)空间复杂度空间复杂度 记记Si中的序偶数为:中的序偶数为:|Si|则有,则有,|Si|Si-1|又,又,|Si-1|所以,所以,|Si|22|Si-1|最坏情况下有(由最坏情况下有(由Si-1生成生成 和和Si时没有序偶被支时没有序偶被支配)配):故,故,DKNAP所需的空间

20、复杂度(所需的空间复杂度(P、W数组)数组)为为:(2(2n n)i1S122|1010nniiniiSi1Si1S2)时间复杂度时间复杂度 由由Si-1生成生成Si的时间为:的时间为:,0iin-1 故,故,DKNAP计算所有的计算所有的Si所需的时间为:所需的时间为:注:注:若每件物品的重量若每件物品的重量wi和效益值和效益值pi均为均为整数整数,则,则Si中每中每个序偶个序偶(P,W)的的P值和值和W值也是整数,且有值也是整数,且有 ,WMM 又,在任一又,在任一Si中的所有序偶具有互异中的所有序偶具有互异P值和值和W值,故有值,故有 且且|)S(|1-i)2(|101nniiSijjpP0|ijjipS0|1|,|min1|0MwSijji 在所有在所有w wj j和和p pj j均为均为整数整数的情况下,的情况下,DKNAPDKNAP的时间和空的时间和空间复杂度将为:间复杂度将为:当当N N很大时,算法的有效性不理想,但是在实际求解效很大时,算法的有效性不理想,但是在实际求解效果还是可以的,因为多数情况下果还是可以的,因为多数情况下P P、W W都是整数,并且都是整数,并且M M远小于远小于2 2n n,而且支配规则有效删除而且支配规则有效删除S Si i中的序偶。中的序偶。),|,2(min1nMpnniin

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|