字符串的相似性:如果将一个串转换成为另一个串所需的操作数最少,那么可以说这两个串是相似的。另外一种权衡的方法是,寻换第三个串s3,如果s3都出现在s1和s2中,且出现的顺序相同,但不要求在s1和s2中连续,那么s3的长度越大,就说明相似度越高。
后一种对相似度概念命名为最长公共子序列。
1、最长公共子序列的特征
如果用暴力搜索的方法求解LCS问题,就要穷举X的所有子序列,对每个子序列进行检查,看它是否是Y的子序列,记录找到的最长的子序列。X对应下标人格集合{1,2,3……m}的一个子集,那么X的子序列就有2^m个。
但其实LCS是具有最优子结构的:
令X={x1,x2,x3……xm}, Y={y1,y2,y3……yn}。Z={z1,z2,z3……zk}为X和Y的任意LCS.则有:
(1)如果xm=yn, 则zk = xm = yn,且Zk-1是Xm-1与Yn-1的LCS.
(2)如果xm!=yn,则zk!=xm意味着Zk-1是Xm-1与Y的LCS
(3)如果xm!=yn