1 / 43

Algorithmen für das Erfüllbarkeitsproblem SAT

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.

waylon
Download Presentation

Algorithmen für das Erfüllbarkeitsproblem SAT

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Algorithmen für das Erfüllbarkeitsproblem SAT Melanie Schmidt Proseminar „Ergänzende Kapitel zu DAP2“ Literatur: Schöning, Uwe – Algorithmik

  2. Inhalt • kurze Einführung • 2-SAT • K-SAT • Ein deterministischer Algorithmus • Zwei probabilistische Algorithmen • Schlussbemerkungen

  3. 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

  4. 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. 2-SAT Algorithmus in polynomieller Zeit

  6. 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

  7. 2-SAT Algorithmus • Eine 2-KNF-Formel ist unerfüllbar im Graphen GF existiert ein Zyklus der Form xi … ¬xi … xi

  8. 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.

  9. 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-1n. • Wähle beliebiges xaus {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. 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

  11. 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

  12. 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. Algorithmen für K-SAT Laufzeit O(cn)

  14. 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. Deterministischer Algorithmus Monien-Speckenmeyer-Algorithmus

  16. 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

  17. 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

  18. 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)

  19. 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)

  20. 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) = can • T(n) = O(1,8393n) k=3 n=3

  21. Monien-Speckenmeyer-Algorithmus (1985) k=3 n=4 Hier ist die Anzahl der inneren Knoten größer als die der Blätter!

  22. 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

  23. 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

  24. 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

  25. 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

  26. 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)

  27. Probabilistische Algorithmen Paturi-Pudlák-Zane-Algorithmus

  28. 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

  29. 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

  30. 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)

  31. 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

  32. 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,)

  33. 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)

  34. Probabilistische Algorithmen Ein random-walk Algorithmus

  35. 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. 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

  37. 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:

  38. Random-Walk(Schöning, 1999) Wahrscheinlichkeit, aus Zustand j den Zustand 0 zu erreichen Erfolgs-wahrscheinlichkeit

  39. Random-Walk(Schöning, 1999) • Laufzeit O(akn):

  40. Schlussbemerkungen Aktueller Stand

  41. 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)

  42. Algorithmen für das Erfüllbarkeitsproblem SAT Melanie Schmidt Proseminar „Ergänzende Kapitel zu DAP2“ Literatur: Schöning, Uwe - Algorithmik

More Related