Відредагуйте відстань за допомогою операцій переміщення


13

Мотивація: співавтор редагує рукопис, і я хотів би побачити чіткий підсумок змін. Усі інструменти, що нагадують "різницю", як правило, марні, якщо ви обидва рухаєте текст (наприклад, переорганізовуєте структуру) та робите локальні зміни. Невже це так важко виправити?


Визначення: я хотів би знайти мінімальну відстань редагування, де дозволені операції:

  • "дешеві" операції: додавання / зміна / видалення одного символу (звичайні операції Левенштейна),

  • "дорого": операції: перемістіть підрядку на нове місце ( для будь-яких рядків a , b , c , d ).abcdacbdabcd

Враховуючи два рядки і y та цілі числа k і K , я хотів би вирішити наступну задачу:xykK

  • чи можете ви перетворити на y, використовуючи максимум k дешевих операцій і не більше K дорогих операцій?xykK

Запитання:

  1. Чи має ця проблема назва? (Це звучить як дуже стандартне запитання в контексті вирівнювання послідовностей.)

  2. Це важко?

  3. Якщо це важко, чи можна відслідковувати фіксований параметр з як параметр?K

  4. Чи існують ефективні алгоритми наближення? (Наприклад, знайдіть рішення з максимум дешевими та 2 K дорогими операціями, якщо існує рішення з k дешевими та K дорогими операціями.)2k2KkK

Я намагався подивитися на рядкові метрики, перелічені у Вікіпедії , але жодна з них не виглядала правильно.


3
При проблема полягає в сортуванні за транспозиціями. Дивіться, наприклад, web.cs.dal.ca/~whidden/HThesis07.pdf Я не стикався з вашою проблемою, але це здається дуже вмотивованим. k=0
Серж Гасперс

4
NP-твердість проблеми сортування за транспозицією була доведена в 2010 році, див. Сортування за транспозиціями складно .
Marzio De Biasi

3
Транспозіції важкі, але вставки та вилучення - ні. Якщо ви дозволяєте дорогою операцією бути або видаленням довільної підрядки, або вставкою будь-якої підрядки іншої рядки, проблема повинна стати досить простою. Однак відстань не була б симетричною.
Jouni Sirén

Мені цікавіше простежуваність фіксованого параметра. Чи є якісь нові відкриття?
Ісін Цао

Відповіді:



4

kak+ba,b0

xa+baAA[i,j]x[1i]y[1j]AdA[i1,j]A[i1,j1]A[i,j1]Ad[i1,j]A[i,j]Ad[i,j]O(1)

xAs

O(1)xO(|x|)As[i,j1]y[j]A[i,j]As[i,j]

zy[j]zAs[i,j1]xzzzy[j]xO(|z||z|)As[i,j]A[i,j|z|1]A[i,j1]zO(1)As[i,j]O(|z|)

O(min(|x||y|2,|x|2|y|))

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