动态规划-最长共子序列.docVIP

  • 32
  • 0
  • 约 4页
  • 2016-11-30 发布于贵州
  • 举报
动态规划-最长共子序列

问题描述 一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列X=x1, x2,…, xm,则另一序列Z=z1, z2,…, zk是X的子序列是指存在一个严格递增的下标序列 i1, i2,…, ik,使得对于所有j=1,2,…,k有Xij =Zj 例如,序列Z=B,C,D,B是序列X=A,B,C,B,D,A,B的子序列,相应的递增下标序列为2,3,5,7。给定两个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。例如,若X=A, B, C, B, D, A, B和Y=B, D, C, A, B, A,则序列B, C, A是X和Y的一个公共子序列,序列B, C, B, A也是X和Y的一个公共子序列。而且,后者是X和Y的一个最长公共子序列,因为X和Y没有长度大于4的公共子序列。 最长公共子序列(LCS)问题:给定两个序列X=x1, x2, …, xm和Y=y1, y2, … , yn,要求找出X和Y的一个最长公共子序列。 动态规划算法可有效地解此问题。 下面我们按照动态规划算法设计的各个步骤来设计一个解此问题的有效算法。 最长公共子序列的结构 解最长公共子序列问题时最容易想到的算法是穷举搜索法,即对X的每一个子序列,检查它是否也是Y的子序列,从而确定它是否为X和Y的公共子序列,并且在检查过程中选出最长的公共子序列。X的所

文档评论(0)

1亿VIP精品文档

相关文档