Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 为什么多个字符串的最长公共子序列是NP难的?_String_Algorithm_Time Complexity_Np - Fatal编程技术网

String 为什么多个字符串的最长公共子序列是NP难的?

String 为什么多个字符串的最长公共子序列是NP难的?,string,algorithm,time-complexity,np,String,Algorithm,Time Complexity,Np,我很难理解为什么多个字符串(k>2)的最长公共子序列问题是NP难的。我知道长度为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)。为什么这是错误的?LCS(x,y,z)=LCS(x,LCS(y,z))通常是不正确的。例如: LCS(bb,AAAB,bb

我很难理解为什么多个字符串(k>2)的最长公共子序列问题是NP难的。我知道长度为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)。为什么这是错误的?

LCS(x,y,z)=LCS(x,LCS(y,z))通常是不正确的。例如:

LCS(bb,AAAB,bbaaa)=bb

LCS(bb,LCS(AAAB,bbaaa))=LCS(bb,aaa)≠ bb


你的第一个等号错了:LCS(eeeabcd,eeead,abc)!=LCS(LCS(eeeabcd,eeead),abc)对于instanceLCS(eeeabcd,eeead)=eeead,LCS(eeead,abc)=a,哪个是正确的?