Статья Автор: Шкрум Софья

Идентичные строки

Рассмотрим задачу "Идентичные строки" из 5-ого модуля.

Для решения данной задачи воспользуемся двумерной матрицей, чтобы найти расстояние Левенштейна.
Расстояние Левенштейна, или редакционное расстояние — метрика cходства между двумя строковыми последовательностями.
Расстоянием метрика названа условно. Алгоритм помогает найти минимальное количество преобразований, чтобы превратить одну строку в другую, в частности те, в которых нужно убрать символ. Например, понадобится всего 2 шага, чтобы уравнять строки sea и eat (убирая t  и s). 

Первым делом создадим нулевую матрицу dp размером n * m, где n, m - длины исходных слов s1 и s2.


Пробегаясь по столбцам и строкам, заполним первый столбец матрицы числами от 0 до n, а первую строку - от 0 до m.
Это означает, что для преобразования пустой строки в строку длиной m (n) нужно соотвественно m (n) операций удаления.


Проходимся по всем ячейкам, начиная со второго столбца и второй строки. Если символы в ячейках совпадают, то расстояние редактирования не меняется, мы копируем ячейку dp[i-1][j-1] в ячейку dp[i][j].
Если символы не совпадают, то нужно выполнить одну из операций редактирования:

dp[i - 1][j]: Удалить символ из s1.

dp[i][j - 1]: Вставить символ в s1.

dp[i - 1][j - 1]: Заменить символ в s1 на символ из s2. Мы выбираем наименьшее из этих расстояний и увеличиваем его на 1, чтобы учесть выполненную операцию.


Искомое "расстояние" находится в последней ячейке матрицы.
Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать