动态规划 8【信息技术】.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
动态规划(八) 最长公共子串问题 [问题描述]一个字符串的某个子串,就是结定的字符串再去掉几个元素(可能一个也不去掉)。 形式化地,结定字符串X= Xl,X2,…,Xm ,和另一字符串Z= Zl,Z2,… ,Zk ,如果存在X的一个严格递增的下标序列 i1, i2, …, ik ,使得对所有的J = 1, 2, …, k ,有 分析 描述LCS问题最优解的结构 首先.我们给出一个字符串“前缀”的概念: 给定一个字符串X= X1, X2, …, Xm ,对I= 0, 1, …, m,定义X的第i个前缀为 例如,如果X=<A,B,C,B,D,A,B>,则 而 则为空串。 两个输入字符串X和Y的所有前缀组成了LCS问题的子问题空间。由此我们发现LCS问题的最优子结构的三个性质: 设X= X1, X2, …, Xm 和Y= Y1, Y2, …, Yn 为两个输入字符串,并设X和Y的最长公共子串为Z= Z1, Z2, …, Zk 性质1:如果Xm = Yn,则Zk = Xm = Yn,且 分析 举例说明: X = A, B, E, …, G, F Y= C, D, H, …, K, F 因X和Y的最后一位相等,则它们的最长公共子串Z的最后一位必为F,即有 Z = ……, F 的样式。并且 Z’= …… 是X’= A, B, E, …,G 和Y’= C,D,H, …,K 的最长公共子串。 性质2: 分析-最优子结构 性质3: 递归地定义LCS的值 由LCS问题的最优子结构的三个性质可知,要求X= X1, X2, …, Xm 和Y= Y1, Y2, …, Yn 的一个LCS,可能要检查如下子问题: 1.若Xm=Yn,我们就要找出 递归地定义LCS的值 用实例来说明上述查找过程。 设X=<A,B,C,B>,Y=<B,D,C> 1) X4 = B, Y3=C , X4 Y3,因此转而求“ X’= A,B,C 与Y的LCS” 和 “Y’= B,D 与X的LCS”。谁长谁就是X和Y的LCS。 2a) X= A,B,C , Y= B,D,C , X3=Y3, 因此转而求X= A,B 与Y= B,D 的LCS。 2b) X= A,B,C,B , Y= B,D , X4 Y2, 因此转而求X= A,B,C 与Y= B,D 和 X= A,B,C,B 与Y= 的LCS。 3a) X= A,B , Y= B,D , X2 Y2, 因此转而求 与 B,D 和 A,B 与 的LCS。 3b1)X= A,B,C , Y= B,D , X3 Y2, 因此转而求 A,B,C 与 的LCS和 A,B 与 B,D 的LCS 3b2) X= A,B,C,B , Y= , X4=Y1, 转而求 A,B,C 与 的LCS。在下一次计算中,就会遇到 A,B,C 与 。显然,一个字符串与一个空串的公共子串仍是一个空串,长度为0。因此X= A,B,C,B , Y= 的LCS为 ,长度为1 4a)同理, 与 B,D 的LCS为 ; A,B 与 的LCS为 , 因此 A,B 与 B,D 的LCS为 4b)因 A,B,C 与 的LCS为 ; A,B 与 B,D 的LCS为 故 A,B,C,B 与 B,D 的LCS为 5a)因此 A,B 与 B,D 的LCS为 故 A,B,C 与 B,D,C 的LCS为 B,C 6) 因 A,B,C 与 B,D,C 的LCS为 B,C ; A,B,C,B 与 B,D 的LCS为 故 A,B,C,B 与 B,D,C 的LCS为 B,C 递归地定义LCS的值 设C[I,J]为字符串X和Y的最长公共子串的长度。X的长度为I,Y的长度为J。若I=0或者J=0,也就是说两个字符串之一的长度为0,当前LCS的长度值也必为0。由LCS问题的最优子结构可得递归式: 自底向上求LCS的值 我们看到C[I,J]由两个自变量构成,I表示X的长度,J表示Y的长度。那么选择哪一个作为阶段变量更好呢?由于两个字符串在性质上没有区别,因此选择哪一个作阶段变量都无所谓。为简单计,不妨取I作为阶段变量。 因此阶段变量k的值范围是:1 =k =I. 阶段k表示求X的第k个前缀X’k与Y的最长公共子串。 自底向上求LCS的值 状态数: 字符串Y有长度分别为1,2,…,J的前缀字符串。这些前缀字符串与字符串X’k可以产生多少种组合呢? 应该是J种,每种组合就会得到一个LCS,就是一个状态。 因此状态数为J。状态变量的取值范围为1 =m =J 自底向上求LCS的值 决策数: 根据前面讨论的LCS的三个性质,我们可以作如下的决策: if X[k] = Y[m] then

文档评论(0)

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

1亿VIP精品文档

相关文档