LCS(最长公共子序列) - 获得最佳K解决方案

时间:2017-11-05 09:55:57

标签: lcs

LCS问题得到两个字符串并返回其最长的公共子序列。

例如:

字符串上的LCS: elephant eat 为3,因为整个字符串 eat elephant中的子序列 - 指数0,6,7或2,6,7

另一个例子:

字符串上的LCS: elephant olives 为2,因为它们最常见的子序列是 le

问题是,是否有一种算法不仅能够返回最优解,而且能够返回K个最佳解?

1 个答案:

答案 0 :(得分:0)

有一种算法可以返回所有最佳解决方案(我想这就是你提出的问题)。

Wikipedia中一样:

对两个字符串使用动态编程算法,构造表,然后递归地从末尾回溯到开头,增加的计算如果(i,j-1)或(i-1,j)中的任何一个可能是当前点之前的点,然后探索两条路径。这导致最坏情况下的指数计算。

在最坏的情况下,这些最佳序列可能存在一定数量的指数!