Nein. Wenn die 3-SAT-Instanz über Klauseln verfügt, können Sie die Erfüllbarkeit in O ( m 2 N ) -Zeit testen . Da N eine feste Konstante ist, ist dies ein Polynom-Zeit-Algorithmus, der alle Instanzen Ihres Problems löst.mO(m2N)N
Der Algorithmus arbeitet in Stufen. Sei φ i die Formel bestehend aus den Sätzen, die nur Variablen aus x 1 , … , x i verwenden . Sei S i ⊆ { 0 , 1 } n die Menge von Zuordnungen zu x i - N , x i - N + 1 , ... , x i , die zu einer befriedigenden Zuordnung für φ i erweitert werden können . Beachten Sie, dass bei Smφix1,…,xiSi⊆{0,1}nxi−N,xi−N+1,…,xiφi , so können wir S i inO( 2 N )Zeitberechnen: für jedeSi−1SiO(2N) versuchen wir beide Möglichkeiten für x i und prüfen, ob es erfüllt alle Klauseln von φ i , die die Variable x i enthalten ; wenn ja, addieren wir ( x i - N , …(xi−N−1,…,xi−1)∈Si−1xiφixi bis S i. Im i- ten Stadium berechnen wir S i . Sobald wir alle fertig sind m Stufen, ist die 3-SATInstanz erfüllbarwenn und nur wenn S m & ne; ∅ . Jede Etappe dauert(xi−N,…,xi)SiiSimSm≠∅ Zeit und es gibt m Stufen, sodass die Gesamtlaufzeit O ( m 2 N ) beträgt. Dies ist in der Größe der Eingabe polynomisch und bildet somit einen Polynom-Zeit-Algorithmus.O(2N)mO(m2N)
Selbst wenn Sie zulassen, dass eine feste Anzahl von Klauseln gegen die Einschränkung verstößt, kann das Problem in polynomieller Zeit gelöst werden. Insbesondere wenn die Anzahl der Klauseln zählt, die die Bedingung verletzen, können Sie das Problem in O ( m 2 ( t + 1 ) N ) lösen , indem Sie zuerst alle möglichen Werte für die Variablen in diesen Klauseln auflisten und dann fortfahren der Algorithmus oben. Wenn t eine feste Konstante ist, ist dies die Polynomzeit. Möglicherweise gibt es effizientere Algorithmen.tO(m2(t+1)N)t