Ich suche nach einem Standardalgorithmus/-code (Java), der zwei Integer-Listen (alt und neu) vergleicht und eine dritte Ergebnisliste gibt, die Aktionen zur Umwandlung der 'alten' Liste in die 'neue' bietet ' Liste.Sequenzvergleich in Java
Zum Beispiel:
old-> 1, 2, 3, 4
new-> 9, 2, 3, 6, 4
so sollte das Ergebnis so etwas wie:
1-, 9+, 2, 3, 4-, 6+, 4+
hier das Suffix:
- = Deleted item from old list.
+ = New added item to old list.
und den Rest (w/o Suffix) , sind Zahlen, die unverändert sind (dh Wert sowie Index). Ich glaube, etwas mit der LCS (längste gemeinsame Sequenz) würde diesen Job erledigen! Aber ich kann nicht wirklich herausfinden, ob es welche gibt.
Alle Hinweise werden sehr geschätzt.
Hallo, Vielen Dank für Ihre Antwort. Es tut mir leid, aber ich kann nicht wirklich verstehen, wie man zu der Lösung gelangt. Was macht das Multi-Dimension-Array (d)? Wie bevölke ich es? Grundsätzlich, wie fange ich an, wenn alles, was ich habe, zwei flache Listen ist. – Abhishek
"d" ist das Array, das Lösungen für Teilprobleme enthält (d [i, j] = minimale Aktionen, die erforderlich sind, um a [0..i] in b [0..j] zu ändern, daher d [a.length, b.length ] wird die Lösung für das vollständige Problem sein). Wenn Sie mit LCS oder dynamischer Programmierung vertraut sind, sollte Ihnen das bekannt sein, ansonsten empfehle ich, den LCS-Abschnitt von Einführung in Algorithmen oder anderswo zu lesen. –