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 ( dla dowolnych ciągów , , , ).
Biorąc pod uwagę dwa ciągi i i całkowite i , chciałbym rozwiązać następujący problem:
- czy możesz przekształcić w przy użyciu co najwyżej tanich operacji i co najwyżej kosztownych operacji?
Pytania:
Czy ten problem ma nazwę? (Brzmi jak bardzo standardowe pytanie w kontekście wyrównania sekwencji).
Czy to trudne?
Jeśli jest trudny, czy jest możliwy do ustalenia parametr stały z jako parametrem?
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ą).
Próbowałem spojrzeć na metryki ciągów wymienione w Wikipedii , ale żadna z nich nie wyglądała dobrze.
źródło
Odpowiedzi:
źródło
źródło