430 likes | 560 Views
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.
E N D
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
Das Erfüllbarkeitsproblem K-KNF-SAT Variablen x1,x2,x3,x4,x5,x6 n = Anzahl der Variablen = 6 x5 ( x3 ¬x2 ) ( ¬x1 ) ( x1¬x2 x3¬x4 x6 ) Klausel Problem für 5-SAT
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.
2-SAT Algorithmus in polynomieller Zeit
2-SAT Algorithmus • (¬x3) (x2 x3) (¬x1 ¬x2) (x3 x1) • (a b) = (¬a b) • (¬x3¬x3) (x2 x3) (¬x1 ¬x2) (x3 x1 ) • (a) = (a a) • (a b) = (¬a b)(a b) = (¬b a) X1 X2 X2 X3 X3 X3 ¬X1 ¬X1 ¬X2 ¬X3 ¬X3 ¬X3
2-SAT Algorithmus • Eine 2-KNF-Formel ist unerfüllbar im Graphen GF existiert ein Zyklus der Form xi … ¬xi … xi
Zyklus mit xi und ¬xiF 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.
X1 ¬X1 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. • n-1n. • Wähle beliebiges xaus {x1,…,xn}. • Bilde Fx=0 und Fx=1GFx=0 und GFx=1 enthalten Zyklen mit xk und ¬xk • Zeige, dass daraus folgt: GF enthält einen Zyklus mit xi und ¬xi
x y y ¬x ¬y ¬y GF enthält einen Zyklus mit xi und ¬xi • Trivial: Einer der Zyklen aus GFx=0 und GFx=1 ist auch in GF enthalten • Sonst: Zeige, dass es in GF die Verbindungen ¬x … x und x … ¬x gibt es existiert ein Zyklus mit x und ¬x
x z z ¬x ¬z ¬z 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 in GF gibt es ¬x z … ¬z x • x … ¬x in GF • Analog mit (¬x) sowie Fx=1 undGFx=1
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
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
Deterministischer Algorithmus Monien-Speckenmeyer-Algorithmus
Monien-Speckenmeyer-Algorithmus (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
Monien-Speckenmeyer-Algorithmus (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
Monien-Speckenmeyer-Algorithmus (1985) x1=0, x2=0, x3=1 x1=1 x1=0, x2=1 x2=0, x3=1 k=3 n=3 x2=1 x3=1 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) (x1 x2 x3) (x1 x2 ¬x3) (x1 ¬x2 x3) (x1 ¬x2 ¬x3) (¬x1 x2 x3) (¬x1 x2 ¬x3) (¬x1 ¬x2 x3) (¬x1 ¬x2 ¬x3) (x1 x2 x3) (x1 x2 ¬x3) (x1 ¬x2 x3) (x1 ¬x2 ¬x3) (¬x1 x2 x3) (¬x1 x2 ¬x3) (¬x1 ¬x2 x3) (¬x1 ¬x2 ¬x3) (x1 x2 x3) (x1 x2 ¬x3) (x1 ¬x2 x3) (x1 ¬x2 ¬x3) (¬x1 x2 x3) (¬x1 x2 ¬x3) (¬x1 ¬x2 x3) (¬x1 ¬x2 ¬x3) (x1 x2 x3) (x1 x2 ¬x3) (x1 ¬x2 x3) (x1 ¬x2 ¬x3) (¬x1 x2 x3) (¬x1 x2 ¬x3) (¬x1 ¬x2 x3) (¬x1 ¬x2 ¬x3) (x1 x2 x3) (x1 x2 ¬x3) (x1 ¬x2 x3) (x1 ¬x2 ¬x3) (¬x1 x2 x3) (¬x1 x2 ¬x3) (¬x1 ¬x2 x3) (¬x1 ¬x2 ¬x3) (x1 x2 x3) (x1 x2 ¬x3) (x1 ¬x2 x3) (x1 ¬x2 ¬x3) (¬x1 x2 x3) (¬x1 x2 ¬x3) (¬x1 ¬x2 x3) (¬x1 ¬x2 ¬x3) (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-Speckenmeyer-Algorithmus (1985) • T(n) = max. Anzahl von Blättern • T(n) = T(n-1)+T(n-2)+T(n-3) • Maβ für die Laufzeit? x1=0, x2=0, x3=1 x1=1 x1=0, x2=1 x2=0, x3=1 k=3 n=3 x2=1 x3=1 T(n-3) x3=1 T(n-2) T(n-1)
Monien-Speckenmeyer-Algorithmus (1985) • T’(n) = T’(n-1)+T’(n-2)+T’(n-3)+1 • T(n) = T(n-1)+T(n-2)+T(n-3) • Ansatz T(n) = can • T(n) = O(1,8393n) k=3 n=3
Monien-Speckenmeyer-Algorithmus (1985) k=3 n=4 Hier ist die Anzahl der inneren Knoten größer als die der Blätter!
Monien-Speckenmeyer-Algorithmus (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
Monien-Speckenmeyer-Algorithmus (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
Monien-Speckenmeyer-Algorithmus (1985) • (¬x1 x2 x4) (x1 ¬x2 x3) (x3 ¬x4) (x3 x4 x5) (x3 ¬x4) (x3 x4 x5) Autarke Belegung x1=0 x2=0
Monien-Speckenmeyer-Algorithmus (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
Monien-Speckenmeyer-Algorithmus (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)
Probabilistische Algorithmen Paturi-Pudlák-Zane-Algorithmus
Paturi-Pudlák-Zane-Algorithmus (1997) • Algorithmus: • Belegung mit Hilfe von Zufall finden • Testen, ob diese die Formel erfüllt • Algorithmus t-mal wiederholen: • Fehlerwahrscheinlichkeit unterschreiten
Paturi-Pudlák-Zane-Algorithmus (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
Paturi-Pudlák-Zane-Algorithmus (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)
Paturi-Pudlák-Zane-Algorithmus (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
Paturi-Pudlák-Zane-Algorithmus (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,)
Paturi-Pudlák-Zane-Algorithmus (1997) • p 2-n+r(a,) • p 2–n(1-1/k) • Komplexität 2n(1-1/k) = O(akn)
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
1 1 2 2 2 2 1 2 1 1 1 2 / / / / / / / / / / / / 3 3 3 3 3 3 3 3 3 3 3 3 S 1 4 6 4 1 / / / / / 16 16 16 16 16 … 1 / 3 0 1 2 3 4 5 6 Random-Walk(Schöning, 1999) für Anfangs-zustand j • random-walk-Schritte • Alle Klauseln kritisch • Zustandsnummern können > n sein
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:
Random-Walk(Schöning, 1999) Wahrscheinlichkeit, aus Zustand j den Zustand 0 zu erreichen Erfolgs-wahrscheinlichkeit
Random-Walk(Schöning, 1999) • Laufzeit O(akn):
Schlussbemerkungen Aktueller Stand
Aktueller Stand • Laufzeit 1,3302n: Verbesserung von des random-walk-Algorithmus (Hofmeister, Schöning, Schuler, Watanabe, 2001) • Laufzeit 1,324n: Kombination von random-walk und Paturi-Pudlák-Zane (Iwama,Tamaki,2003)
Algorithmen für das Erfüllbarkeitsproblem SAT Melanie Schmidt Proseminar „Ergänzende Kapitel zu DAP2“ Literatur: Schöning, Uwe - Algorithmik