Motivation : Bei der Entwicklung von Tools für die Datenversionierung haben wir uns schließlich mit Algorithmen zum "Unterscheiden" zweier Sätze von Ganzzahlen befasst, indem wir eine Folge von Transformationen entwickelt haben, die einen Satz von Ganzzahlen zum anderen führen. Wir konnten dieses Problem auf das folgende sehr natürliche Problem reduzieren, das Verbindungen zum Bearbeiten der Entfernung, zum Gruppieren durch Austauschen und zur minimalen gemeinsamen Zeichenfolgenpartition zu haben scheint .
Problem : Wir erhalten eine Zeichenfolge, dh eine Folge von Buchstaben, und unser Ziel ist es, sie zu minimalen Kosten zu homogenisieren . Das heißt, wir wollen eine neu angeordnete Sequenz, so dass alle Buchstaben, die gleich sind, nebeneinander liegen.
Die einzige Operation , die erlaubt ist, besteht darin, eine Teilfolge von Buchstaben aufzunehmen, die gleich sind, und diese Teilfolge irgendwohin zu verschieben, was mich 1 Einheit kostet.
Jede Hilfe, die die Komplexität dieses Problems charakterisiert, wäre sehr dankbar!
Beispiel :
- aabcdab: Eingabe
- bcd aa ab: Nach dem Verschieben des ersten aa in die Position direkt nach "d"
- b bcdaaa: Nachdem Sie das nachfolgende b in die erste Position gebracht haben
Da die resultierende Zeichenfolge homogen ist, haben wir Kosten von 2.
Beachten Sie, dass wir in Bezug auf die Ausgabe in keiner Weise eingeschränkt sind: Solange diese homogen ist, müssen wir keine bestimmte Reihenfolge sicherstellen.