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:
- Fügen Sie zunächst alle Klauseln in die Eingabeformel als Klauseln in die Ausgabeformel ein.
- Zweitens führen Sie drei neue Variablen F1 , F2 und F3 und fügen Sie der Ausgabeformel die folgenden drei Klauseln hinzu: (¬F1,F2,F3) , (F1,¬F2,F3) , und (F1,F2,¬F3) .
- Führen Sie schließlich für jede Variable x in der ursprünglichen Formel eine neue Variable x′ und fügen Sie der Ausgabeformel die folgenden zwei Klauseln hinzu: (x,x′,F1) und (¬x,¬x′,F1) .
Lassen Sie uns überprüfen, ob diese Reduzierung das tut, was wir wollen. Folgende Eigenschaften wollen wir:
- Jede Klausel hat immer drei verschiedene Variablen.
- Jede Variable kommt in einer Klausel positiv und in einer Klausel negativ vor.
- Die Eingabeformel entspricht der Ausgabeformel.
Eigenschaft 1 ist trivial zu überprüfen. Die Eigenschaft 2 ist ebenfalls leicht zu überprüfen: Die Variablen F1 , 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 Variablen F1 , 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.