- 1、本文档共83页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
动态规划算法常用于求解这样一类问题:问题的解可以表示成一个解向量(x1,x2,…xn)(n≥2),算法分为n步进行,每一步确定解向量中的一个分量的取值。 动态规划的设计思想:每一步都列出各种可能的局部解,然后通过计算,舍去那些不满足约束条件的局部解和那些已经肯定不可能发展成全局最优解的局部解。在此基础上,对存留的局部解考察下一步(下一个分量)的取值。 动态规划与贪心算法的区别:贪心算法的出发点是每一步都追求局部最优;动态规划则着眼于全局最优,每一步都只是把那些已经肯定不能导致全局最优的部分解舍弃。 m(1, j) = max{m(2, j), m(2, j–2)+1} j≥2 m(2, j) 0≤j<2 m(2, j–2)+1=6 6≤j<7 m(2, j)=5 4≤j<6 m(2, j)=2 3≤j<4 m(2, j–2)+1=1 2≤j<3 m(2, j)=0 0≤j<2 m(1, j) = ③ m(1, 6) = max{m(2, 6), m(2, 6–2)+1} = max{5, 5+1} = 6 实例: n=3, c=6, (w1,w2,w3)=(2,3,4), (v1,v2,v3)=(1,2,5) void Knapsack( int w[], int c, int n,int m[][]) { int i, j, jMax=min(w[n]-1, c);//jMax为第n个物品和背包容量c较小的值 for(j=0; j=jMax; j++) m[n][j]=0; for(j=w[n]; j=c; j++) m[n][j]=v[n]; for(i=n-1; i1; i--) { jMax=min(w[i]-1, c); for(j=0; j=jMax; j++) m[i][j]=m[i+1][j]; for(j=w[i]; j=c; j++) m[i][j]=max(m[i+1][j], m[i+1][j-w[i]]+v[i]); } m[1][c]=m[2][c]; if(c=w[1]) m[1][c]=max(m[2][c], m[2][c-w[1]]+v[1]); } 计算最优值的Knapsack算法描述 计算 m(n, j)= vn j≥wn 0 0≤j<wn 计算m(n-1, j)到m(2, j) m[1][c]=max(m[2][c], m[2][c-w[1]]+v[1]); 计算m(1, j) 构造最优解的Traceback算法描述 void Traceback(int m[ ][ ], int w[ ], int c, int n, int x[ ]) { for(int i=1; in; i++) if(m[i][c]= =m[i+1][c]) x[i]=0; else { x[i]=1; c=c-w[i]; } x[n]=m[n][c]? 1: 0; } m(3, 0) =0 m(3, 1) =0 m(3, 2) =0 m(3, 3) =0 m(3, 4) =5 m(3, 5) =5 m(3, 6) =5 m(2, 0) =0 m(2, 1) =0 m(2, 2) =0 m(2, 3) =2 m(2, 4) =5 m(2, 5) =5 m(2, 6) =5 m(1, 6) =6 c=6, n=3, 执行两次循环 ①m(1, 6) ≠ m(2, 6), 所以x[1]=1,c=6-2=4 ②m(2, 4) == m(3, 4) 所以 x[2]=0 x[3]=m[3][4]?1:0=1 实例: n=3, c=6, (w1,w2,w3)=(2,3,4), (v1,v2,v3)=(1,2,5) 0-1背包问题的阶跃性 递归函数m(i, j)是关于变量j的阶梯状单调不减函数 跳跃点是这一类函数的描述特征 一般情况下, 函数m(i, j)可由其全部跳跃点唯一确定 实例: n=3, c=6, (w1,w2,w3)=(2,3,4), (v1,v2,v3)=(1,2,5) 1 2 3 4 5 6 j 5 4 3 2 1 m(i, j) 跳跃点(4,5) (0,0) (2,1) (3,2) m(2, j)=5
您可能关注的文档
最近下载
- 2023神经重症监护患者脑水肿的急性治疗指南(完整版).pdf VIP
- 2025-2026年初中信息技术安徽初二水平会考真题试卷 .pdf VIP
- (新课标)新高教版中职信息技术(基础模块)上册1.2《认识信息系统》说课稿.docx
- 高一自主招生数学试题及标准答案.docx VIP
- 四措两案标准模板.doc
- 2025年初中信息技术初二水平会考真题试卷 含答案考点及解析 .pdf VIP
- 重庆西南大学附属中学体育馆结构设计-建筑结构.PDF
- 红楼梦英文版(杨宪益译)_精品.doc
- 2025年初中信息技术初二水平会考真题含答案考点及解析 .pdf VIP
- 2024年初中信息技术会考试题含答案.doc
文档评论(0)