我实现了一个python函数,该函数返回2个字符串的最长公共子序列。现在,我想实现一个函数,该函数返回任意数量的字符串中最长的公共子序列。

我发现了3个字符串的帮助:

dp[i, j, k] = / 1 + dp[i - 1, j - 1, k - 1] if A[i] = B[j] = C[k]
              \ max(dp[i - 1, j, k], dp[i, j - 1, k], dp[i, j, k - 1]) otherwise


但是我不太理解这个提示。
因此,如果有人可以帮助我,我将不胜感激。
最好的问候,马克

最佳答案

LCS问题是NPComplete,它具有字符串n的未绑定数目。意思是,没有已知的多项式算法能够解决这个问题。也意味着您可以删除DP解决方案:p

这是一个启发式方法的链接,用于近似多个字符串的LCS。

http://www.aaai.org/ocs/index.php/AAAI/AAAI10/paper/download/1559/2197

10-08 06:41