Universität Potsdam Seminar: Automatic Problem Solving SAT und DPLL Falko Zander Überblick • Das SAT Problem: Einführung, Praxisbezug und aktuelle Algorithmen • Geschichtlicher Rückblick • Davis-Putman-Algorithmus (1960) • Davis-Logemann-Loveland-Algorithmus (1962) • Der aktuelle DPLL-Algorithmus • Beispiel • Fragen? 1 Das Erfüllbarkeitesproblem (Satisfiability: SAT) • Fragestellung: Ist eine aussagenlogische Formel erfüllbar? • Testen, ob gegebene Variablenbelegung die Formel erfüllt, ist in polynomieller Zeit möglich. • Finden einer Variablenbelegung ist nicht in polynomieller Zeit möglich. 2n Belegungen mit n Variablen Satz von Cook: SAT ist NP-vollständig • k-SAT: SAT-Problem mit max. k Literalen pro Klausel • alle NP-vollständigen Probleme sind auf SAT reduzierbar 2 SAT – Praxisbezug • In der Praxis: – Aktuell verfügbare SAT-Solver sind hoch optimiert und damit sehr effizient. – Schreibe einen Compiler, der ein beliebiges NP-vollständiges Problem nach SAT compiliert. – Löse das Problem mit einem SAT-Solver. 3 SAT – Algorithmen (1) • Laufzeit für k-SAT: O(2n): – Durchlaufe alle 2n möglichen Belegungen der n Variablen – Teste für jede Belegung, ob die Formel erfüllt ist – Ziel: Finde Algorithmus mit Laufzeit O(ak n) mit minimalem ak 4 SAT – Algorithmen (2) • Einige Algorithmen: – Monien-Speckenmeyer-Algorithmus (1985) a3 = 1, 6180; a8 = 1, 9920 – Paturi-Pudlak-Zane-Algorithmus (1997) a3 = 1, 5875; a8 = 1, 8341 – Random-Walk: Schöning (1999) a3 = 1, 3333; a8 = 1, 75 – Random-Walk: Hofmeister, Schöning, Schuler, Watanabe (2001) a3 = 1, 3302 – Random-Walk und Paturi-Pudlak-Zane: Iwama, Tamaki (2003) a3 = 1, 324 5 Ein geschichtlicher Rückblick • Leibnitz, Peano (um 1900): Mathematische Theoreme können computerisiert bewiesen werden. • Hilbert (um 1920): Das Finden eines Algorithmus, der entscheidet, ob eine gegebene Formel gültig ist oder nicht ist das zentrale Problem der mathematischen Logik. • Church, Turing: Dieser Algorithmus kann nicht existieren. • Später: Es gibt keine Entscheidungsprozedur aber Beweisprozeduren: Wenn eine Lösung existiert wird sie gefunden, andernfalls kommt der Algorithmus nicht zum Ende. • Wang, Gilmore: Erste lauffähige Programme. Exponentielle Laufzeit bezüglich der logischen Verknüpfungen/Klauseln. Nur für einfache Formeln. 6 Davis-Putman-Algorithmus (1960) • Für kompliziertere Formeln, normalerweise nicht exponentiell. • Gültige Formeln: Algorithmus terminiert und liefert einen Beweis für die Gültigkeit der Formel. • Nicht-gültige Formeln: Der Algorithmus läuft undefiniert ohne Ergebnis. • Der DP-Algorithmus war allen vorherigen Algorithmen überlegen. Der Algorithmus von Gilmore rechnete 21 Minuten auf einer IBM 704 ohne ein Ergebnis zu finden. Mit DP hatte man die Lösung nach 30 Minuten Handarbeit. 7 Definitionen X = {x1 , x2 , ..., xn } Variablen X = {x1 , x2 , ..., xn } negierte Variablen U = X ∪ X ∪ {⊥, >} Literale P = {p1 , p2 , ..., pn } Prädikate F = {f1 , f2, ..., fn } Funktionen Term: ui , f i xi ∈ {0, 1} u=u i = 1, 2, 3, ... t1 , t2 , ..., tn Terme ⇒ fi (t1, t2, ..., tn ) ist Term atomare Formel pi (t1 , t2 , ..., tn ) wohlgeformte Formel (w.f.f.): Atomare Formeln sind w.f.f. R w.f.f. ⇒ R, ∃ui .R, ∀ui .R sind w.f.f. R, S w.f.f. ⇒ R ∨ S, R ∧ S, R → S, R ↔ S sind w.f.f. Klausel: [] = ⊥ C = R1 ∨ R2 ∨ ... ∨ Rr = [R1 , R2 , ..., Rr ] Konjunktive Normalform (KNF): hi = > F = C1 ∧ C2 ∧ ... ∧ Cs = hC1 , C2 , ..., Cs i 8 Logische Korrektheit • Die Überprüfung, welche w.f.f. logisch korrekt sind, kann mittels Interpretationen“ durchgeführt wer” den. • Eine Interpretation bildet alle Variablen, Funktionen und Prädikatensymbole auf eine bestimmte Umwelt ab. In dieser Umwelt kann dann die logische Korrektheit bestimmt werden. • Eine w.f.f. R heißt gültig, wenn sie unter jeder Interpretation und mit allen Mengen von Argumenten aus der Umwelt den Wert 1 ergibt. • Eine w.f.f. R heißt konsistent oder erfüllbar, wenn sie für eine Interpretation mit einer Menge von Argumenten den Wert 1 ergibt. R ist inkonsistent, wenn es nicht konsistent ist. • R gültig ↔ R inkonsistent Um R zu beweisen, kann man also R widerlegen! 9 Normalformen • Eine w.f.f. ist in Prenex Normalform (PNF), wenn sie mit einer Sequenz von Quantoren beginnt, in welcher keine Variable mehr als einmal auftritt (genannt das Prefix ) und danach eine quantoren-freie w.f.f. folgt (genannt die Matrix ). ∀x1∃x2 ∀x7 ∃x2 .F (f (x3 ), f3 (x1 , x2 ), x5 ) • Ein System von Formeln kann in KNF transformiert werden, indem alle Teilformeln in KNF transformiert werden. Auf diese Weise kann sukzessive die KNF einer Formel berechnet werden: KN F = KN F ∧ KN F ∧ ... ∧ KN F (Vgl.: DN F ∧ DN F ∧ ... ∧ DN F 6= KN F ) • Zu jeder Formel gibt es eine PNF und eine KNF. • Ist die Matrix einer PNF in KNF, sind alle daraus generierten quantor-freien Zeilen in KNF. Um zu zeigen, dass F in KNF inkonsistent ist, muss nur gezeigt werden, dass C = ⊥ oder A ∧ B = ⊥ A, B, C sind Klauseln in F 10 Quantifizierte Aussagen • Der Existenzquantor einer PNF kann durch Funktionssymbole ersetzt werden, ohne die Konsistenz zu beeinträchtigen. ∀x1∃x2 ∃x3 ∀x4 ∃x5 .R(x1, x2 , x3 , x4, x5 ) ⇒ ∀x1∀x4 .R(x1 , f2 (x1 ), f3 (x1 ), x4 , f5 (x1 , x4 )) ∃x1∀x2 ∃x3 ∀x4 .M (x1 , x2 , x3 , x4 ) ⇒ ∀x2∀x4 .M (f1 , x2 , f3 (x2 ), x4 ) • Durch Entfernen des Allquantors entstehen quantor-freie Zeilen: ∀x1 ∃x2∀x3 .R(x1 , x2 , x3 ) ⇒ ∀x1∀x3 .R(x1 , f (x1), x3 ) ⇒ x2 = f (x1) = f x1 R(a, f a, a) R(a, f a, f a) R(f a, f f a, a) R(a, f a, f f f a) ... • Alle so erzeugten Zeilen sind in KNF. Die Formel nach n-Schritten lautet dann: Fn = R(a, f a, a) ∧ R(a, f a, f f a) ∧ ... und ist ebenfalls in KNF. 11 Zusammenfassung Jede quantifizierte Formel kann in PNF und deren Matrix in KNF transformiert werden. Durch Entfernen der Quantoren entstehen quantorfreie Zeilen, die ebenfalls in KNF sind. Die KNF der Gesamtformel ergibt sich durch Konjunktion der quantor-freien Zeilen ⇒ Quantifizierte Aussagen sind semi-entscheidbar, reine Aussagenlogik ist entscheidbar. Idee des DP-Algorithmus 1. Generiere (weitere) n quantor-freie Zeilen und erzeuge Fn durch Konjunktion. 2. Teste Fn auf Konsistenz (entscheidbar, da Aussagenlogik!). (a) Fn ist konsistent: ⇒ Schritt 1 (b) Fn ist inkonsistent: Algorithmus terminiert und Fn = ⊥ ⇒ F = ⊥ ⇒ F ist gültig. 12 DP: Regeln 1. Regel zum Löschen von 1-Literal Klauseln F, A, B, C: Formeln in KNF, a, b, c, p: Literale (a) F = A ∧ p ∧ B ∧ p ∧ C ⇒ F = ⊥ (b) F = p ∧ (p ∨ a) ∧ (p ∨ b ∨ c) ⇒ F = b ∨ c (c) F = p ∧ (p ∨ a) ∧ (p ∨ b ∨ c) ⇒ F = a (d) für (b) und (c): F = hi ⇒ F = > 2. Positiv-Negativ Regel (pure-literal rule) • Wenn ein Literal p in einer KNF F nur positiv oder nur negativ auftritt, dürfen alle Klauseln, die p enthalten, gelöscht werden. • resultierende KNF F 0 ist inkonsistent, genau dann wenn F inkonsistent ist (F 0 = ⊥ ⇔ F = ⊥) (F 0 = hi ⇒ F = >) 3. Regel zum Eleminieren von Literalen • F = (A ∨ p) ∧ (B ∨ p) ∧ C, p ∈ / A, B, C ⇒ F = ⊥ ⇔ ((A ∨ B) ∧ C) = ⊥ 13 DP: Algorithmus 1. Generiere quantoren-freie Zeilen und teste die Konjunktion aller erzeugten Zeilen wie folgt: 2. Wende Regel 1 an, solange möglich. F = hi ⇒ > 3. Wende Regel 2 an, wenn möglich. F = hi ⇒ > (a) Falls im Ergebnis 1-Literal Klauseln auftreten ⇒ Schritt 2 (b) Regel 2 anwendbar? ⇒ Schritt 3 4. Wende Regel 3 auf das erste Literal der ersten Klausel mit minimaler Länge an. (a) Wenn F 0 nicht mehr in KNF transformiert werden kann (weil jede Klausel ein negiertes und nicht-negiertes Literal enthalten würde) ⇒ F => (b) Sonst: Schritt 2 5. Durchlaufe Schritte 2-3-4 bis (a) F 0 = > ⇒ Schritt 1 (b) F 0 = ⊥ ⇒ Algorithmus terminiert Inkonsistenz kann ausschließlich in Schritt 2 auftreten. 14 Davis-Logemann-Loveland Algorithmus (1962) Der DP-Algorithmus wurde auf einer IBM 704 umgesetzt und getestet. Aus der gewonnenen Erfahrung konnten zwei Änderungen am ursprünglichen Algorithmus vorgenommen werden: 1. Die Regel 3 wurde durch die Regel 3* ersetzt Teilungsregel, (splitting rule): F = (A ∨ p) ∧ (B ∨ p) ∧ R = ⊥ ⇔ A ∧ R = ⊥ und B ∧ R = ⊥ Backtracking! 2. Die Prenex Normalform wurde durch andere Umformungen ersetzt. Der DLL-Algorithmus brachte wesentliche Verbesserungen: • weniger und kürzere Klauseln im Ausdruck; weniger doppelte oder redudante Klauseln • Rule 3* führt zu wesentlich mehr 1-Literal Klauseln (unit clauses) • Das Programm, welches Gilmore nicht in 21min lösen konnte, löste DLL in 2min. • Kapazität von 1.000 oder 2.000 quantor-freien Zeilen, anstatt 10 oder 20 bei DP. 15 Der heutige DPLL-Algorithmus (Unit Propagation und Backtracking) Es kommen Regel 1 (unit propagation) und Regel 3* (Backtracking) zum Einsatz. unit clause: Ein unit clause ist eine 1-Literal Klausel. F = hA, A ∨ Bi ↔ F = hAi F = hA, A ∨ Bi ↔ F = hA, Bi Auf diesem Weg können neue unit clauses entstehen, die weitere Vereinfachungen ermöglichen. ⇒ unit propagation Unit Clause Propagation: Γ: Menge von Klauseln, U : Menge von unit clauses /Γ ∀L ∈ U.L ∈ / Γ∧L∈ Unit-Propagation(Γ, U ) while there is a unit clause {L} in Γ U := U ∪ {L}; for every clause C ∈ Γ if L ∈ C then Γ := Γ\{C}; else if L ∈ C then Γ := Γ\{C} ∪ {C\{L}}; end for end while ⇒ Γ wird vereinfacht und U wächst ⇒ Γ ∪ U bleiben äquivalent zum Original 16 (Algorithmus) Γ: Menge von Klauseln, U : Menge von unit clauses ∀L ∈ U.L ∈ / Γ∧L∈ /Γ DPLL(Γ, U ) Unit-Propagation(Γ, U ); if ∅ ∈ Γ then return; if Γ = ∅ then exit with a model of U ; A := an atom occuring in Γ; DPLL(Γ ∪ {A}, U ); DPLL(Γ ∪ {¬A}, U ); (Beispiel) Γ = {¬p ∨ q, ¬p ∨ r, q ∨ r, ¬q ∨ ¬r} ⇒ DPLL liefert 2 Ergebnisse: [siehe: Quelle 6] E1 = {¬p, q, ¬r}; E2 = {¬p, ¬q, r}. 17 Gibt es Fragen? 18 Quellen 1. http://www8.informatik.uni-erlangen.de/IMMD8/ Lectures/THINF3/Folien0405/boole4.pdf 2. http://ls2-www.cs.uni-dortmund.de/lehre/ winter200304/dap2ergseminar/vortr/sat.ppt 3. http://www.cs.uni-potsdam.de/ti/lehre/ 05-Theorie-II/slides/ slides-5.1.pdf, slides-5.2.pdf, slides-5.3.pdf 4. http://www.cs.uni-potsdam.de/wv/lehre/ 05SS/05-Wissensrepraesent/slides/logic4.pdf 5. Davis, Putman: A Computing Procedure for Quantification Theory (1959) 6. http://www.cs.uni-potsdam.de/wv/lehre/Material/ KI/Folien/dpll4.ps 7. Davis, Logemann, Loveland: A Machine Program for Theorem-Proving (1962) 8. Moskewicz, Madigan, Zhao, Zhang, Malik: Chaff: Engineering an Efficient SAT Solver (2001) 19