Algorithmen für das Erfüllbarkeitsproblem SAT Melanie Schmidt Proseminar „Ergänzende Kapitel zu DAP2“ Literatur: Schöning, Uwe – Algorithmik Inhalt • kurze Einführung • 2-SAT • K-SAT – Ein deterministischer Algorithmus – Zwei probabilistische Algorithmen • Schlussbemerkungen 3/43 Das Erfüllbarkeitsproblem K-KNF-SAT Variablen x1,x2,x3,x4,x5,x6 n = Anzahl der Variablen = 6 ( x3 ¬x2 x5 ) ( ¬x1 ) ( x1 ¬x2 x3 ¬x4 x6 ) Klausel Problem für 5-SAT 4/43 Das Erfüllbarkeitsproblem K-KNF-SAT Also: • Gegeben ist eine Menge von Klauseln mit jeweils bis zu k Literalen • Eine Klausel hat die Form (u1 u2 … ul), l k, wobei ui {x1,…,xn} {¬x1,…,¬xn} • Gesucht: Eine Belegung der Variablen x1,… ,xn mit Wahrheitswerten {0, 1}, so dass die Auswertung der Formel 1 ergibt. 5/43 2-SAT Algorithmus in polynomieller Zeit 2-SAT Algorithmus • (¬x3 ) ¬x(x (x x32)x(¬x (¬x ¬x12 ) ¬x(x (x x13) x1 ) 3)2 3) 1 2)3 • (a) = (a a) • (a b) = (¬a b) (a b) = (¬b a) X1 X2 X3 ¬X1 ¬X2 ¬X3 7/43 2-SAT Algorithmus • Eine 2-KNF-Formel ist unerfüllbar im Graphen GF existiert ein Zyklus der Form xi … ¬xi … xi 8/43 Zyklus mit xi und ¬xi F unerfüllbar • Annahme: Es gibt eine erfüllende Belegung a. Dann muss für a gelten, dass xi=1 und xi =0. Das ist ein Widerspruch. 9/43 F unerfüllbar Zyklus mit xi und ¬ xi • Beweis mit Induktion über n: - n=1. - F muss die Form (x1) (¬x1) haben GF hat einen Zyklus. X1 ¬X1 - n-1n. - Wähle beliebiges x aus {x1,…,xn}. - Bilde Fx=0 und Fx=1 GFx=0 und GFx=1 enthalten Zyklen mit xk und ¬xk - Zeige, dass daraus folgt: GF enthält einen Zyklus mit xi und ¬xi 10/43 GF enthält einen Zyklus mit xi und ¬xi • Trivial: Einer der Zyklen aus GFx=0 und GFx=1 ist auch in GF enthalten x y y ¬x ¬y ¬y • Sonst: Zeige, dass es in GF die Verbindungen ¬x … x und x … ¬x gibt es existiert ein Zyklus mit x und ¬x 11/43 Pfade in GF • ¬x … x in GF – F enthält (x) – F enthält (x z) • GF enthält ¬x z und ¬z x • Fx=0 enthält nur (z) • der Zyklus in GFx=0 enthält ¬z z, GF enthält ¬z z nicht x z ¬x ¬z in GF gibt es ¬x z … ¬z x • x … ¬x in GF 12/43 – Analog mit (¬x) sowie Fx=1 und GFx=1 z ¬z Zyklen mit x und ¬x finden • als APSP – Problem – mit unendlichen Kosten für nichtvorhandene Kanten – für alle x überprüfen: (x,¬x) und (¬x,x) < ? – Laufzeit O(n3) • mit Tiefensuche – in stark zusammenhängende Komponenten zerlegen – O(m), m=Anzahl der Klauseln 13/43 Algorithmen für K-SAT Laufzeit O(cn) K-SAT • wahrscheinlich nicht in Polynomialzeit entscheidbar • in Laufzeit O(2n) entscheidbar: – Durchlaufe alle 2n möglichen Belegungen der n Varialben – Teste für jede Belegung, ob die Formel erfüllt ist • Ziel: Algorithmus mit Laufzeit O(an) mit möglichst kleinem a finden 15/43 Deterministischer Algorithmus Monien-SpeckenmeyerAlgorithmus Monien-SpeckenmeyerAlgorithmus (1985) • F1=(¬x1) (x1) (x2 x3 x4 x5) … x1=0 oder x1=1 F1*=() (x2 x3 x4 x5) … trivialerweise unerfüllbar • F2=(x1) (x1 x2 ¬x3) ( x1 ¬x2) (x1 x3) x1=1 F2*= 1 trivialerweise erfüllbar 17/43 Monien-SpeckenmeyerAlgorithmus (1985) • Kürzeste Klausel (l1.........lm) wählen • m rekursive Aufrufe: – l1=l2=..=li-1=0, li=1 setzen, Formel vereinfachen – Rekursiv aufrufen • F wahr -> Programm beenden • F falsch -> Prozedurdurchlauf beenden 18/43 Monien-SpeckenmeyerAlgorithmus (1985) x1=1 x2=1 x2=0, x3=1 x1=0, x2=1 x3=1 x1=0, x2=0, x3=1 k=3 n=3 x3=1 (x1 x2 x3) (x1 x2 ¬x3) (x1 ¬x2 x3) (x1 ¬x2 ¬x3) (¬x1 x2 x3) (¬x1 x2 ¬x3) (¬x1 ¬x2 x3) (¬x1 ¬x2 ¬x3) Monien-SpeckenmeyerAlgorithmus (1985) x1=1 x2=1 x3=1 x2=0, x3=1 x1=0, x2=1 x1=0, x2=0, x3=1 x3=1 T(n-1) T(n-2) T(n-3) • T(n) = max. Anzahl von Blättern • T(n) = T(n-1)+T(n-2)+T(n-3) • Maβ für die Laufzeit? k=3 n=3 20/43 Monien-SpeckenmeyerAlgorithmus (1985) • T ’(n) = T ’(n-1)+T ’(n-2)+T ’(n-3)+1 k=3 n=3 • T(n) = T(n-1)+T(n-2)+T(n-3) • Ansatz T(n) = can • T(n) = O(1,8393n) 21/43 Monien-SpeckenmeyerAlgorithmus (1985) k=3 n=4 Hier ist die Anzahl der inneren Knoten größer als die der Blätter! 22/43 Monien-SpeckenmeyerAlgorithmus (1985) • T ’(n) = T ’(n-1)+T ’(n-2)+T ’(n-3)+1 T(n) = T(n-1)+T(n-2)+T(n-3) • Abschätzung: T ‘(n) < 3T(n) – 1 • T(0) = 1, T(1) = 1, T(2) = 2 • T ‘(0) = 1, T ‘(1) = 2, T ‘(2) = 4 • T ‘(n+1) = T ‘(n) + T ‘(n-1) + T ‘(n-2) + 1 < 3T(n) -1 + 3T(n-1) -1 + 3T(n-2) -1 + 1 = 3T(n) +3T(n-1) + 3T(n-2) - 2 = 3T(n+1) – 2 < 3T(n+1) -1 23/43 Monien-SpeckenmeyerAlgorithmus (1985) • Allgemein: • T(n) T(n-1) + T(n-2)+ … + T(n-k) • T(n) = O(akn), und für ak gilt: • akk = akk-1 + akk-1 + … + ak0 k ak 3 4 5 6 7 8 1,8393 1,9276 1,9659 1,9836 1,9920 1,9961 24/43 Monien-SpeckenmeyerAlgorithmus (1985) • (¬x1 x2 x4) (x1 ¬x2 x3) (x3 ¬x4) (x3 x4 x5) x1=0 x2=0 (x3 ¬x4) (x3 x4 x5) Autarke Belegung 25/43 Monien-SpeckenmeyerAlgorithmus (1985) • Kürzeste Klausel (l1.........lm) wählen • Eine der Belegungen l1=...=li-1=0, li=1 autark mit vereinfachter Formel aufrufen • m rekursive Aufrufe: – l1=l2=..=li-1=0, li=1 setzen, Formel vereinfachen – Rekursiv aufrufen • F wahr -> Programm beenden • F falsch -> Prozedurdurchlauf beenden 26/43 Monien-SpeckenmeyerAlgorithmus (1985) • T(n) = max(T(n-1), T ’’(n-1) + ... + T’’(n-k)) • T ’’(n) = max(T’’(n-1), T ’’(n-1) + ... + T’’(n-k+1)) • Maximum jeweils im 2. Fall • T ’’(n) = T’’(n-1)+…+T ’’(n-k+1) • T ’’(n) = O(akn) k ak 3 4 5 6 7 8 1,6180 1,8393 1,9276 1,9659 1,9836 1,9920 27/43 Probabilistische Algorithmen Paturi-Pudlák-Zane-Algorithmus Paturi-Pudlák-ZaneAlgorithmus (1997) • Algorithmus: – Belegung mit Hilfe von Zufall finden – Testen, ob diese die Formel erfüllt • Algorithmus t-mal wiederholen: – Fehlerwahrscheinlichkeit unterschreiten 29/43 Paturi-Pudlák-ZaneAlgorithmus (1997) • Belege Variable xi: – wenn (xi) Klausel, xi = 1 – wenn (¬xi) Klausel, xi = 0 – Sonst wähle xi zufällig aus {0,1} • Reihenfolge zufällig permutieren 30/43 Paturi-Pudlák-ZaneAlgorithmus (1997) • Wahrscheinlichkeit, erfüllende Belegung zu finden: p 2-n • Fehlerwahrscheinlichkeit bei t Wiederholungen: q = (1-p)t e-tp • t ln(1/) / p O(n/p) 31/43 Paturi-Pudlák-ZaneAlgorithmus (1997) • (x1 ¬x2 ¬x3) (x2) (x3) • erfüllt durch x1=x2=x3=1 • Kritische Variable: nur ein Literal einer Klausel ist wahr • In der Permutation als Letze ihrer Klausel Wert der kritischen Variable bekannt 32/43 Paturi-Pudlák-ZaneAlgorithmus (1997) • r(a,): – ist eine Permutation – a ist erfüllende Belegung – Anzahl der kritischen Variablen, die in Letzte ihrer Klauseln sind • p 2-n+r(a,) 33/43 Paturi-Pudlák-ZaneAlgorithmus (1997) • p 2-n+r(a,) • p 2–n(1-1/k) • Komplexität 2n(1-1/k) = O(akn) k ak 3 4 1,5875 1,6818 5 6 7 8 1,7412 1,7818 1,8115 1,8341 34/43 Probabilistische Algorithmen Ein random-walk Algorithmus Random-Walk (Schöning, 1999) • Zufällige Anfangsbelegung a* • Erfüllende Belegung a • Hammingabstand zwischen a und a*: Anzahl der Variablen, in denen sich a und a* unterscheiden • random-walk-Schritt: – Zufällige nicht erfüllte Klausel wählen – Zufälliges Literal ändern 36/43 Random-Walk (Schöning, 1999) n n 2 j S 1/ 16 0 4/ 16 6/ 16 4/ 16 1/ 3 1/ 3 1/ 3 1 2/ 3 2 2/ 3 3 1/ 16 1/ 3 2/ 3 4 1/ 3 2/ 3 5 1/ 3 2/ 3 6 für Anfangszustand j 1/ 3 2/ 3 … • random-walk-Schritte – Alle Klauseln kritisch – Zustandsnummern können > n sein 37/43 Random-Walk (Schöning, 1999) • 3n random-walk-Schritte • Zu Beginn: Zustand j n • i Schritte in die falsche Richtung j + i Schritte in die richtige • w = Anzahl solcher Wege • Wahrscheinlichkeit, aus Zustand j den Zustand 0 zu erreichen: k 1 c w k i 0 j j i i j 1 1 k k 1 j 38/43 Random-Walk (Schöning, 1999) Wahrscheinlichkeit, aus Zustand j den Zustand 0 zu erreichen n n j 2 c j 0 j n 1 1 k 1 2 1 c k 1 j j n Erfolgswahrscheinlichkeit 39/43 Random-Walk (Schöning, 1999) 1 1 k 1 p 2 n 1 t 2(1 ) k n • Laufzeit O(akn): k ak 3 4 5 1,3333 1,5 1,6 6 7 1,6667 1,7143 8 1,75 40/43 Schlussbemerkungen Aktueller Stand Aktueller Stand • Laufzeit 1,3302n: Verbesserung von des random-walkAlgorithmus (Hofmeister, Schöning, Schuler, Watanabe, 2001) • Laufzeit 1,324n: Kombination von random-walk und PaturiPudlák-Zane (Iwama,Tamaki,2003) 42/43 Algorithmen für das Erfüllbarkeitsproblem SAT Melanie Schmidt Proseminar „Ergänzende Kapitel zu DAP2“ Literatur: Schöning, Uwe - Algorithmik