Введение

В информационной теории и информатике расстояние Дамерау — Левенштейна (названное в честь Фредерика Д. Дамерау и Владимира И. Левенштейна) — это метрика для строк, используемая для измерения расстояния редактирования между двумя последовательностями. Неформально, расстояние Дамерау — Левенштейна между двумя словами — это минимальное количество операций (включающих вставку, удаление или замену одного символа, либо транспонирование двух соседних символов), необходимых для преобразования одного слова в другое. Расстояние Дамерау — Левенштейна отличается от классического расстояния Левенштейна тем, что, помимо трех классических операций редактирования одного символа (вставки, удаления и замены), допускает также транспозиции. Дамерау утверждал, что при исследовании опечаток для системы информационного поиска более 80% из них были вызваны одной ошибкой одного из четырех типов. В работе Дамерау рассматривались только опечатки, которые можно было исправить одной операцией редактирования. Изначально расстояние Дамерау — Левенштейна предназначалось для измерения расстояния между опечатками, допущенными человеком, с целью улучшения приложений, таких как средства проверки орфографии, однако оно также нашло применение в биологии для измерения вариаций между последовательностями белков.

Определение

Для выражения расстояния Дамерау — Левенштейна между двумя строками *s* и *t*, определяется функция *d*, значение которой является расстоянием между префиксом из *i* символов (начальной подстрокой) строки *s* и префиксом из *j* символов строки *t*. Функция ограниченного расстояния определяется рекурсивно как: более простая версия вычисляет так называемое оптимальное расстояние выравнивания строк или ограниченное расстояние редактирования, в то время как вторая вычисляет расстояние Дамерау — Левенштейна с соседними транспозициями. Добавление транспозиций значительно усложняет вычисления. Различие между двумя алгоритмами заключается в том, что алгоритм оптимального выравнивания строк вычисляет количество операций редактирования, необходимых для приведения строк к равенству при условии, что ни одна подстрока не редактируется более одного раза, в то время как второй алгоритм не имеет такого ограничения. Например, рассмотрим расстояние редактирования между CA и ABC. Расстояние Дамерау — Левенштейна LD(CA, ABC) = 2, поскольку CA → AC → ABC, но оптимальное расстояние выравнивания строк OSA(CA, ABC) = 3, потому что если использовать операцию CA → AC, то нельзя использовать AC → ABC, поскольку это потребовало бы редактирования подстроки более одного раза, что недопустимо в OSA, и поэтому кратчайшая последовательность операций — CA → A → AB → ABC. Следует отметить, что для оптимального расстояния выравнивания строк не выполняется неравенство треугольника: OSA(CA, AC) + OSA(AC, ABC) < OSA(CA, ABC), и, следовательно, это не является истинной метрикой.