Складність простору для обчислення оптимального вирівнювання рядків для відстані редагування Левенштейна


12

Якщо нам дано два рядки розміром і n 2 , то стандартний обчислення відстані редагування Левенштейна здійснюється за допомогою динамічного алгоритму з часовою складністю O ( n 1 n 2 ) і складністю простору O ( n 1 n 2 ) . (Деякі вдосконалення можуть бути внесені як функція відстані редагування d , але ми не робимо припущення щодо dн1н2О(н1н2)О(н1н2)ггособливо мало.) Якщо вас цікавить лише значення відстані редагування (тобто мінімальна кількість редагувань), добре відоме вдосконалення звичайного алгоритму (де ви зберігаєте лише попередній та поточний ряд таблиці таблиці вирівнювання ) зменшує складність простору до .О(макс(н1,н2))

Однак, якщо ви хочете отримати фактичні зміни оптимального сценарію редагування, чи можна краще використовувати використання пам'яті, можливо за рахунок часу роботи?О(н1н2)

Відповіді:


15

О(нм)О(н+м)

Інтуїтивно зрозуміла ідея Гіршберга - обчислити одну операцію редагування на півдорозі через оптимальну послідовність редагування, а потім рекурсивно обчислити дві половини послідовності. Якщо ми розглядаємо оптимальну послідовність редагування як шлях від одного кута таблиці запам'ятовування до іншого, нам потрібен модифікований повтор, щоб записати, де цей шлях перетинає середній рядок таблиці. Один з рецидивів, який працює, полягає в наступному:

Налf(i,j)={якщо i<м/2jякщо i=м/2Налf(i-1,j)якщо i>м/2 і Егiт(i,j)=Егiт(i-1,j)+1Налf(i,j-1)якщо i>м/2 і Егiт(i,j)=Егiт(i,j-1)+1Налf(i-1,j-1)інакше

Налf(i,j)Егiт(i,j)О(мн)Егiт(м,н)Налf(м,н)О(м+н)

введіть тут опис зображення

А[1.м]Б[1.н]А[1..м/2]Б[1..Налf(м,н)]А[м/2+1..м]Б[Налf(м,н)+1..н]

Т(м,н)={О(н)якщо м1О(м)якщо н1О(мн)+максгод(Т(м/2,год)+Т(м/2,н-год))інакше
Т(м,н)=О(мн)О(м+н)

5
Тому що я пропустив це, коли Дан попросив мене на моєму іспиті, саме тому.
Jeffε

я пам’ятаю, що це було як (керована) вправа і думав, що це досить круто
Сашо Ніколов

3

О(н1+н2)О(н1+н2)О(н1н2)О(н1+н2)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.