有效地计算1个字符串和大量其他字符串之间的编辑距离?

时间:2014-03-14 23:30:33

标签: string algorithm edit-distance

用例是自动完成选项,我想根据它们的固定字符串排列大量其他字符串。

是否有任何像DFA RegEx这样的东西的混蛋可以比每个选项解决方案的开始做得更好?

this question的人似乎知道一个解决方案,但没有列出任何来源。

(p.s。“阅读此链接”类型答案欢迎。)

1 个答案:

答案 0 :(得分:2)

我最近做了类似的事情。不幸的是它是封闭源。

解决方案是写一个levenshtein automaton。剧透:这是一个NFA。

虽然很多人会试图说服你模拟NFA是指数级的,但事实并非如此。从NFA创建DFA是指数级的。模拟只是多项式。 Many regex engines are writen with sub-optimal algorithms based on this

对于n大小的字符串和m个状态,NFA模拟为O(n * m)。或者O(n)如果你懒惰地将它转换为DFA(并缓存它),则摊销。

我担心你要么必须处理复杂的自动机库,要么必须写很多代码(我做了什么)。