- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析-12动态规划1.ppt
算法设计与分析 第十一章 动态规划(一) 动态规划概念 矩阵链乘法(过程及分析) 问题描述 最优括号化分析 计算最优代价 构造最优解 动态规划的基本内容 最优结构 重叠子问题 记忆化 程序演示及说明 预备知识 1.分治法与动态规划的关系 (1)分治法的基本思想:将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题类型相同。递归地解这些子问题,然后将各子问题的解并到原问题的解。 (2)动态规划基本思想:是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是:适合于动态规划求解的问题,经分解得到的子问题往往不是相互独立的。动态规划算法通常用于求解具有某种具有最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应一个值,我们希望找到具有最优值(最大值或最小值)的那个解。 (3)20世纪50年代由贝尔曼等人提出多阶段决策特性,并提出“最优性原理”,从而创建了动态规划这种新的算法设计方法。动态规划的目标就是要在所有允许选择的决策序列中选择一个会获得问题最优解的决策序列。 预备知识 2.两矩阵相乘的充分必要条件是第一个矩阵的列数与第二个矩阵的行数相等。 动态程序算法设计四步曲 矩阵链乘法 矩阵链乘法 矩阵链乘法 矩阵链乘法 计算括号化重数 计算括号化重数 P(1) = 1 P(2) = 1 P(3) = p(1)*p(2)+p(2)*p(1) = 1*1+1*1 =2 P(4) = p(1) *p(3)+p(2)*p(2)+p(3)*p(1) = 1*2 +1*1 +2*1 = 5 P(5) = p(1)*p(4)+p(2)*p(3)+p(3)*p(2)+ p(4)*p(1) = 1*5 +1*2+2*1 + 5*1 = 14 计算括号化重数 P(n) = 计算括号化重数 P(1) =p(2)= 1 P(3) = 2*(P(1)*P(2)) =2 P(4) = 2*(P(1)*P(3)+P(2)*P(2)/2) = 2*2.5 =5 P(5) = 2*(P(1)*P(4)+P(2)*P(3)) = 2*(5+2) =14 计算括号化重数 计算括号化重数 最优括号化的结构 一个递归解 一个递归解 计算最优代价 计算最优代价 计算最优代价 计算最优代价 为下列矩阵序列求解最优解 计算最优代价 步长为0,1 m[1,1]=m[2,2]=m[3,3]=m[4,4]=m[5,5]=m[6,6]=0 m[1,2]=min{m[1,1]+m[2,2]+p0*p1*p2}=30*35*15=15750 S[1,2]=1 m[2,3]=min{m[2,2]+m[3,3]+p1*p2*p3}=35*15*5=2625 S[2,3]=2 m[3,4]=min{m[3,3]+m[4,4]+p2*p3*p4}=15*5*10=750 S[3,4]=3 m[4,5]=min{m[4,4]+m[5,5]+p3*p4*p5}=5*10*20=1000 S[4,5]=4 m[5,6]=min{m[5,5]+m[6,6]+p4*p5*p6}=10*20*25=5000 S[5,6]=5 计算最优代价 步长为2 m[1,3]=min{m[1,1]+m[2,3]+p0*p1*p3,m[1,2]+m[2,3]+p0*p2*p3} =min{0+2625+30*35*5,15750+0+30*15*5} =min{7875,18000} = 7875 S[1,3] = 1 m[2,4]=min{m[2,2]+m[3,4]+p1*p2*p4,m[2,3]+m[4,4]+p1*p3*p4} =min{0+750+35*15*10,2625+0+35*5*10} =min{6000,4375} =4375 S[2,4] = 3 计算最优代价 m[3,5]=min{m[3,3]+m[4,5]+p2*p3*p5,m[3,4]+m[5,5]+p2*p4*p5} =min{0+1000+15*5*20,750+0+15*10*20} =min{2500,3750} =2500 S[3,5] =3 m[4,6]=min{m[4,4]+m[5,6]+p3*p4*p6,m[4,5]+m[6,6]+p3*p5*p6} =min{0+5000+5*10*25,1000+0+5*20*2
文档评论(0)