Изменить расстояние определяет количество вложений, удалений или замещений, необходимых для одной строки в другую. Я хочу также включить свопы в этот алгоритм. Например, «apple» и «appel» должны дать расстояние редактирования 1.Изменить расстояние с помощью свопов
2
A
ответ
-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|
4
Редактирование расстояние, которое вы определяете называется Damerau-Левенштейна. Вы можете найти возможные варианты реализации на Wikipedia page.
Ответы, на которые вы ответил, являются заменой не swaps. В моем примере, приведенном выше во второй строке, замена «el» дает «le» и, таким образом, соответствует первой строке –