为什么多个字符串NP-Hard的最常见子序列?

时间:2016-09-30 02:54:45

标签: string algorithm time-complexity np

我很难理解为什么多个字符串(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)。为什么这是错的?

1 个答案:

答案 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