Bleibt 1-in-3-SAT NP-hart, auch wenn jede Variable sowohl positiv als auch negativ auftritt?

9

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 , d(xyz)(¬xab)(ybc)(¬zcd)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.

Dominik Peters
quelle
Kann es auf 2 Sat reduziert werden?
Joshua Herman
4
Hinweis: für jede var , fügen Klauseln ( X i¯ X iW ) ( X i¯ X iY ) ( X i¯ X iZ ) und, sagen wir, ( W Y ) ¯ Z ) . Xi(XiX¯iW)(XiX¯iY)(XiX¯iZ)(WYZ¯)
Neal Young
Ha, das Werk (natürlich auch das Hinzufügen ). Ich werde die Frage offen lassen, falls jemand sie ohne den etwas unbefriedigenden Trick X i¯ X i lösen kann . (W¯Y.Z.)(W.Y.¯Z.)XiX¯i
Dominik Peters
3
Darf ich Sie ermutigen, eine vollständige Antwort auf Ihre eigene Frage zu schreiben, vielleicht basierend auf der Idee von Neal Young? (Übrigens bin ich mir nicht sicher, warum das "unbefriedigend" ist. Eine Reduzierung ist eine Reduzierung.)
DW
4
Wenn Ihnen dieser Sonderfall wirklich am Herzen liegt, ist es vielleicht sinnvoll, Ihre Frage zu bearbeiten, um diese zusätzliche Einschränkung widerzuspiegeln?
DW

Antworten:

2

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:

  1. Jede Klausel hat immer drei verschiedene Variablen.
  2. Jede Variable kommt in einer Klausel positiv und in einer Klausel negativ vor.
  3. 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.

Mikhail Rudoy
quelle