ImageVerifierCode 换一换
格式:PPT , 页数:32 ,大小:191.50KB ,
资源ID:3315947      下载积分:20 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-3315947.html】到电脑端继续下载(重复下载不扣费)。

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(资源背包动态规划.ppt)为本站会员(dzzj200808)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

资源背包动态规划.ppt

1、背包类动态规划问题,长沙市雅礼中学 朱全民,经典的背包问题(01背包),有N件物品; 第i件物品Wi公斤; 第i件物品价值Ci元; 现有一辆载重M公斤的卡车; 问选取装载哪些物品,使得卡车运送的总价值最大?,搜索法,对于每种物品,要么装上卡车,要么不装,因此,N种物品的装箱方案共有2N种。 按每种物品进行搜索,方法如下: 对第i种物品进行搜索 如果所有的物品都搜索完,则更新最优解 如果当前的估计达不到最优解,则回溯 如果第i种物品能放,则放,并标记,否则选下一个物品 清除标记 回溯,动态规划,可以按每个物品进行规划,同样每种物品有选和不选两种选择 设F(i,j)表示前i件物品载重为j的最大效益

2、,则有1=i=N, 0=j=N 初值:F(0,j)=0 F(N,M)即答案 显然时间复杂度为O(NM),主程序如下,for i:=1 to m do f0,i:=0; /初始化 for i:=1 to n do fi,0:=0; for i:=1 to n do / 动态规划,递推求ffor j:=1 to m dobeginif j=wi then /背包容量够大fi,j:=max(fi-1,j-wi+ci,fi-1,j)else /背包容量不足fi,j:=fi-1,j;end;,满背包问题(01背包),有N件物品; 第i件物品Wi公斤; 第i件物品价值Ci元; 现有一辆载重M公斤的卡车;

3、问选取装载哪些物品,使得卡车开车正好装满时,运送的总价值最大?若无法装满卡车,则输出无解。,动态规划,设F(i,j)表示前i件物品背包为j的最大效益,则有1=i=N, 0=j=N 初值:F(0,j)=0, F(1,j)= - F(N,M)即答案 显然时间复杂度为O(NM),带条件的背包问题(1),有N件物品; 第i件物品Wi公斤; 第i件物品价值Ci元; 第i件物品可能带02个附件; 若装载附件,必须装载主件,反之没有约束; 现有一辆载重M公斤的卡车; 问选取装载哪些物品,使得卡车运送的总价值最大?,分析,假设只有主件的情况 ,显然与经典背包问题完全相同! 现在每个物品有附件,我们可以分成4种

4、方案 仅装载主件 装载主件+第1个附件 装载主件+第2个附件 装载主件+2个附件 由于上述4种并列,这是几种不同的决策同时规划即可,动态规划,设F(i,j)表示前i件物品背包为j的最优解,则有,1=i=N, 0=j=M 时间复杂度O(NM),多层背包问题,有N件物品; 第i件物品Wi公斤; 第i件物品价值Ci元; 现有一辆载重M公斤的卡车; 第i件物品限制最多只能取Xi个; 问选取装载哪些物品,使得卡车运送的总价值最大?,分析,我们可以类似01背包问题,将第i种物品拆分成xi个,这样每个物品只有1件了,如下图:然后对所有的物品采用动态规划即可。 F(i,j)=max f(i-1,j-k*wi)

5、 + k*ci 0=k*wi=j,完全背包问题,有N件物品; 第i件物品Wi公斤; 第i件物品价值Ci元; 现有一辆载重M公斤的卡车; 每次可以选取某种物品的任意多件装载; 问选取装载哪些物品,使得卡车运送的总价值最大?,分析,类似多层背包问题将每个物品展开成Xi =m/wi个,然后对所有的物品采用动态规划即可。 若两件物品i、j满足ci=wj,则将物品i去掉,不用考虑。这个优化的正确性显然:任何情况下都可将价值小费用高的j换成物美价廉的i,得到至少不会更差的方案。 由于每种物品有选和不选两种情况,可以将每种物品的2k个当成一个整体考虑。这样对于某种物品要选取多个,都可以由若干个2k个物品进行

6、组合 (即2进制数)。例如第i种物品要选10个,则10=23+21 。 这样第i种物品的个数为k=2 (m/wi)物品,是一个很大的改进。 进一步, 在计算k时, K =2 (j/wi), j为当前背包剩余空间。,进一步,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的值,改进程序

7、,事实上,我们只关心剩余背包的最大值,也就是仅仅关心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;,思考题1:机器分配,M台设备,分给N个公司。 若公司i获得j台设备,则能产生Aij效益 问如何分配设备使得总效益最大? M=15,N=10。,分析,用机器数来做状态,数组f(i,j)表示前i个公司分配j台机器的最大盈利。则状态转移方程为: f(i,j) =Maxfi-1,k +

8、 ai,j-j (1=i=N,1=j=M,0=k=j ) 初始值: f(0,0)=0 时间复杂度O(N*M2),思考题2:硬币找零,给定N枚硬币 给定T元钱 用这N枚硬币找这T元钱,使得剩下的钱最少。 剩下钱数最少的找零方案中的所需的最少硬币数。 N=500,T=10000.,分析,设Fi表示需要找的钱数为i时所需要的最少钱币数。显然有: Fi=MinF i - Aj + 1 i T,1jN 初始值:F0=0。 Aj表示其中 第j种钱币的面值。 时间复杂度为O(N*T)。,思考题3:系统可靠性,一个系统由若干部件串联而成,只要有一个部件故障,系统就不能正常运行,为提高系统的可靠性,每一部件都装

9、有备用件,一旦原部件故障,备用件就自动进入系统。显然备用件越多,系统可靠性越高,但费用也越大,那么在一定总费用限制下,系统的最高可靠性等于多少? 给定一些系统备用件的单价Ck,以及当用Mk个此备用件时部件的正常工作概率Pk(Mk),总费用上限C。求系统可能的最高可靠性。,样例,输入文件格式:第一行:n C 第二行:C1 P1(0) P1(1) P1(X1) (0=X1=C/Ck) 第n 行:Cn Pn(0) Pn(1) Pn(Xn) (0=Xn=C/Cn)输入:2 20 3 0.6 0.65 0.7 0.75 0.8 0.85 0.95 0.7 0.75 0.8 0.8 0.9 0.95输出:

10、0.6375,分析,设f(i,j)表示将j的资金用到前i项备用件中去的最大可靠性,则有F(i,j)=maxF(i-1,jk*Costi)*Pi,k0=i=n, 0=j=C,0=kj div Cost(i) 初始: F(0,0)=0 目标: F(n,C) 时间复杂度:O(k*n*C),这里k是常数因子,与数据相关,思考题4:快餐问题,套餐由由A个汉堡,B个薯条和C个饮料组成 生产汉堡、薯条、饮料的时间为p1,p2,p3 有N条流水线,N=10,第i条流水线生产时间为Ti 每条流水线都可生产汉堡、薯条和饮料 每天汉堡、薯条和饮料个数不超过100 如何安排生产使得生产套餐数量最多。,分析,对于每条流

11、水线,它的生产时间是一定的,我们如果知道了生产汉堡和薯条的个数,就很容易计算出生产饮料的个数。因此, 假设第i条流水线生产了i个汉堡,j个薯条,那么还能生产饮料个数为:k=(Ti-i*p1-j*p2)/p3,动态规划,设f(x,i,j)表示前x条流水线生产i个汉堡,j个薯条最多还能生产饮料个数。 如果前x-1条流水线只要生产i汉堡,j个薯条,生产的饮料为f(x-1,i,j) 因此有第x条流水线必须生产了i-i个汉堡,j-j个薯条,剩下的时间生产k个饮料。因为前x条流水线生产的饮料=前x-1条流水线生产的饮料 + 第x条流水线生产的饮料 所以有,f(x,i,j)=maxf(x-1,i,j)+k,

12、流水线资源分配图,思考?,f(x,i,j)=maxf(x-1,i,j)+k1=x=n=10,0=i=i=100, 0=j=j=100 k可以实时求出 时间复杂度为10*1002*1002=109 显然超时!,优化,求出最多可能生产多少套,减少不必要循环。 淘汰一些没有意义状态,比如生产了过多第三种物质,却没把前两种生产满。 让每条流水线大多数时间按成套时间生产,留下一些时间进行动态规划,这样将在动态规划时,极大地减少每种物品的产量从而极大地减少动态规划的状态数。,说明,利用前两个优化基本可以出解 第3个优化,对每条流水线进行动态规划的剩余时间多少比较难确定,否则正确性难以保证,剩余时间越多,正

13、确率越高,速度越慢。下图是对第3个优化的说明:,总结,第1步:采用优化方法3,将每条流水线的 部分时间按成套生产,设第i条流水线生产套餐Wi套,剩下的时间为Ti; 第2步,对每条流水线的剩下时间进行动态规划,并采用优化1,2; 第3步,求总套数 = 贪心总套数X + 动态规划的套数Y。 其中X,Y计算如下,,总结,对于资源类动态规划问题,我们可以看出,问题描述必须有一个基本要素:资源,有时这种资源可能是金钱、空间或者时间,问题就是要对这些资源如何分配,一种基本的想法是将资源应用于前i个阶段,然后考虑第i个阶段和前i-1个阶段之间的关系。 设前i个点的消耗j的资源得到的最优值,研究前i-1个点消耗的资源的最优值,利用第i个点决策转移,如下图。状态转移方程一般可写成: fi(j) = min fi-1 ( k) + ui (j,k),

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报