将变形的琴弦列表匹配到正确的值

时间:2019-07-10 02:47:58

标签: algorithm

我有两个列表,每个列表包含50个名称。

两个列表之间存在1-1的对应关系:对于列表1中的每个名称x,列表2中x的拼写错误(或正确)。

如果我有列表1并得到了拼写错误的列表2,是否有可靠的算法可以将拼写错误的名称与拼写正确的名称相匹配?

例如

清单1: 衬套 奥巴马 特朗普

清单2: 突发 巴贝姆 流浪汉

2 个答案:

答案 0 :(得分:0)

首先,从每个拼写错误的单词到所有正确拼写的单词计算Levenshtein distance

然后,使用Gale-Shapley算法,您可以从拼写错误的单词到正确拼写的单词进行最佳配对。

在配对算法中,每个拼写错误的单词都会偏爱距离较短的正确拼写单词。

注意:在某些情况下,解决方案并非唯一。

答案 1 :(得分:-1)

最受欢迎的绝对是KMP,如果您需要快速的字符串匹配而又没有任何特殊的用例,那么就应该使用它。这是您的选择(具有时间复杂度):

蛮力O(nm)

Knuth–Morris–Pratt算法-O(n)

Rabin–Karp字符串搜索算法-O(m ^ 2)但Θ(n + m)

Boyer–Moore字符串搜索算法-O(mn)

Bitap算法-O(mn)

双向字符串匹配算法-O(n + m)