长串序列的成对比对

时间:2011-05-16 13:24:35

标签: algorithm alignment dynamic-programming

我想找到两个长(数万)字符串序列之间的全局最优(或接近最佳)成对对齐,但该算法应该在任何对象序列上运行。 我还想使用自己的距离函数实现来计算两个对象的相似性。对于较短的序列,我可以使用动态时间规整(DTW)算法,但DTW算法需要计算和存储n * m距离矩阵(n,m是序列的长度),这对于较长的序列是不可行的。你能推荐这样的算法吗?工作实施将是一个加号。

以下示例阐明了算法需要执行的操作:

Input:
Sequence A: i saw the top of the mountain
Sequence B: then i see top of the mountains

Result:    
Sequence A:      i saw the top of the mountain
Sequence B: then i see     top of the mountains

1 个答案:

答案 0 :(得分:2)

我不知道,如果我理解你的要求是正确的,但听起来就像你正试图解决Stable Marriage Problem。 Gale和Shapley在链接中的原始解决方案是在O(n * m)时间和O(n + m)空间,如果我的记忆对我有用。实施非常简单。 还有一些后来的解决方案有不同的问题变体。

您还可以尝试使用最大二分图匹配来解决此问题,例如: here,用于获得不同的最优性标准。这也可以在O(n * m)中完成。