2010-09-20 149 views
4

我有两个字符串,必须对其进行相似性比较。该算法必须设计为找到最大相似度。在这种情况下,排序很重要,但插入(或缺失)的字符不会。由于各种原因,编辑距离在这种情况下不能使用。在字符串中查找部分子字符串

情况基本如下:

string 1: ABCDEFG 
string 2: AFENBCDGRDLFG 

产生的算法将找到的子串ABCDFG

我现在有一个递归解决方案,但因为这必须在大量运行的数据,任何改进将不胜感激

+2

你可以发布你当前递归解决方案的描述吗? – Ani 2010-09-20 03:19:31

+0

你有这种语言吗? – griegs 2010-09-20 03:21:24

+0

只是我,还是这个NP难? – 2010-09-20 03:21:35

回答

5

看看你的唯一例子,它看起来像你想找到最长的共同点子序列。 看看LCS

难道只是我,还是这个NP-hard? - 大卫Titarenco(来自评论)

如果你想LCS的任意数量的字符串它的NP-hard。但是它的输入字符串的数量是不变的(在这种情况下是2),这可以在多项式时间内完成。

+1

+1好回答:) – 2010-09-20 03:44:41

+1

这是不对的。根据OP的示例输入,它会返回'ABCDFG' – aaronasterling 2010-09-20 04:04:13

+0

@Aaron:您必须稍微修改一下算法以找到有助于答案的实际子字符串。但基本的想法仍然非常相似。 – codaddict 2010-09-20 05:23:38