Изменить расстояние с помощью свопов - PullRequest
3 голосов
/ 09 января 2012

Изменить расстояние определяет количество вставок, удалений или замен, необходимых для одной строки в другую.Я хочу также включить перестановки в этот алгоритм.Например, «apple» и «appel» должны дать расстояние редактирования 1.

Ответы [ 2 ]

5 голосов
/ 22 июля 2015

Расстояние редактирования, которое вы определяете, называется Расстояние Дамерау – Левенштейна . Вы можете найти возможные реализации на странице Википедии .

0 голосов
/ 09 января 2012

См. Алгоритм здесь.

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|
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...