第3讲动态的规划.ppt

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
常用算法与程序设计 31 3.5.2 最长公共子序列 【例 6.7 】 给定两个序列 ? ? m x x x X , , , 2 1 ? ? 和 ? ? n y y y Y , , , 2 1 ? ? ,找出 序列 X 和 Y 的最长公共子序列。 求序列 X 与 Y 的最长公共子序列可以使用穷举法:列出 X 的所 有子序列,检查 X 的每一个子序列是否也是 Y 的子序列,并记录其 中公共子序列的长度, 通过比较最终求得 X 与 Y 的最长公共子序列。 对 于 一 个长 度为 m 的序 列 X , 其 每一 个子 序 列对 应 于下 标集 {1,2, … ,m} 的一个子集,即 X 的子序列数目多达 2 m 个。由此可见应 用穷举法求解是指数时间的。 最长公共子序列问题具有最优子结构性质,应用动态规划设计 求解。 常用算法与程序设计 32 (1 ) 建立递推关系 设序列 ? ? m x x x X , , , 2 1 ? ? 和 ? ? n y y y Y , , , 2 1 ? ? 的最长公共子序列为 ? ? k z z z Z , , , 2 1 ? ? , ? ? m i i x x x , , , 1 ? ? 与 ? ? n j j y y y , , , 1 ? ? (i=0,1, … ,m;j=0,1, … ,n) 的最长公共子序列的长度为 c(i,j) 。 若 i=m+1 或 j=n+1 ,此时为空序列, c(i,j)=0 (边界条件) 。 若 x(1)=y(1) ,则有 z(1)=x(1),c(1,1)=c(2,2)+1 ( 其中 1 为 z(1) 这一项 ) ; 若 x(1) ≠ y(1) ,则 c(1,1) 取 c(2,1) 与 c(1,2) 中的最大者。 一般地 , 若 x(i)=y(j) ,则 c(i,j)=c(i+1,j+1)+1 ; 若 x(i) ≠ y(j) ,则 c(i,j)=max(c(i+1,j),c(i,j+1)) 。 因而归纳为递推关系: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? j i j i y x n j m i j i c j i c y x n j m i j i c j i c , 1 , 1 )) , 1 ( ), 1 , ( max( , 1 , 1 1 ) 1 , 1 ( ) , ( 边界条件: c(i,j)=0 ( i=m+1 或 j=n+1 ) 常用算法与程序设计 33 (2) 逆推计算最优值 ? 根据以上递推关系 , 逆推计算最优值 c(0,0) 流程为 : ? for(i=0;i=m;i++) c[i][n]=0; /* 赋初始值 */ ? for(j=0;j=n;j++) c[m][j]=0; ? for(i=m-1;i=0;i--) /* 计算最优值 */ ? for(j=n-1;j=0;j--) ? if(x[i]==y[j]) ? c[i][j]=c[i+1][j+1]+1; ? else if(c[i][j+1]c[i+1][j]) ? c[i][j]=c[i][j+1]; ? else c[i][j]=c[i+1][j]; ? 瀠楲瑮? 最长公共子串的长度为: %d,c[0][0]); 常用算法与程序设计 1 常用算法与程序设计 2 6.1 一般方法与求解步骤 6.2 装载问题 6.3 插入乘号问题 6.4 0-1 背包问题求解 6.5 最长子序列探索 6.6 最优路径搜索 6.7 动态规划与其他算法的比较 常用算法与程序设计 3 3.1 一般方法与求解步骤 动态规划简介 动态规划是运筹学的一个分支,是求解决策过 程最优化的数学方法。 20 世纪 50 年代美国数学家贝尔曼( R.Bellman ) 等人在研究多阶段决策过程的优化问题时,提出 了著名的最优性原理,创立了解决多阶段过程优 化问题的新方法——动态规划。 动态规划问世以来,在经济管理、生产调度、 工程技术和最优控制等方面得到了广泛的应用。 常用算法与程序设计 4 3.1.1 一般方法 1. 几个概念 多阶段决策问题,是指这样的一类特殊的活动 过程,问题可以分解成若干相互

文档评论(0)

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

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

1亿VIP精品文档

相关文档