《数据结构与算法》第十一章算法设计方法.ppt

《数据结构与算法》第十一章算法设计方法.ppt

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

最长公共子序列的最佳原则 设序列X={x1,x2,…,xm}和Y={y1,y2,…,yn}的最长公共子序列为Z={z1,z2,…,zk} ,则: (1)若xm=yn,则zk=xm=yn,且Zk-1是Xm-1和Yn-1的最长公共子序列。 (2)若xm≠yn且zk≠xm,则Z是Xm-1和Y的最长公共子序列。 (3)若xm≠yn且zk≠yn,则Z是X和Yn-1的最长公共子序列。 Xm-1 ={x1,x2,…,xm-1}, Yn-1 ={y1,y2,…,yn-1} X={A,B,C,B,D,A,B} Y={B,D,C,A,B,A} Z={ ? } B,D,A,B B,C,A,B B,C,B,A 令c[i][j]记录序列Xi和Yj的最长公共子序列的长度 b[i][j]记录c[i][j]是由从c[i-1][j-1]、c[i-1][j]、c[i][j-1]中的哪一个得到的,分别用值1、2、3标注 0 i=0或j=0 c[i-1][j-1] i,j0 xi=yj max{c[i-1][j],c[i][j-1]} i,j0 xi≠yj c[i][j]= 设序列X={x1,x2,…,xm}和Y={y1,y2,…,yn}的最长公共子序列为Z={z1,z2,…,zk} ,则: (1)若xm=yn,则zk=xm=yn,且Zk-1是Xm-1和Yn-1的最长公共子序列。 (2)若xm≠yn且zk≠xm,则Z是Xm-1和Y的最长公共子序列。 (3)若xm≠yn且zk≠yn,则Z是X和Yn-1的最长公共子序列。 Xm-1 ={x1,x2,…,xm-1}, Yn-1 ={y1,y2,…,yn-1} void LCSLength(char *x,char *y,int m,int n, int *b[],int *c[]) { for(i=1; i=m; i++) c[i][0]=0; for(i=1; i=n; i++) c[0][i]=0; for(i=1; i=m; i++) for(j=1; i=n; j++) if (x[i]==y[j]) {c[i][j]=c[i-1][j-1]+1; b[i][j]=1;} else if (c[i-1][j]=c[i][j-1]) { c[i][j]=c[i-1][j]; b[i][j]=2; } else { c[i][j]=c[i][j-1]; b[i][j]=3;} } T(m,n)=O(mn) S(m,n)=O(mn) X={A,B,C,B,D,A,B} Y={B,D,C,A,B,A} c/b 0 0 0 0 0 0 0 0 0 0 0 0 0 j=0 1 2 3 4 5 6 i=0 1 2 3 4 5 6 7 m=7 n=6 0/2 0/2 0/2 1/1 1/3 1/1 1/1 1/3 1/3 1/2 2/1 2/3 1/2 1/2 2/1 2/3 2/2 2/2 1/1 1/2 2/2 2/2 3/1 3/3 1/2 2/1 2/2 2/2 3/2 3/2 1/2 2/2 2/2 3/1 3/2 4/1 1/1 2/2 2/2 3/2 4/1 4/2 4/1 3/1 2/3 2/2 2/1 1/1 4/1 3/1 2/2 2/2 2/1 2/2 2/2 3/2 c[6][6] c[5][5] 1 c[4][5] c[3][4] 1 2 c[3][3] 3 c[2][2] 1 c[2][1] 2 c[7][5] c[6][4] 1 c[5][3] c[4][3] 2 1 c[3][3] 2 c[2][2] 1 c[2][1] 2 B,C,A,B B,C,B,A 动态规划方法 找出最佳原则,并刻划其结构特征 递归地定义最佳解值 以自底向上的方式计算出最佳解 根据计算最佳解时得到的信息,构造最佳解 11.3 贪心法 某些问题,有多个输入,一些约束条件 满足约束条件的一个解称为一个可能的解 最佳解是使目标函数最大/小的一个可能解 贪心法也是一个多步决策法, 每一步是当前看来最好的选择,构成问题的一个可能解的一部分(局部最优) 并使目标函数的值变化最大 其决策过程是以某些最优化量为依据的。 背包问题 问题:给定n种不同的物体和一个

文档评论(0)

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

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

1亿VIP精品文档

相关文档