最大公共子序列
给定序列
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 的最长公共子序列
进而得出递推关系
实例:
X=<A,B,D,C,B,A,C>
Y=<B,C,A,D,A,A>
m=0-7
n=0-6
核心伪代码
算法复杂度分析
最后算法复杂度即算法1为O(mn)
未完待续…先睡去了