3

Задача: Я знаю тривиальное редактирование расстояния и вычисление DP в O (mn) для 2 строк размером n и m соответственно. Но я недавно узнал, что если нам нужно только вычислить минимальное значение расстояния редактирования f и оно ограничено | f | < = s, то мы можем вычислить его в O (min (m, n) + s^2) или O (s * min (m, n)) [wikipedia] time.Быстрый алгоритм дистанции редактирования

Пожалуйста, объясните формулировку dp за ней, если это основано на DP или объясните алгоритм.

Посмотрите на improved algorithm разделе ссылки :http://en.wikipedia.org/wiki/Edit_distance.

еще одна ссылка о Улучшен алгоритм Укконена http://www.berghel.net/publications/asm/asm.php

Спасибо заранее.

ответ

10

Вы можете рассчитать расстояние редактирования в O (мин (п, т) * s) время использования следующей простой идеи:

Рассмотрим I-й строки в DP-таблице.

Итак, если мы знаем, что ответ < = s, то мы интерстируем в ячейках с координатами (i, i - s), (i, i - s + 1), ..., (i, i + s). Потому что в других клетках ответит строго больше, чем s.

Например, предположим, что мы знаем, что изменить расстояние между «abacaba» и «baadba» меньше 3.

DP-table for this strings

Таким образом, мы можем пропустить красные клетки, потому что они имеют значение больше, чем с ,

Асимптотика алгоритма O (min (n, m) * s), поскольку мы вычисляем s-клетки слева и справа от основной диагонали.

+1

, но каждая запись (i, j) таблицы зависит от (i-1, j-1), (i-1, j), (i, j-1) записей. Как вы находите записи (5,2), (4,1) и т. Д. Таблицы в общем случае, когда a [i]! = B [j] (0 проиндексировано)? – v78

+2

Если какая-либо клетка зависит от эритроцитов, мы можем предположить, что красная ячейка имеет значение s. Конечно, с помощью этого алгоритма мы не можем правильно вычислить все значения. Важный факт, что этот алгоритм корректно вычисляет все ячейки со значением не более, чем s. Из-за этого мы можем найти расстояние редактирования (потому что мы знаем, что это не более, чем s). –

+1

Можете ли вы дать некоторые ссылки на эту идею. – v78