我很难理解为什么多个字符串(k> 2)的最长公共子序列问题是NP-Hard。我知道两个长度为l1,l2的字符串的LCS问题可以在O(l1 * l2)时间内求解。我的问题是为什么我们不能一次找到两个字符串的LCS,例如:
LCS(abcd,ad,abc)= LCS(LCS(abcd,ad),abc)= LCS(ad,abc)= a
该算法对k个字符串采用O(k * Max_length ^ 2)。为什么这是错的?
答案 0 :(得分:6)
LCS(x,y,z)= LCS(x,LCS(y,z))通常不正确。例如:
LCS(bb,aaabb,bbaaa)= bb
LCS(bb,LCS(aaabb,bbaaa))= LCS(bb,aaa)≠bb