动态规划(01背包).pptVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
动态规划(01背包),背包问题动态规划,01背包问题动态规划,背包算法动态规划,完全背包动态规划,01背包动态规划,动态规划背包,01背包动态规划算法,动态规划求解01背包,动态规划0—1背包问题

贪心策略 贪心策略:在对问题求解时,总是做出在当前看来是最好的选择。 贪心策略适用的前提是:局部最优策略能导致产生全局最优解。 贪心策略接近人的日常思维,每次选当前最优的,但局部最优解未必能得到全局最优解,如01背包,每次选择价值/重量最大的,未必最优。 动态规划(DP) 每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。(以后课程再慢慢理解) (1)最优化原理:如果问题的最优解所包含的子问题的解也是最优的,就称该问题具有最优子结构。 (理解:局部最优,全局也最优) (2)无后效性:即某阶段状态一旦确定,就不受这个状态以后决策的影响。也就是说,某状态以后的过程不会影响以前的状态,只与当前状态有关。 (理解:前事确定了,后事如何都影响不了前事,例如李启铭开车撞死人了,后来说了句我爸是李刚,也改变不了撞死人事实) (3)有重叠子问题(个别辅导资料提到记忆化搜索):即子问题之间是不独立的,一个子问题在下一阶段决策中可能被多次使用到。 (理解:一般使用数组保存子问题结果,因为后面子问题的求解会用到前面子问题的结果,不用再重复计算,如走楼梯f[n]:=f[n-1]+f[n-2],而不是使用递归函数f(n):=f(n-1)+f(n-2)) dfs(爆搜),从第二层开始每次有两条路可选,当层数N = 100 时,路径条数P = 299,这是一个非常大的数即使用世界上最快的电子计算机,也不能在短时间内计算出来。 贪心,每层选择最大值,例如13-11-12-14-13 其路径的值为 63 ,但这不是最优解。 动态规划,如果得到一条由顶到底的某处的一条最佳路径,那么对于该路径上的每一个中间点来说,由顶至该中间点的路径所经过的数字和也为最大。因此本题是一个典型的多阶段决策最优化问题。 数组A[i,j] 保存三角形数塔,B[i,j]保存状态值,按从上往下方式进行求解。 Var a,b : array[1..100,0..100] of word; i,j,n : byte; max : word; begin repeat write('N = '); readln(n); until n in [1..100]; fillchar(a,sizeof(a),0); b := a; for i := 1 to n do begin for j := 1 to i do read(a[i,j]); readln; end; b[1,1] := a[1,1]; for i := 2 to n do for j := 1 to i do if b[i-1,j-1] > b[i-1,j] then b[i,j] := b[i-1,j-1]+a[i,j] else b[i,j] := b[i-1,j]+a[i,j]; max := 0; for i := 1 to n do if b[n,i] > max then max := b[n,i]; writeln('Max = ',max); readln; end. 0-1背包问题 小偷有一个可承受W的背包 有n件物品: 第i个物品价值vi 且重wi 求背包能装的最大价值 0-1背包问题的动态规划 对于每一个物品i,都有两种情况需要考虑 第1种情况:物品i的重量wi<=j,小偷对物品i可拿或者不拿 P[i,j] = max{P[i-1, j], P[i-1,j-wi] + vi} 第2种情况:物品i的重量wi>j,即小偷肯定不拿物品i P[i, j] = P[i - 1, j] * 8 15 14 6 11 24 13 7 12 26 7 12 8 11 13 0 0 0 0 0 0 8 (55) 15 (62) 14 (50) 6 (42) 11 (66) 24 (86) 13 (75) 7 (57) 12 (54) 0 0 26 (47) 7 (31) 12 (36) 0 0 0 8 (21) 11 (24) 0 0 0 0 13(13) 步骤1 P[i, j] –前i间物品在总承重为j的背包获得的最大价值。 步骤2 阶段分析: P(i,j)= P(i-1,j) 当wi> j (不够装不装) max P(i-1,j) 够装但不装 p(i-1,j-wi)+pi 够装而且装 0 0 0 0 0 0 0 0 0 0 15 2 4

文档评论(0)

ajgoaw + 关注
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档