Entschuldigung für die Beantwortung eines alten Beitrags.
Ich habe darüber nachgedacht und ich denke, dass das Problem mit einem festen Alphabet auch NP-vollständig ist.
Ich werde das positive 1-in-3-SAT auf dieses Wortproblem reduzieren
Gestern hatte ich Probleme mit Ideen zur Lösung des Problems. Ich hatte Probleme, jede Variable anders zu machen, bis ich mir die Frage noch einmal ansah und feststellte, dass Sie Quadrate mit gepflanzten Symbolen zulassen. Dies vereinfachte die Reduzierung erheblich. Meine andere Idee war, Wörter unterschiedlicher Länge für jede unterschiedliche Variable zu haben.
DIE REDUZIERUNG
Jetzt werde ich die Gadgets beschreiben, die wir verwenden werden:
Variables Gadget
Wir kennzeichnen jede Variable mit einem anderen numerischen Index und haben für jede Variable eine andere Nummer. Wir wählen den größten Index und stellen die Zahl in Binärform dar. Wir nennen diese Binärkette .n
Dann erstellen wir zwei verschiedene vertikale Wörter für jede Variable. Alle Wörter haben eine Länge von(Nur wenn wir doppelte Wörter in der Liste der Wörter zulassen), wobeiist die Länge der Binärkette .3+|n||n|n
Der größte Index sei beispielsweise die Zahl . Wenn wir diese Zahl in Binär umwandeln, erhalten wir die Kette in Binär, diese Kette hat eine Länge von drei. In diesem Beispiel hat jedes variable Wort eine Länge von .41006
Jetzt erstellen wir zwei verschiedene Wörter für jede Variable. Ein Wort hat das Symbol am Anfang, dann das Symbol unten, dann eine binäre Kette, die den Index der Variablen darstellt, und wir füllen die Kette mit Nullen auf, so dass sie dieselbe Länge hat wie die Kette und schließlich das Symbol Am Ende. Natürlich können die Symbole geändert werden.32n3
Das andere Wort ist fast dasselbe, aber es wird das Symbol anstelle des Symbols .43
Der größte Index sei beispielsweise die Zahl . Wir werden die folgenden zwei Wörter für die Variable mit Index :41
320013 und420014
Wie wir sehen, haben wir die binäre Darstellung der Zahl mit Nullen aufgefüllt, so dass sie eine Länge von1|n|
Wir müssen diese Wörter viele Male kopieren, wir benötigen eine Kopie jedes Wortes für jedes Auftreten einer Variablen in der SAT-Instanz. Dadurch werden Duplikate in der Liste der Wörter erstellt. Wir können die Duplikate entfernen, indem wir der Binärkette eine weitere Binärkette hinzufügen, die die Variable eindeutig identifiziert. Diese neue Kette identifiziert jedes Auftreten einer Variablen eindeutig.
Dazu weisen wir einfach jedem Auftreten der Variablen eine andere Binärkette zu und setzen diese Kette am Ende der Binärdarstellung der Variablen frei.
Um diese neue Binärkette zuerst zu erstellen, müssen wir für jede Variable einen anderen Index erstellen. Wir nennen die größte Zahl in jedem Index wobeiniini|ni||ni|
Dadurch werden Duplikate in den variablen Wörtern entfernt.
x2
32010013 4201001432010103 4201010432010113 42010114
Klausel-Gadget
6
535354535453545353
435
mm|m||m|. Wir hängen jede Binärkette an die Klauselwörter an, die zur Klausel gehören.
Nun sehen wir uns ein Bild eines Klausel-Gadgets an der Tafel an:
(x2∨x3∨x4)(x1∨x2∨x3)∧(x2∨x3∨x4)
4
Wenn wir keine Duplikate in der Wortliste zulassen, müssen wir das Bild ändern.
5b5b5b10
b201010bb201110bb21001b
b
Siehe ein Beispiel:
Gadget mit variabler Konsistenz
Dies ist ein Gadget, das sicherstellt, dass der Player nur allen Literalspalten einer Variablen denselben Wert zuweisen kann.
Wir werden für jede Variable ein neues Gadget haben
Wir werden zwei neue Wörter für jedes Gadget erstellen.
2∗kkx263 k64 k
x2
63636464
Wenn Sie wiederholte Wörter vermeiden möchten, beachten Sie, dass jedes Konsistenz-Gadget zu einer anderen Variablen gehört. So können wir die Binärkette, die jede Variable identifiziert, an die beiden Wörter anhängen, die wir für dieses Gadget erstellt haben.
Sehen wir uns nun ein Beispielbild dieses Gadgets an:
x2(x1∨x2∨x3)∧(x2∨x3∨x4)
3434. Wir können das verbleibende Wort dieses Gagdet in die andere Zeile setzen
Wenn wir keine Duplikate in der Liste der Wörter zulassen, lauten die Wörter im Beispielbild wie folgt:
Für die Zeilen:
6b6b0106b6b010
Für die Spalten:
b201001bb201010b
b
Siehe ein Beispiel:
Klausel-Dump-Gadget
Dies ist ein Gadget, das zum Platzieren der nicht verwendeten Klauselwörter erstellt wurde. Dazu müssen wir nur zwei Zeilen für jedes Klauselwort in einen leeren Teil der Tafel einfügen. Diese Zeilen sind mit keiner anderen Zeile oder Spalte verbunden.
Damit beenden wir die Reduktion, da wir behaupteten, wir brauchen nur 6 Symbole für die Reduktion.
Beispiel
Wenn die vorherige Erklärung verwirrend war, ist hier ein Beispielbild einer Instanz von positivem 1: 3-SAT, die auf dieses Wortproblem reduziert wurde:
Wenn wir wiederholte Wörter nicht zulassen:
Die Instanz, die reduziert wurde, ist:
(x1∨x2∨x3)∧(x2∨x3∨x4)
Ich denke, die folgende Reduktion vom gerichteten Hamilton-Pfad funktioniert:
Um die Treppe zu füllen, können jetzt nur Scheitelpunktwörter in die Schritte eingefügt werden. Um zwei Scheitelpunkte zu verbinden, muss ein Kantenwort zwischen ihnen eingefügt werden, das einer vorhandenen Kante im Diagramm entspricht. Die nicht verwendeten Kanten können in den zweiten Teil der Platine gelegt werden. Die zweite Richtung ist trivial.
Ich denke, das funktioniert (der von mir skizzierte Korrektheitsnachweis ist bestenfalls von Hand gewellt, aber immer noch).
quelle