算法分析——2.ppt

  1. 1、本文档共141页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法分析——2

算法设计与分析 ——动态规划 提纲 基本概念 从矩阵连乘问题看动态规划 实例分析 本章小节 提纲 基本概念 从矩阵连乘问题看动态规划 实例分析 本章小节 动态规划 Vs. 贪心策略 动态规划 Vs. 分治策略 动态规划算法的的基本思想 动态规划算法的的基本思想 其基本思想与分治算法的思想类似——分而治之 与分治法的不同之处 分解后的子问题往往不互相独立; 采用记录表的方法来保存所有已解决问题的答案 动态规划算法的一般步骤 动态规划算法的一般步骤 找出最优解的性质,并刻画其结构特征; 递归地定义最优值; 以自底向上的方式计算出最优值; 根据计算最优值时得到的信息,构造最优解; 提纲 基本概念 从矩阵连乘问题看动态规划 实例分析 本章小节 知识点 矩阵连乘问题 动态规划算法的基本要素 矩阵连乘问题 两个矩阵的相乘问题 两个矩阵的相乘问题 A为p*q的矩阵 B为q*r的矩阵 C=AB为p*r的矩阵 ——计算C的标准算法,共需要p*q*r次数乘 三个矩阵的相乘问题 三个矩阵的相乘问题 A为p*q的矩阵 B为q*r的矩阵 C为r*s的矩阵 D=ABC为p*s的矩阵 ——计算D的标准算法,共需要p*q*r*s次数乘 考察{A1,A2,A3}三个矩阵连乘 假定: A1为10*100的矩阵 A2为100*5的矩阵 A3为5*50的矩阵 切入点 考察不同计算次序下的计算量 不同计算次序下的计算量 计算次序一:(A1A2)A3 计算量=10*100*5+10*5*50=7500次数乘 计算次序二:A1(A2A3) 计算量=10*5*50+10*100*50=75000次数乘 矩阵连乘积的最优计算次序问题 方案1:穷举搜索法 穷举搜索法 列举出所有可能的计算次序,选取其中数乘最小的计算次序; 一定可以找到最优计算次序 求解步骤 分析最优解的结构 建立递归关系 计算最优值 构造最优解 分析最优解的结构 将矩阵连乘积AiAi+1…Aj记作A[i:j] 把问题转化成考察A[1:n]的最优计算次序问题 求解步骤 分析最优解的结构 建立递归关系 计算最优值 构造最优解 建立递归关系 设计算A[i:j],1≤i≤j ≤n,所需的最少数乘次数为m[i][j] ——则原问题的最优解为m[1][n] 考察两种情况 i=j; ij; 当i=j时 当ij时 求解步骤 分析最优解的结构 建立递归关系 计算最优值 构造最优解 计算最优值 举例说明 计算结果 算法复杂性分析 求解步骤 分析最优解的结构 建立递归关系 计算最优值 构造最优解 构造最优解 构造最优解 利用算法实现过程中保存在s[i][j]中的分割点信息来重构最优解 s[i][j]中的数k表明计算矩阵A[i:j]的最佳方式应在矩阵Ak和Ak+1断开,即最优加括号方式为 (A[i:k])(A[k+1:j]) 举例 *多阶段决策过程 多阶段决策过程(Multistep Decision Process) 某一类特殊的活动过程,过程可以按时间顺序分解成若干个相互联系的阶段,在每一个阶段都需要做出决策,全部过程的决策是一个决策序列。 最优化过程 动态规划算法可以高效地解决很多贪婪算法或分治算法不能解决的问题 动态规划算法求解思路 动态规划算法求解思路 将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解得到原问题的解; 对于重复出现的子问题,只在第一次遇到的时候对它进行求解,并把答案保存起来,让以后再次遇到时直接引用答案,不必重新求解 。 动态规划算法将问题的解决方案视为一系列决策的结果,与贪婪算法不同的是: 在贪婪算法中,每采用一次贪婪准则,便做出一个不可撤回的决策; 在动态规划算法中,还要考察每个最优决策序列中是否包含一个最优决策子序列,即问题是否具有最优子结构性质。 动态规划算法的基本要素 动态规划算法的基本要素 最优子结构性质 子问题重叠性质 最优子结构 最优子结构 当问题的最优解包含了其子问题的最优解时,称该问题具有最优子结构性质。 又被称为最优化原理 所谓最优化原理即不管前面的策略如何,此后的决策必须是基于当前状态(由上一次决策产生)的最优决策。 由于对于有些问题的某些递归式来说并不一定能保证最优原则,因此在求解问题时有必要对它进行验证。若不能保持最优原则,则不可应用动态规划方法。在得到最优解的递归式之后,需要执行回溯以构造最优解。当最优决策序列中包含最优决策子序列时,可建立动态规划递归方程,它可以帮助我们高效地解决问题。 举例: 在矩阵连乘中, A[1:n]的最优计算次序所包含的计算矩阵子链A[1:k]和A[k+1:n]的次序也是最优的。 子问题重叠性质 子问题重叠性质 用递归算法子顶向下求解问题时,每次产生的子问题之间存在重叠现象。 对每个子问题只求解一次,并将结

您可能关注的文档

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档