SAT und DPLL - Universität Potsdam

Werbung
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
Herunterladen