书签 分享 收藏 举报 版权申诉 / 24
上传文档赚钱

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

  • 上传人(卖家):晟晟文业
  • 文档编号:5202115
  • 上传时间:2023-02-16
  • 格式:PPT
  • 页数:24
  • 大小:367.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《动态规划解背包问题课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    动态 规划 背包 问题 课件
    资源描述:

    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

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:动态规划解背包问题课件.ppt
    链接地址:https://www.163wenku.com/p-5202115.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


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

    163文库