Das Standardproblem 1-in-3-SAT (oder XSAT oder X3SAT) lautet:
Instanz : Eine CNF-Formel, bei der jede Klausel genau 3 Literale enthält.
Frage : Gibt es eine zufriedenstellende Zuweisungseinstellung, bei der genau 1 Literal pro Klausel wahr ist?
Das Problem ist NP-vollständig und bleibt schwierig, auch wenn keine Variable negiert auftritt. Ich frage mich, ob dieses Problem einfach wird oder schwierig bleibt, wenn jede Variable mindestens einmal positiv und mindestens einmal negativ auftreten muss .
Die übliche Reduktion von 3SAT, die zeigt, dass 1-in-3-SAT hart ist, ersetzt eine Klausel durch Klauseln ( ¬ x ∨ a ∨ b ) , ( y ∨ b ∨ c ) , ( ¬ z ∨ c ∨) d ) wobei a , b , c , dsind für jede Klausel frisch. Daher hilft diese Reduzierung nicht bei der Beantwortung meiner Frage. Ich hatte Probleme, ein Gadget zu entwickeln, das die Härte dieser Variante zeigt, denn wenn genau 1 Literal in einer Klausel wahr ist, sind nicht symmetrisch 2 Literale falsch. Wenn es sich als einfach herausstellt, könnte es sein, in Partitionen des Klauselsatzes zu denken, aber ich kann nicht sehen, wie.
quelle
Antworten:
In einem Kommentar zeigte OP Interesse an einer Reduzierung, die Instanzen mit 3 verschiedenen Variablen pro Klausel erzeugte. Hier ist ein einfacher Ansatz:
Die Reduzierung erfolgt von 1 zu 3 SAT mit 3 verschiedenen Variablen pro Klausel:
Lassen Sie uns überprüfen, ob diese Reduzierung das tut, was wir wollen. Folgende Eigenschaften wollen wir:
Eigenschaft 1 ist trivial zu überprüfen. Die Eigenschaft 2 ist ebenfalls leicht zu überprüfen: Die VariablenF1 , F2 und F3 treten jeweils positiv und negativ in den im zweiten Aufzählungspunkt hinzugefügten Klauseln auf, während jede andere Variable in der Formel sowohl positiv als auch negativ in den Klauseln vorkommt im dritten Aufzählungspunkt hinzugefügt.
Die Eigenschaft 3 ist weniger trivial, aber dennoch einfach. Sie können leicht argumentieren, dass die einzige Zuweisung für die VariablenF1 , F2 und F3 , die jede Klausel ab dem zweiten Aufzählungspunkt erfüllt, darin besteht, alle drei Fi s falsch zu machen. Unter der Annahme eines Wertes von false für F1 sind die im dritten Aufzählungspunkt hinzugefügten Klauseln (x,x′,F1) und (¬x,¬x′,F1) genau dann erfüllt, wennx′=¬x . Da es fürx′ keine anderen Einschränkungen gibt, bedeutet dies, dass es immer möglich ist, eine zufriedenstellende Zuordnung für die Eingabeformel in eine zufriedenstellende Zuordnung für die Ausgabeformel zu erweitern: Setzen Sie einfach jedesx′ als Negation des entsprechendenx und setzen Sie jedesFi zu falsch.
quelle