编辑距离查找一个字符串到另一个字符串所需的插入,删除或替换次数。我想在此算法中包含交换。例如,“apple”和“appel”应该给出1的编辑距离。
答案 0 :(得分:5)
您定义的编辑距离称为 Damerau-Levenshtein距离。您可以在Wikipedia page上找到可能的实施方案。
答案 1 :(得分:-1)
请参阅此处的算法。
http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Dynamic/Edit/
您可以为交换,添加,删除提供不同的费用。
m[i,j] = min(m[i-1,j-1]
+ if s1[i]=s2[j] then 0 else cost_swap fi,
m[i-1, j] + cost_insert,
m[i, j-1] + cost_delete ), i=1..|s1|, j=1..|s2|