第六讲 动态规划背包问题.ppt
《第六讲 动态规划背包问题.ppt》由会员分享,可在线阅读,更多相关《第六讲 动态规划背包问题.ppt(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、背包类动态规划问题背包类动态规划问题1经典的背包问题(经典的背包问题(01背包)背包)q有有N件物品件物品;q第第i件物品件物品Wi公斤公斤;q第第i件物品价值件物品价值Ci元元;q现有一辆载重现有一辆载重M公斤的卡车公斤的卡车;q问选取装载哪些物品,使得卡车运送的总价值问选取装载哪些物品,使得卡车运送的总价值最大?最大?2动态规划q可以按每个物品进行规划,同样每种物品有选和不选两种可以按每个物品进行规划,同样每种物品有选和不选两种选择选择q设设F(i,j)表示前表示前i件物品载重为件物品载重为j的最大效益,则有的最大效益,则有q1=i=N,0=j=wi then /背包容量够大 fi,j:=
2、max(fi-1,j-wi+ci,fi-1,j)else /背包容量不足 fi,j:=fi-1,j;end;4满背包问题(满背包问题(01背包)背包)q有有N件物品件物品;q第第i件物品件物品Wi公斤公斤;q第第i件物品价值件物品价值Ci元元;q现有一辆载重现有一辆载重M公斤的卡车公斤的卡车;q问选取装载哪些物品,使得卡车开车正好装满问选取装载哪些物品,使得卡车开车正好装满时,运送的总价值最大?时,运送的总价值最大?若无法装满卡车,则输出无解。若无法装满卡车,则输出无解。5动态规划q设设F(i,j)表示前表示前i件物品背包为件物品背包为j的最大效益,则有的最大效益,则有q1=i=N,0=j=N
3、q初值:初值:F(0,j)=0,F(1,j)=-qF(N,M)即答案即答案q显然时间复杂度为显然时间复杂度为O(NM)6带条件的背包问题(带条件的背包问题(1)q有有N件物品件物品;q第第i件物品件物品Wi公斤公斤;q第第i件物品价值件物品价值Ci元元;q第第i件物品可能带件物品可能带02个附件;个附件;q若装载附件,必须装载主件,反之没有约束;若装载附件,必须装载主件,反之没有约束;q现有一辆载重现有一辆载重M公斤的卡车公斤的卡车;q问选取装载哪些物品,使得卡车运送的总价值最大?问选取装载哪些物品,使得卡车运送的总价值最大?7分析q假设只有主件的情况假设只有主件的情况,显然与经典背包问题完全
4、相同!,显然与经典背包问题完全相同!q现在每个物品有附件,我们可以分成现在每个物品有附件,我们可以分成4种方案种方案q仅装载主件仅装载主件q装载主件装载主件+第第1个附件个附件q装载主件装载主件+第第2个附件个附件q装载主件装载主件+2个附件个附件q由于上述由于上述4种并列,这是几种不同的决策同时规划即可种并列,这是几种不同的决策同时规划即可8动态规划q设设F(i,j)表示前表示前i件物品背包为件物品背包为j的最优解,则有,的最优解,则有,q1=i=N,0=j=Mq时间复杂度时间复杂度O(NM)9多层背包问题q有有N件物品件物品;q第第i件物品件物品Wi公斤公斤;q第第i件物品价值件物品价值C
5、i元元;q现有一辆载重现有一辆载重M公斤的卡车公斤的卡车;q第第i件物品限制最多只能取件物品限制最多只能取Xi个;个;q问选取装载哪些物品,使得卡车运送的总价值最问选取装载哪些物品,使得卡车运送的总价值最大?大?10分析q我们可以类似我们可以类似01背包问题,将第背包问题,将第i种物品拆分成种物品拆分成xi个,个,这样每个物品只有这样每个物品只有1件了件了,如下图如下图:q然后对所有的物品采用动态规划即可。然后对所有的物品采用动态规划即可。qF(i,j)=max f(i-1,j-k*wi)+k*ci q0=k*wi=j11完全背包问题q有有N件物品件物品;q第第i件物品件物品Wi公斤公斤;q第
6、第i件物品价值件物品价值Ci元元;q现有一辆载重现有一辆载重M公斤的卡车公斤的卡车;q每次可以选取某种物品的任意多件装载;每次可以选取某种物品的任意多件装载;q问选取装载哪些物品,使得卡车运送的总价值最问选取装载哪些物品,使得卡车运送的总价值最大?大?12分析q类似多层背包问题将每个物品展开成类似多层背包问题将每个物品展开成Xi=m/wi个,然个,然后对所有的物品采用动态规划即可。后对所有的物品采用动态规划即可。q若两件物品若两件物品i、j满足满足ci=wj,则将物品则将物品i去去掉掉,不用考虑。这个优化的正确性显然:任何情况下都可不用考虑。这个优化的正确性显然:任何情况下都可将价值小费用高的
7、将价值小费用高的j换成物美价廉的换成物美价廉的i,得到至少不会更差得到至少不会更差的方案。的方案。q由于每种物品有选和不选两种情况,可以将每种物品的由于每种物品有选和不选两种情况,可以将每种物品的2k个当成一个整体考虑。这样对于某种物品要选取多个,个当成一个整体考虑。这样对于某种物品要选取多个,都可以由若干个都可以由若干个2k个物品进行组合个物品进行组合(即即2进制数进制数)。例如。例如第第i种物品要选种物品要选10个,则个,则10=23+21。q这样第这样第i种物品的个数为种物品的个数为k=2(m/wi)物品,是一个很大物品,是一个很大的改进。的改进。q进一步进一步,在计算在计算k时时,K=
8、2(j/wi),j为当前背包剩余空为当前背包剩余空间。间。13进一步for i:=1 to n do /动态规划,递推求动态规划,递推求ffor j:=m downto 1 dobeginif j=wi then /背包容量够大背包容量够大 fi,j:=max(fi-1,j-wi+ci,fi-1,j)else /背包容量不足背包容量不足 fi,j:=fi-1,j;end;在这里为了使得每个物品只取在这里为了使得每个物品只取1个或不取个或不取,采用了每次取采用了每次取j都是与都是与i-1进行进行比较,实际上保存了每比较,实际上保存了每1步取不同步取不同j的值的值14改进程序q事实上,我们只关心剩
9、余背包的最大值,也就是仅仅关心事实上,我们只关心剩余背包的最大值,也就是仅仅关心f(j),因此,在对因此,在对f(j)更新时,只要背包容量可以,那么可以更新时,只要背包容量可以,那么可以反复更新。程序如下:反复更新。程序如下:for i:=1 to n do /动态规划,递推求动态规划,递推求ffor j:=0 to m dobeginif j=wi then /背包容量够大背包容量够大 fj:=max(fj-wi+ci,fj)end;15思考题思考题1:机器分配:机器分配 qM M台设备,分给台设备,分给N N个公司。个公司。q若公司若公司i i获得获得j j台设备,则能产生台设备,则能产生
10、AijAij效益效益q问问如何分配如何分配设备设备使得使得总总效益最大?效益最大?qM M=15=15,N=10N=10。16分析q用用机机器器数数来来做做状状态态,数数组组f(i,j)表表示示前前i i个个公公司司分分配配j j台机器的最大盈利。则状态转移方程为台机器的最大盈利。则状态转移方程为:qf(i,j)=Maxfi-1,k+ai,j-j(1=i=N,1=j=M,0=k=j)q初始值初始值:f(0,0)=0q时间复杂度时间复杂度O(N*M2 2)17思考题思考题2:硬币找零:硬币找零l给定给定N枚硬币枚硬币l给定给定T元钱元钱l用这用这N枚硬币找这枚硬币找这T元钱,使得剩下的钱最少。元
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六讲 动态规划背包问题 第六 动态 规划 背包 问题
限制150内