Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Aussagenlogik -- Verfahren zum Finden von Modellen

Ähnliche Präsentationen


Präsentation zum Thema: "Aussagenlogik -- Verfahren zum Finden von Modellen"—  Präsentation transkript:

1 Aussagenlogik -- Verfahren zum Finden von Modellen
Prof. Dr. Wolfram Conen, INTA, FH GE (c) W. Conen, Version 0.95

2 Formeln als Constraints
Wie kann man „gut“ Modelle finden? Gegeben sei eine Formel F in KNF. F besteht aus k Klauseln, die aus insgesamt n Aussagenvariablen aufgebaut sind. Aufgabe: Belegen Sie jede Variable so mit einem Wert aus {0,1}, daß jede Klausel (und damit F) wahr wird. (c) W. Conen, Version 0.95

3 Formeln als Constraints
Jede einzelne Klausel Fi ist endlich und hat die Form {L1,...,Lni}, steht also für L1 Ç... Ç Lni. Eine Klausel wird genau dann wahr, wenn mindestens eines der Literale in ihr wahr ist Die ganze Formel F wird wahr, wenn alle Klauseln wahr werden. Was macht die Situation nun kompliziert? Jede einzelne Klausel können wir immer erfüllen! z.B. {A} Aber die Klauseln sind natürlich nicht unabhängig von einander... {A},{:A}... unerfüllbar! (c) W. Conen, Version 0.95

4 Formeln als Constraints
Wir können uns jede aussagenlogische Formel(menge) als Constraintnetzwerk vorstellen: Die Variablen sind die Aussagenvariablen Die Domains sind alle {0,1} Die Constraints sind die Klauseln, d.h. die Disjunktionen (kann auch unär sein, also nur ein Literal enthalten) Alle Constraints (und damit die „große“ Konjunktion) müssen erfüllt werden! (c) W. Conen, Version 0.95

5 Formeln als Constraints
F = (: A Ç : B Ç C) Æ (A Ç : B Ç : C) Klauselform: { {: A, : B, C}, {A,: B,: C}} A B C Beobachtung: Wenn es eine Variable gibt (hier B), die nur von Kanten einer Farbe getroffen wird und mit jedem Constraint verbunden ist, dann ist die Formel erfüllbar! (c) W. Conen, Version 0.95

6 Formeln als Constraints
F = ... Æ A Æ : B ... A B Beobachtung: Unäre Constraints (also solche mit nur einer Kante) legen den Wert der beteiligten Variable fest! (c) W. Conen, Version 0.95

7 Formeln als Constraints
F = ... Æ A Æ : B ... A = 1 B = 0 Beobachtung: Unäre Constraints (also solche mit nur einer Kante) legen den Wert der beteiligten Variable fest! (c) W. Conen, Version 0.95

8 Formeln als Constraints
F = ... Æ A Æ : B Æ (B Ç C)... A = 1 B = 0 C Beobachtung: Nach einer Fixierung kann man nicht mehr erfüllbare Kanten löschen (es sei denn, sie gingen zu anderen unären Constraints, s. nächste Beobachtung) (c) W. Conen, Version 0.95

9 Formeln als Constraints
F = ... Æ A Æ : B Æ (B Ç C)... A = 1 B = 0 C Beobachtung: Nach einer Fixierung kann man erfüllte Constraints und nicht mehr erfüllbare Kanten löschen (es sei denn, sie gingen zu anderen unären Constraints, s. nächste Beobachtung) (c) W. Conen, Version 0.95

10 Formeln als Constraints
F = ... :A Æ A ... A Beobachtung: Wenn eine Variable von zwei Kanten unterschiedlicher Farbe getroffen wird, die zu unären Constraints führen, dann ist die gesamte Formel unerfüllbar! (c) W. Conen, Version 0.95

11 Formeln als Constraints
F = (:A Ç A) Klauselform: { {: A,A} } A wird zu A Beobachtung: Wenn eine Variable mit einem Constraint über zwei Kanten unterschiedlicher Farbe verbunden ist, dann ist dieser Constraint immer erfüllt! (und kann entfernt werden). Übrigens haben wir genau dann eine Tautologie, wenn der reduzierte Graph nur noch aus Kreisen besteht... (c) W. Conen, Version 0.95

12 Formeln als Constraints
F = (B Ç C) Æ (A Ç : B Ç : C) Klauselform: { {B, C}, {A,: B,: C}} A B C Beobachtung: Variablen mit Kanten nur einer Farbe kann (manchmal: muß) man in ihrem Wert fixieren und ... (c) W. Conen, Version 0.95

13 Formeln als Constraints
F = (B Ç C) Æ (A Ç : B Ç : C) Klauselform: { {B, C}, {A,: B,: C}} A B C = 1 Beobachtung: Variablen mit Kanten nur einer Farbe kann (manchmal: muß) man in ihrem Wert fixieren ... (c) W. Conen, Version 0.95

14 Formeln als Constraints
F = (B Ç C) Æ (A Ç : B Ç : C) Klauselform: { {B, C}, {A,: B,: C}} A B C = 1 ... und sicher erfüllte Constraints kann man löschen! (c) W. Conen, Version 0.95

15 Formeln als Constraints
F = (B Ç C) Æ (A Ç : B Ç : C) Klauselform: { {B, C}, {A,: B,: C}} A B C = 1 Jetzt gilt Beobachtung 1! Der Constraint ist erfüllbar! (durch C=1 und B=1, oder C=1 und B=0, oder C=0 und B=1) (c) W. Conen, Version 0.95

16 Formeln als Constraints
F = (: A Ç B Ç C) Æ (A Ç : B Ç : C) Klauselform: { {: A, : B, C}, {A,: B,: C}} A B C Beobachtung: Der Constraintgraph ist erfüllbar, wenn es ein Matching gibt, dass jedem Quadrat einen Kreis zuordnet, so dass jeder Kreis nur von Kanten einer Farbe getroffen wird. (c) W. Conen, Version 0.95

17 Formeln als Constraints
F = (: A Ç B Ç C) Æ (A Ç : B Ç : C) Klauselform: { {: A, : B, C}, {A,: B,: C}} A B C Ein Modell ergibt sich aus den Farben der Kanten (schwarz = 1, rot = 0) oder kann frei gewählt werden (keine Kante). (c) W. Conen, Version 0.95

18 Formeln als Constraints
F = (: A Ç : B Ç C) Æ (A Ç : B Ç : C) Æ (B Ç : C) Æ (: A) Æ (C) A B C Wenden wir die Beobachtungen an: Unäre Constraints führen zu fixierten Variablenwerten Sicher erfüllte Constraints werden entfernt (c) W. Conen, Version 0.95

19 Formeln als Constraints
F = (: A Ç : B Ç C) Æ (A Ç : B Ç : C) Æ (B Ç : C) Æ (: A) Æ (C) 0 = A B C = 1 Wenden wir die Beobachtungen an: 3) Unerfüllbare Kanten werden entfernt (c) W. Conen, Version 0.95

20 Formeln als Constraints
F = (: A Ç : B Ç C) Æ (A Ç : B Ç : C) Æ (B Ç : C) Æ (: A) Æ (C) 0 = A B C = 1 Wenden wir die Beobachtungen an: 4) Widerspruch wird erkannt Das ging hier übrigens auch so schön, weil die Formel oben eine Hornformel ist... (c) W. Conen, Version 0.95

21 Formeln als Constraints
F = (: A Ç : B Ç C) Æ (A Ç : B Ç : C) Æ (B Ç : C) Æ (: A Ç B) Æ (C Ç : B) A B C Und hier? Probieren wir folgende Heuristik: Wähle die Variable mit den meisten Kanten einer Farbe (und den zugehörigen Wert) Und wende dann die Reduktionsregeln an... (c) W. Conen, Version 0.95

22 Formeln als Constraints
F = (: A Ç : B Ç C) Æ (A Ç : B Ç : C) Æ (B Ç : C) Æ (: A Ç B) Æ (C Ç : B) 0 = A B C ...und nochmals! (c) W. Conen, Version 0.95

23 Formeln als Constraints
F = (: A Ç : B Ç C) Æ (A Ç : B Ç : C) Æ (B Ç : C) Æ (: A Ç B) Æ (C Ç : B) A = 0 0 = B C = 0 Also ist F erfüllbar. Wären übrigens noch andere Modelle möglich? Probieren wir es: (c) W. Conen, Version 0.95

24 Formeln als Constraints
F = (: A Ç : B Ç C) Æ (A Ç : B Ç : C) Æ (B Ç : C) Æ (: A Ç B) Æ (C Ç : B) 1= A B C Diesmal wählen wir den anderen „Fall“ B=1 zu Beginn (mit B=0 kann es keine weiteren Modelle geben, alle übrigen Wertzuweisungen waren erzwungen!) (c) W. Conen, Version 0.95

25 Formeln als Constraints
F = (: A Ç : B Ç C) Æ (A Ç : B Ç : C) Æ (B Ç : C) Æ (: A Ç B) Æ (C Ç : B) 1= A B C Jetzt können wir die „normalen“ Reduktionsregeln anwenden. (c) W. Conen, Version 0.95

26 Formeln als Constraints
F = (: A Ç : B Ç C) Æ (A Ç : B Ç : C) Æ (B Ç : C) Æ (: A Ç B) Æ (C Ç : B) 1= A B C = 1 ... und nochmal. (c) W. Conen, Version 0.95

27 Formeln als Constraints
F = (: A Ç : B Ç C) Æ (A Ç : B Ç : C) Æ (B Ç : C) Æ (: A Ç B) Æ (C Ç : B) 1= A = 1 B C = 1 Also ist auch A=1, B=1, C=1 ein Modell (sonst aber nichts!) (c) W. Conen, Version 0.95

28 Formeln als Constraints
F = (: A Ç : B Ç C) Æ (A Ç : B Ç : C) Æ (B Ç : C) Æ (: A Ç B) Æ (C Ç : B) A B C Man könnte auch „lokaler“ denken: 1. Welche Constraints sind „am schwersten“ zu erfüllen – die mit den wenigsten Kanten. Wählen wir einen solchen! 2. Von den beteiligten Variablen wählen wir dann diejenige mit den meisten Kanten der Farbe der jeweiligen KANTE von der Variable ZUM GEWÄHLTEN CONSTRAINT (c) W. Conen, Version 0.95

29 Formeln als Constraints
F = (: A Ç : B Ç C) Æ (A Ç : B Ç : C) Æ (B Ç : C) Æ (: A Ç B) Æ (C Ç : B) C5 A B C C1 C2 C3 C4 Hier würden wir also C1, C4 oder C5 wählen. Bei Wahl von C1 würde B=1 oder A=0 bestimmt, bei Wahl von C4 wäre es B=0, bei C5 wäre es eine gleichberechtigte Wahl zwischen B und C. Bei diesem Tiebreaking könnte es sinnvoll sein, die Variable zu wählen, von der weniger Kanten der „falschen“ Farbe wegführen. Hier wäre das C (2xschwarz statt 3xrot) (c) W. Conen, Version 0.95

30 Formeln als Constraints
F = (: A Ç : B Ç C) Æ (A Ç : B Ç : C) Æ (B Ç : C) Æ (: A Ç B) Æ (C Ç : B) C5 A B C = 0 C1 C2 C3 C4 Führen wir die letzte Variante durch: also C=0 wählen (c) W. Conen, Version 0.95

31 Formeln als Constraints
F = (: A Ç : B Ç C) Æ (A Ç : B Ç : C) Æ (B Ç : C) Æ (: A Ç B) Æ (C Ç : B) A B C = 0 C1 C2 C4 Das führt zu B=0 (c) W. Conen, Version 0.95

32 Formeln als Constraints
F = (: A Ç : B Ç C) Æ (A Ç : B Ç : C) Æ (B Ç : C) Æ (: A Ç B) Æ (C Ç : B) A B = 0 C = 0 C1 Das führt zu B=0 (c) W. Conen, Version 0.95

33 Formeln als Constraints
F = (: A Ç : B Ç C) Æ (A Ç : B Ç : C) Æ (B Ç : C) Æ (: A Ç B) Æ (C Ç : B) A = 0 B = 0 C = 0 Und dann zu A=0, und damit zum gleichen Ergebnis, wie die vorige Heuristik (c) W. Conen, Version 0.95

34 Formeln als Constraints: Gesamtablauf
Eingabe: Formel F Ausgabe: ein Modell oder „UNERFÜLLBAR“ while (TRUE) do Falls keine Constraints mehr vorhanden, gib das gefundene Modell aus: alle Wertfixierungen und eine beliebige Wahl für unfixierte Variablen, STOPP Falls eine Variable mit mindestens zwei (verschiedenen!) unären Constraints über Kanten unterschiedlicher Farbe verbunden sind, gib „UNERFÜLLBAR“ aus, STOPP Wende die Reduktionsregeln solange an, bis keine Änderung mehr erfolgt Falls gar keine Änderung stattfand, fixiere heuristisch einen Variablenwert (hier wäre auch eine zufällige Wahl möglich) (c) W. Conen, Version 0.95

35 Formeln als Constraints: Ein Problem
F = (A Ç :B Ç C Ç D) Æ (:A Ç :C) Æ (:B Ç :C) Æ (C Ç B) Æ (:A Ç :B) Æ (A Ç B) Æ (D Ç :B) Æ (:C Ç :D) A B C D Wir wenden nochmal die erste Heuristik an: Die Wahl fällt auf B, also B=0. (c) W. Conen, Version 0.95

36 Formeln als Constraints: Ein Problem
F = (A Ç :B Ç C Ç D) Æ (:A Ç :C) Æ (:B Ç :C) Æ (C Ç B) Æ (:A Ç :B) Æ (A Ç B) Æ (D Ç :B) Æ (:C Ç :D) = 0 A B C D Jetzt müssen C und A jeweils 1 werden, das führt natürlich zu ... (c) W. Conen, Version 0.95

37 Formeln als Constraints: Ein Problem
F = (A Ç :B Ç C Ç D) Æ (:A Ç :C) Æ (:B Ç :C) Æ (C Ç B) Æ (:A Ç :B) Æ (A Ç B) Æ (D Ç :B) Æ (:C Ç :D) = 0 A = 1 B C = 1 D ...einem Widerspruch! (c) W. Conen, Version 0.95

38 Formeln als Constraints: Ein Problem
F = (A Ç :B Ç C Ç D) Æ (:A Ç :C) Æ (:B Ç :C) Æ (C Ç B) Æ (:A Ç :B) Æ (A Ç B) Æ (D Ç :B) Æ (:C Ç :D) A B C D Wenn wir stattdessen B = 1 setzen... (c) W. Conen, Version 0.95

39 Formeln als Constraints: Ein Problem
F = (A Ç :B Ç C Ç D) Æ (:A Ç :C) Æ (:B Ç :C) Æ (C Ç B) Æ (:A Ç :B) Æ (A Ç B) Æ (D Ç :B) Æ (:C Ç :D) = 1 A B C D Wenn wir stattdessen B = 1 setzen... (c) W. Conen, Version 0.95

40 Formeln als Constraints: Ein Problem
F = (A Ç :B Ç C Ç D) Æ (:A Ç :C) Æ (:B Ç :C) Æ (C Ç B) Æ (:A Ç :B) Æ (A Ç B) Æ (D Ç :B) Æ (:C Ç :D) = 1 A B C = 0 = 0 D Jetzt wird reduziert... (c) W. Conen, Version 0.95

41 Formeln als Constraints: Ein Problem
F = (A Ç :B Ç C Ç D) Æ (:A Ç :C) Æ (:B Ç :C) Æ (C Ç B) Æ (:A Ç :B) Æ (A Ç B) Æ (D Ç :B) Æ (:C Ç :D) = 1 A B C = 0 = 0 D = 1 ... und fertig! A = C = 0, B = D = 1 ist ein Modell für F (das einzige Modell, denn nach der Wahl von B = 1 waren alle anderen Werte erzwungen) (c) W. Conen, Version 0.95

42 Formeln als Constraints
Zu welchen Problemen kann dieser Ablauf also führen? Klar: Es kann sein, dass wir „UNERFÜLLBAR“ ausgeben, obwohl es ein Modell gibt! ...aber wir wissen immerhin: wenn wir ein Modell ausgeben, dann ist das auch korrekt! Wir müßten hierzu noch formal beweisen, dass unsere Reduktionsregeln den semantischen Gehalt des Netzwerks bzw. der repräsentierten Formeln nicht verändern Wie können wir dieses Problem lösen? (c) W. Conen, Version 0.95

43 Formeln als Constraints
Klar – wir müssen das Verfahren in einen Tiefensuche-Algorithmus einbetten! Eingabe, Ausgabe wie gehabt Solve(Constraintnetz F) Prüfe Abbruchbedingung wie vorhin, falls eine zutrifft, gib das bestimmte Resultat zurück Wähle heuristisch eine Variable v und einen Wert w für v aus Fixiere v auf w; reduziere F zu F‘ Rufe Erg à Solve(F‘) auf Falls Erg = „UNERFÜLLBAR“, dann fixiere v auf :w; reduziere F zu F‘ und rufe Erg à Solve(F‘) auf Gib Erg zurück (c) W. Conen, Version 0.95

44 Formeln als Constraints
Insgesamt könnte der Ablauf so aussehen: Gegeben ist ein Constraintnetz F Reduziere F zu F‘ Gib das Ergebnis von Solve(Constraintnetz F‘) zurück Hier wird zunächst die Reduktion verwendet, um offensichtlich im Graphen enthaltene Konsequenzen sichtbar zu machen Zur Erinnerung: Solve beginnt mit einer Überprüfung der Abbruchbedingungen (c) W. Conen, Version 0.95

45 Formeln als Constraints: Ein Problem
F = (A Ç :B Ç C Ç D) Æ (:A Ç :C) Æ (:B Ç :C) Æ (C Ç B) Æ (:A Ç :B) Æ (A Ç B) Æ (D Ç :B) Æ (:C Ç :D) C1 C2 A B C C3 C4 C5 C6 C7 C8 D Hätte übrigens die zweite Heuristik ohne Backtracking funktioniert? Kandidaten: C3, C8, C1, C2, C5, C7 (alle mit zwei Kanten) (c) W. Conen, Version 0.95

46 Formeln als Constraints: Ein Problem
F = (A Ç :B Ç C Ç D) Æ (:A Ç :C) Æ (:B Ç :C) Æ (C Ç B) Æ (:A Ç :B) Æ (A Ç B) Æ (D Ç :B) Æ (:C Ç :D) C1 C2 A B C C3 C4 C5 C6 C7 C8 D Weniger falsche Farben? C5/D=1, C8/D=C=2, C2/C=3, C7/C=2, C3/A=2, C1/A=2. Also wählen wir C5 mit 1 für D. (c) W. Conen, Version 0.95

47 Formeln als Constraints: Ein Problem
F = (A Ç :B Ç C Ç D) Æ (:A Ç :C) Æ (:B Ç :C) Æ (C Ç B) Æ (:A Ç :B) Æ (A Ç B) Æ (D Ç :B) Æ (:C Ç :D) C1 C2 A B C C3 C4 C7 C8 D = 1 Weitere Reduktion: C = 0 (c) W. Conen, Version 0.95

48 Formeln als Constraints: Ein Problem
F = (A Ç :B Ç C Ç D) Æ (:A Ç :C) Æ (:B Ç :C) Æ (C Ç B) Æ (:A Ç :B) Æ (A Ç B) Æ (D Ç :B) Æ (:C Ç :D) C1 C2 A B C = 0 C3 D = 1 Weitere Reduktion: B = 1 (c) W. Conen, Version 0.95

49 Formeln als Constraints: Ein Problem
F = (A Ç :B Ç C Ç D) Æ (:A Ç :C) Æ (:B Ç :C) Æ (C Ç B) Æ (:A Ç :B) Æ (A Ç B) Æ (D Ç :B) Æ (:C Ç :D) A B C = 0 = 1 C3 D = 1 Weitere Reduktion wäre A = 0, damit ist das Modell gefunden! (c) W. Conen, Version 0.95

50 Formeln als Constraints
Warum müssen wir nur über die Wertauswahl „backtracken“, nicht aber über die Variablenwahl? Weil die Reihenfolge der Variablenwahl für die Erfüllbarkeit keine Rolle spielt! Wohl aber für die Laufzeit der Suche... Was kann jetzt noch Übles passieren? Eine Entscheidung „weit oben“ kann schlecht sein und erfordert sehr viel Backtracking, bevor sie letztlich zurückgenommen wird (Lösung: Backjumping oder „Vorausschauen“) Beim Backtracking kann es zu „doppelter“ Arbeit kommen: Teilbelegungen werden mehrfach ausprobiert! (Lösung: erfolgreiche Teilbelegungen merken) Das haben wir uns schon im Constraint-Teil angeschaut! (c) W. Conen, Version 0.95

51 Modelle finden... Wir haben versucht, „sinnvoll“ die nächste Variable zu wählen ...und bei den Reduktionen unser Wissen über Notwendigkeiten konsequent anzuwenden (und dadurch die Wertzuweisungen zu propagieren) Diese Idee des „rationalen“ Verbesserns von zunächst naive algorithmischen Ideen liegt auch den folgenden Verfahren zur Erfüllbarkeits-Analyse zu Grunde. Ürbigens entspricht das erste Verfahren ziemlich genau unseren eben dargestellten Ideen... (c) W. Conen, Version 0.95

52 Modelle finden... Martin Davis und Hillary Putnam schlugen 1960 die Grundlage für das folgende Verfahren (62 als Verfeinerung publiziert von Davis, Logemann, Loveland) Ich gebe hier das Skelett des Algo an (diverse Verfeinerung sind möglich zur Effizienzsteigerung) So finden sie den Algo auch in Russell/Norvig function DPLL-SATISFIABLE?(F) returns true or false inputs: F, eine aussagenlogische Formel clauses à die Klauseln der Klauselform einer KNF von F symbols à eine Liste der Aussagenvariablen in F return DPLL(clauses,symbols,[ ]). (c) W. Conen, Version 0.95

53 Modelle finden... function DPLL(clauses,symbols,model) returns true or false if jede Klausel in clauses wahr ist unter model then return true if eine Klausel in clauses falsch ist unter model then return false P, value à FIND-PURE-SYMBOL(symbols,clauses,model) // Ein Symbol, das nur als positives oder negatives Literal vorkommt if P is non-null then return DPLL(clauses, symbols-P, EXTEND(P,value,model)) P, value à FIND-UNIT-CLAUSE(symbols,clauses,model) // Eine Klausel, die nur ein Literal enthält (bzw. eines ohne Wert) P à FIRST(symbols); rest à REST(symbols); return DPLL(clauses,rest,EXTEND(P,true,model)) or DPLL(clauses,rest,EXTEND(P,false,model)) (c) W. Conen, Version 0.95

54 Modelle finden... Laut Russell/Norvig löst die moderne CHAFF-Implementierung des Davis/Puttnam-Verfahrens Hardware-Verifikationsprobleme mit bis zu einer Million Variablen Wie gesehen wird hier eine Lösung Schritt für Schritt konstruiert Man kann aber auch von einer Belegung ausgehen und diese nach und nach verbessern. Das versucht das folgende Verfahren: (c) W. Conen, Version 0.95

55 Modelle finden... function WALKSAT(clauses,p,max_flips) returns a satisfying model or failure inputs: clauses (wie vorhin), p (die Wahrscheinlichkeit für die Wahl des „Random Walk“), max_flips (Anzahl der Flips, die höchstens erlaubt sind, um eine Lösung zu finden) model à eine zufällige Belegung for i à 1 to max_flips do if model erfüllt clauses then return model clause à zufällig gewählte Klausel, die unter model falsch ist Mit Wahrscheinlichkeit p setze Ai auf : Ai für ein zufällig gewähltes Symbol Ai aus clause Sonst setze Ak auf : Ak für eines der Symbole aus clause, die die Anzahl erfüllter Klauseln maximiert return failure (c) W. Conen, Version 0.95

56 Modelle finden... WALKSAT und ähnliche Varianten sind sehr populäre Methoden, um nach erfüllenden Modellen zu suchen WALKSAT ist häufig sehr effizient! Es wählt mit einer Min-Conflicts-Strategie Kandidaten aus (aber auch zufällig) Es findet natürlich nicht immer eine Lösung... man könnte max_flips auf unendlich setzen... ...aber auch das gibt keine Garantie: denn ev. gibt es kein Modell! Allerdings könnte man (vorsichtig...) annehmen, dass nach einer vergleichsweise langen Laufzeit keine Lösung mehr zu erwarten ist (das kann aber natürlich falsch sein...) Dennoch sind die „zufälligen“ Verfahren häufig eine gute Wahl, s. Bild im Mitschrieb (c) W. Conen, Version 0.95

57 Modelle finden... Mit Modellen für Aussagenlogik kann man überraschend viel anfangen: z.B. planen oder Hardware verifizieren Außerdem kann/könnte man jedes NP-harte Problem mit polynomialem Aufwand auf SAT (also das Erfüllbarkeits- bzw. Satisfiability Problem der Aussagenlogik) abbilden... ...wenn man also eine effiziente Lösung für SAT finden würde, dann wäre auch die NP=P-Frage gelöst! Übrigens stammt die (oder eine der) beste(n) „zufälligen“ Lösungen (mit einem Worst-Case-Verhalten von 4/3n) von Uwe Schöning (zur Anwendung auf das sogenannte 3-KNFSAT-Problem. Hier bestehen die Klauseln nur aus höchstens 3 Literalen. Jede Formel kann man in eine Formel in 3-KNF transformieren, die eine äquivalente Menge von Modellen hat (Aufwand!) [seltsame Formulierung aus Russell/Norvig] Das 3-KNFSAT-Problem ist aber auch NP-vollständig (c) W. Conen, Version 0.95

58 Modelle finden... Schöning(clauses,symbols) returns ein Modell
Wähle zufällig eine Belegung for i à 1 to n do Falls die aktuelle Belegung die Formel erfüllt, gib sie zurück und stoppe Wähle zufällig eine nicht-erfüllte Klausel aus Wähle zufällig ein Literal dieser Klausel aus Ändere („flip“) den Wahrheitswert dieser Variable Das ist noch einfacher als WALKSAT... Wenn man den Algo jetzt c*(4/3)n mal aufruft (er terminiert sicher: for-Schleife!) mit jeweils anderen „zufälligen“ Anfangsbelegungen ...dann beträgt die Fehlerwahrscheinlichkeit nur noch e-c Der Algo findet also „fast sicher“ eine Belegung (wenn es eine gibt) Und hat einen asymptotischen Aufwand von „nur“ n Ob er auch „praktisch“ guten Aufwand hat, ist eine zweite Frage. (c) W. Conen, Version 0.95

59 Literatur... Auch spannend: Analytische Tableaux‘s, die auf disjunktiven Normalformen arbeiten (s. z.B. Smullyan) Die Ausführungen zu Davis/Putnam und WALKSAT stammen aus Russell/Norvig (wie gehabt) Einige Erläuterungen zu und von Schöning finden sich in Uwe Schöning, Ideen der Informatik, 2. Auflage, Oldenbourg (c) W. Conen, Version 0.95


Herunterladen ppt "Aussagenlogik -- Verfahren zum Finden von Modellen"

Ähnliche Präsentationen


Google-Anzeigen