sat

Werbung
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-1n.
- 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) = can
• 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
Herunterladen