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