算法设计与分析第6讲 动态规划.ppt_第1页
算法设计与分析第6讲 动态规划.ppt_第2页
算法设计与分析第6讲 动态规划.ppt_第3页
算法设计与分析第6讲 动态规划.ppt_第4页
算法设计与分析第6讲 动态规划.ppt_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,动态规划,Dynamic Programming,2,最长公共子序列问题,给定两个序列x(x1,.xm), y(y1,yn),寻找一个最长的公共子序列,lcs(x,y). 例 X: A B C B D A B Y: B D C A B A Lcs: BDAB, BCAB,BCBA 算法:穷举给出X的一个子串(2m个?),测试是不是Y的子串。次测试的时间是(n),故总时间 (n2m),是个指数级别的。,3,算法思路,先算出LCS(x,y)的长度 再扩充之,得到LCS. 用|S|记录串S的长度, 策略:考虑x,y的前缀,变成一些会怎么样? 定义Ci,j=|LCS(x(1,.i),y(1,j)|

2、 则Cm,n=LCS(x,y),4,递推式,定理: 证明:令Z(1,2,.k)LCS(x(1,2,.i),y(1,2,.j) 则|Z|=Ci, j=k. 1 xi=yj. 画出到x和y的一一对应,zk一定对应到xi或(和)yj?. 那么Z(1,2,.k-1)肯定对应在(x(1,2,.i-1),y(1,2,.j-1)上.另外,不会有更长的公共字串, 故Z(1,2,.k-1)LCS (x(1,2,.i-1),y(1,2,.j-1),即Ci-1,j-1=k-1=Ci,j-1. 2 else. 如果Zk不对应xi或者yj。如果不对应Xi,则Z(1,2,.k)=LCS(x(1,2,.i-1),y(1,2

3、,.j),如果不对应yi,则Z(1,2,.k)=LCS(x(1,2,.i),y(1,2,.j-1),故CI,j=max(Ci-1,j,CI,j-1),5,动态规划特征最优子结构,刚才的证明发现,Z(1,2,.k)LCS(x,y)则Z(1,2k-1)是x,y前缀的 LCS. 最优子结构: 一个问题的最优解的一部分,是子问题的最优解。 递归算法:LCS(x,y,i,j) If xi=yj then Ci,j=LCS(x,y,i-1,j-1)+1; Else Ci,j=max(LCS(x,y,i-1,j),LCS(x,y,i,j-1) Return Ci,j,6,递归算法复杂性,递归树 (最差情况,

4、xi!=yj 任何的i,j) 2叉树,树高(m+n),故节点个数O(2m+n) 但是,可以观察到,很多子树是相同的,不必要递归再计算一次,7,3,7,5,6,6,7,4,6,5,6,5,5,6,7,6,6,4,6,4,5,5,5,5,6,4,5,5,4,6,7,动态规划特征2,重叠子结构:递归中,有独立子问题被计算多次。 实际上Ci,j中,不同的只有mn个问题 备忘录算法: LCS(x,y,i,j) if Ci,j != nil then if xi=yj then Ci,j=LCS(x,y,i-1,j-1)+1; Else Ci,j=max(LCS(x,y,i-1,j),LCS(x,y,i,j-1); return Ci,j T= (mn),8,动态规划算法,自底向上计算,不递归 A B C B D A B 0 0 0 0 0 0 0 B 0 0 1 1 1 1 1 1 D 0 0 1 1 1 2 2 2 C 0 0 1 2 2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论