最大公共子序列

给定序列
X = < X1,X2,…,Xm >
Y = < Y1,Y2,…,Yj >
求X和Y的最长公共子序列

算法思想

  • 动态规划法
    Xi = < x1,x2,…,xi >
    Yj = < y1,y2,…,yj >
    Zk = < z1,z2,…,zk >

如果Zk是Xi和Yj的最长公共子序列
(1)xi = yj,那么 zk = xi = yj,Zk-1 是 Xi-1 和Yj-1的最长公共子序列
(2)xi ≠ yj,zk ≠ xi,那么 Zk是Xi-1和 Yj 的最长公共子序列
(3)xi ≠ yj,zk ≠ yj,那么 Zk 是 Xi 和 Yj-1 的最长公共子序列

进而得出递推关系

动态规划之最大公共子序列LCS
实例:
X=<A,B,D,C,B,A,C>
Y=<B,C,A,D,A,A>

m=0-7
n=0-6

核心伪代码

算法复杂度分析

最后算法复杂度即算法1为O(mn)

未完待续…先睡去了

相关文章: