CHRISTIAN-ALBRECHTS-UNIVERSITÄT ZU KIEL I NSTITUT FÜR I NFORMATIK , AG T HEORETISCHE I NFORMATIK Prof. Dr. Thomas Wilke, Dipl.-Inf. Ralf Thöle 11. November 2008 Übungen zur Vorlesung »Mathematik für Informatiker III« Aufgabenblatt 3 Präsenzaufgabe 3.1 Überführen Sie die folgende aussagenlogische Formel in eine äquivalente Formel in KNF dargestellt als Klauselmenge. ^ (Xi ↔ ¬Xj ). 1≤i<j≤n Zur Erinnerung: Formeln dieser Art traten bei der Frage auf, ob ein Graph bipartit ist. Präsenzaufgabe 3.2 Überführen Sie die folgenden Formeln in NNF, KNF und DNF. (a) ¬((X1 ∨ X2 ) ∧ X3 ) (b) (¬(X1 → X2 ) ↔ X3 ) Hausaufgabe 3.3 Beweisen Sie Lemma 2.6 aus dem Skript zur Vorlesung. Sind ϕ und ψ einfache Konjunktionen mit vars(ϕ) = vars(ψ), so gilt ϕ ≡ ψ. Hausaufgabe 3.4 Beweisen Sie für alle ϕ, ψ, χ, ρ ∈ FAL die folgende Äquivalenz: ((ϕ ∧ ψ) ∧ χ) → ρ ≡ ϕ → (ψ → (χ → ρ)) . Verwenden Sie dabei die in der Vorlesung vorgestellten aussagenlogischen Gesetze. Geben Sie für jeden Schritt an, welches Gesetz und welche Substitution verwendet worden ist. Hinweis: Orientieren Sie sich an dem Beweis der Gültigkeit der Äquivalenz 2.6 aus dem Skript. Hausaufgabe 3.5 Ziel dieser Aufgabe ist es, das Lösen von aussagenlogischen Ausdrücken mit Hilfe von SATSolvern vorzubereiten. Als Eingabe erwarten SAT-Solver (meistens) Ausdrücke im sogenannten DIMACS-Datenformat: (1) Eine Datei besteht aus einer Präambel und den Klauseln. (2) Die Präambel besteht aus Kommentarzeilen, die mit c beginnen, gefolgt von einer Zeile, die mit p beginnt. (3) Diese Zeile hat das Format p <format> n m, wobei <format> hier den Wert cnf annimmt, n die Anzahl der Variablen und m die Anzahl der Klauseln ist. (4) Danach folgenden die Klauseln, wobei jede Klausel eine Liste von Zahlen ist, die mit 0 endet. Dabei steht die Zahl i für das Literal Xi und die Zahl -i für ¬Xi . Beispiel: Die Formel (X1 ∨¬X2 )∧(X2 ∨¬X3 ∨¬X4 )∧(X1 ∨¬X4 ) würde im DIMACS-Datenformat folgendermaßen aussehen: c c p 1 1 Die Beispielformel cnf 4 3 -2 0 2 -3 -4 0 -4 0 In dieser Aufgabe wollen wir Literale durch ganze, von 0 verschiedene Zahlen und Klauseln durch Listen von Listen von Literalen darstellen. Eine Sudoku-Instanz wollen wir durch eine 9-elementige Liste von 9-elementigen Listen von Zahlen aus {0, . . . , 9} darstellen. Dabei kodieren wir ein unbelegtes Feld durch die Zahl 0. Beispiel: (list (list (list (list (list (list (list (list (list (list ) 0 4 0 0 0 0 3 0 0 0 0 2 0 0 0 0 5 0 0 0 0 0 8 1 0 0 0 0 0 0 0 0 0 4 1 8 0 0 0 5 0 9 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 4 3 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 ) ) ) ) ) ) ) ) ) (a) Entwickeln Sie eine Prozedur, die eine Sudoku-Instanz in die zugeordnete Formel ϕS (siehe Skript Kapitel 2.3.2) in Klauseldarstellung umwandelt. (b) Entwickeln Sie eine Prozedur, die eine in Klauseldarstellung gegebene Formel in das DIMACSDatenformat umwandelt. Abgabe: Montag, den 17. November, bis spätestens 10:15 Uhr im Schrein. Schicken Sie praktische Aufgaben zusätzlich per E-Mail an Ihren Übungsgruppenleiter.