Fehler
Zunächst habe ich in den Kommentaren einige Fehler gemacht: Sowohl die ursprüngliche Behauptung, die ich über das Verschachteln gemacht habe, als auch der Kommentar "korrigieren" (jetzt gelöscht) waren falsch, und separat meine Behauptung, dass das Ausprobieren aller möglichen Verschachtelungen eine optimale Lösung ergeben muss war auch falsch (ich gebe ein einfaches Gegenbeispiel unten). Zum Schluss mein Vorschlag zu setzenx+=zj und iterieren oder die Strahlensuche verwenden ist eigentlich auch nicht hilfreich: Welche Antwort auch immer dadurch erzeugt werden könnte und die Anwendung von Aryabhatas DP kann niemals besser sein als die Verwendung des Originals x+, da es lediglich die Größe des Lösungssatzes reduziert, aus dem der DP auswählen kann. Es tut uns leid! Hoffentlich enthält die verbesserte Version unten keine weiteren Probleme ...
Ich habe auch zwei Fehler in Aryabhatas DP bemerkt . Glücklicherweise können beide leicht repariert werden (siehe meine Kommentare zu diesem Beitrag).
Eine heuristische Lösung mit zufälligen Verschachtelungen
Wenn Sie nicht unbedingt die kürzeste Teilsequenz benötigen, können Sie die Tatsache verwenden, dass, wenn eine Zeichenfolge s ist eine Folge von einigen x−idann ist es auch eine Folge jeder möglichen Verschachtelung aller Stringsx−i. Drehen Sie dies um, wenns ist keine Folge einer bestimmten Verschachtelung aller Zeichenketten x−i, Dann ist es keine Folge von jedem einzelnenx−i.
Sie können also viele verschiedene Möglichkeiten ausprobieren, um das zufällig zu verschachteln n Saiten x−i in eine einzelne Zeichenfolge und für jede solche Verschachtelung yjSuchen Sie nach der kürzesten Folge zj von x+ das vermeidet, eine Folge von zu sein yjVerwenden Sie den netten DP-Algorithmus von Aryabhata für den Fall mit zwei Zeichenfolgen und wählen Sie den gewünschten auszj ist über alle von Ihnen versuchten Verschachtelungen am kürzesten.
Vorsichtsmaßnahme: Keine Garantie für Optimalität, auch wenn wir alle Verschachtelungen versuchen
Überraschenderweise (zumindest für mich) ist es nicht garantiert, dass Sie die optimale Lösung finden, selbst wenn Sie das obige Verfahren für alle möglichen Verschachtelungen wiederholen: Betrachten Sie den Fall, in dem x+=aaa, n=2, und x−1=x−2=a. Dannaa ist eine optimale Lösung mit Länge 2, aber die kürzeste Lösung, die durch Ausprobieren aller Verschachtelungen von gefunden wird x−1 und x−2 ist aaamit der Länge 3.