Edytuj odległość za pomocą operacji przesuwania

13

Motywacja: Współautor redaguje manuskrypt i chciałbym zobaczyć jasne podsumowanie edycji. Wszystkie narzędzia podobne do „diff” są zwykle bezużyteczne, jeśli zarówno przenosisz tekst (np. Reorganizując strukturę), jak i edytujesz lokalnie. Czy to naprawdę takie trudne?


Definicje: Chciałbym znaleźć minimalną odległość edycji, gdzie dozwolone operacje to:

  • „tanie” operacje: dodaj / zmień / usuń pojedynczy znak (zwykłe operacje Levenshtein),

  • „drogie”: operacje: przenieś podciąg do nowej lokalizacji ( abcdacbd dla dowolnych ciągów a , b , c , d ).

Biorąc pod uwagę dwa ciągi x i y i całkowite k i K , chciałbym rozwiązać następujący problem:

  • czy możesz przekształcić x w y przy użyciu co najwyżej k tanich operacji i co najwyżej K kosztownych operacji?

Pytania:

  1. Czy ten problem ma nazwę? (Brzmi jak bardzo standardowe pytanie w kontekście wyrównania sekwencji).

  2. Czy to trudne?

  3. Jeśli jest trudny, czy jest możliwy do ustalenia parametr stały z jako parametrem?K

  4. Czy istnieją wydajne algorytmy aproksymacyjne? (Np znaleźć rozwiązanie z co najwyżej tani i 2 K kosztownych operacji, jeżeli rozwiązanie z k tanie i K kosztownych operacji istnieją).2k2KkK

Próbowałem spojrzeć na metryki ciągów wymienione w Wikipedii , ale żadna z nich nie wyglądała dobrze.

Jukka Suomela
źródło
3
Dla problemem jest Sortowanie według transpozycji. Patrz np. Web.cs.dal.ca/~whidden/HThesis07.pdf Nie napotkałem twojego problemu, ale wydaje się, że jest bardzo dobrze zmotywowany. k=0
Serge Gaspers,
4
Twardość NP problemu sortowania według transpozycji została udowodniona w 2010 roku, patrz Sortowanie według transpozycji jest trudne .
Marzio De Biasi,
3
Transpozycje są trudne, ale wstawienia i usunięcia nie. Jeśli zezwolisz, aby kosztowną operacją było albo usunięcie dowolnego podłańcucha, albo wstawienie dowolnego podłańcucha drugiego łańcucha, problem powinien stać się dość łatwy. Wynikowa odległość nie byłaby jednak symetryczna.
Jouni Sirén,
Bardziej interesuje mnie ciągliwość parametrów o ustalonych parametrach. Czy jest jakieś nowe odkrycie?
Yixin Cao

Odpowiedzi:

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|))

Jouni Sirén
źródło