Theoretische Informatik: Logik

Werbung
Theoretische Informatik: Logik
WS 2012/2013
Blatt 2
bis Montag, den 19.11.2012, 1415 Uhr, im Kasten neben den Postfächern
(bei Raum 0409, Fachschaft)
Es ist grundsätzlich erwünscht, dass die Übungsaufgaben in Gruppen (ca. 3-4 Studenten) bearbeitet werden, jedoch soll jeder seine Lösung selbst aufschreiben. Bitte schreiben Sie auf jedes
Blatt Ihrer Lösung Ihren Namen, Ihre Matrikelnummer, Ihre Übungsgruppe und die Namen
Ihrer Kommilitonen, welche an den Lösungen mitgearbeitet haben. Geben Sie bitte alle in
einem Team erstellten Lösungen zusammengeheftet und die Lösungen nach Aufgaben getrennt ab.
Abgabe:
AUFGABE 1. Entscheiden Sie mittels Resolution, ob die Klauselmenge K1 und mittels des
DPLL-Algorithmus, ob die Klauselmenge K2 erfüllbar sind.
a) K1 = {{¬A, ¬C}, {A, ¬B}, {¬C}, {A, B, C}, {C, ¬A}}
b) K2 = {{¬E, ¬C}, {¬B, C}, {¬C, E, F }, {¬E, ¬F }, {A, B, C, F }, {E, ¬F }}
AUFGABE 2. Das n-Damen-Problem ist das folgende: Gegeben ist ein n ≥ 1. Auf ein
Schachbrett der Größe n × n sollen n Schachfiguren vom Typ “Dame” platziert werden, so dass
sich davon keine zwei gegenseitig nach den Regeln des Schachspiels schlagen können. Eine Dame
kann beliebig weit in horizontaler, vertikaler oder diagonaler Richtung schlagen.
a) Schreiben Sie in Java ein Programm, welches eine natürliche Zahl n in der Kommandozeile
erwartet und mithilfe des SAT-Solvers SAT4J eine Lösung des n-Damen-Problems für dieses n
berechnet. Der Aufruf für n = 8 z.B. soll folgendermaßen erfolgen.
> java -cp org.sat4j.core.jar:. NQueens 8
Ihr Programm soll daraufhin eine mögliche Belegung des Schachbretts ausgeben, falls solch eine
existiert. Gestalten Sie die Ausgabe so, dass mit menschlichem Blick leicht erkennbar ist, ob es
sich um eine korrekte Lösung des n-Damen-Problems handelt, z.B. wie in dem Beispielprogramm
in der Vorlesung gezeigt.
b) Erweitern Sie Ihr Programm so, dass es bei Eingabe des Kommandozeilenparameters “all”,
also z.B. bei
> java -cp org.sat4j.core.jar:. NQueens 8 all
alle möglichen Lösungen für das n-Damen-Problem mithilfe des SAT-Solvers SAT4J findet.
Lassen Sie Ihr Programm am Ende auch ausgeben, wieviele Lösungen es gefunden hat. Im
obigen Beispiel sollte Ihr Programm also 92 verschiedene Lösungen finden.
Hinweis: Sie können die Methoden addClause und isSatisfiable in beliebiger Reihenfolge
verwenden. Überlegen Sie sich, wie sich dies sinnvoll einsetzen lässt, um alle Lösungen zu
berechnen.
c) Erweitern Sie Ihr Programm so, dass es bei Eingabe des Kommandozeilenparameters “nosym”,
also z.B. bei
> java -cp org.sat4j.core.jar:. NQueens 8 nosym
alle bis auf Spiegelungen und Drehungen verschiedenen Lösungen findet. In diesem Beispiel
sollte Ihr Programm dann 12 Lösungen ausgeben. Überlegen Sie sich dazu, wie man nach Berechnung einer Lösung mithilfe des SAT-Solvers gleich ausschließen kann, dass danach nochmal eine
Lösung berechnet wird, die aus der durch Drehen oder Spiegeln hervorgeht. Lassen Sie auch
hier Ihr Programm am Ende die Anzahl der gefundenen Lösungen ausgeben.
Hinweis: Für diese Aufgabe genügt es, ein Programm pro Gruppe abzugeben. Laden Sie bitte
ihr Programm in Moodle, Kurs “Theoretische Informatik: Logik ”, hoch.
AUFGABE 3. Sei ΦM,k die Formelmenge aus Präsenzaufgabe 2. Was kann man über die
Erfüllbarkeit dieser Formelmenge Aussagen unter der Annahme, dass es für jedes n möglich ist,
nur die Prozesse 1, . . . , n auf die k Prozessoren zu verteilen. Hinweis: Benutzen Sie für die
Antwort den Kompaktheitssatz.
Die folgenden Aufgaben sind nicht abzugeben. Mögliche Lösungen werden im Rahmen der Übung in Kleinstgruppen besprochen. Befassen Sie sich daher vorher mit
den Aufgaben, um Lösungsansätze konstruktiv diskutieren zu können.
PRÄSENZAUFGABE 1. Geben Sie jeweils an, ob die folgenden Aussagen richtig oder falsch
sind und begründen Sie Ihre Antwort kurz in wenigen Sätzen. Widerlegen Sie falsche Aussagen
durch Gegenbeispiele, und belegen Sie richtige Aussagen durch eine korrekte Argumentation.
(a) Es gibt aussagenlogische Formeln ϕ und ψ, so dass ϕ erfüllbar ist, ψ unerfüllbar ist und
ϕ → ψ allgemeingültig ist.
(b) Es gibt aussagenlogische Formeln ϕ und ψ, so dass ϕ und ψ unerfüllbar sind und ϕ → ψ
allgemeingültig ist.
(c) Seien ϕ und ψ beliebige, aussagenlogische Formeln. Es gilt immer einer von drei Fällen:
(1) ϕ → ψ ist allgemeingültig; (2) ψ → ϕ ist allgemeingültig; (3) ϕ ∧ ψ ist unerfüllbar.
(d) Es gibt erfüllbare Formelmengen Φ und Ψ, so dass Φ ∪ Ψ unerfüllbar ist.
(e) Angenommen, ϕ ≡SAT ψ und ϕ ist unerfüllbar. Dann gilt auch ϕ ≡ ψ.
PRÄSENZAUFGABE 2. Man stelle sich folgendes Problem vor. Ein Computer soll gleichzeitig unendlich viele Prozesse verarbeiten. Dafür stehen aber nur endliche viele Prozessoren
zur Verfügung, von denen jeder einzelne beliebig viele Prozesse parallel verarbeiten kann. Nun
ist es leider so, dass sich einige Prozesse nicht mit gewissen anderen Prozessen ein und den selben Prozessor teilen können. Gesucht wird also eine Aufteilung der Prozesse auf die Prozessoren.
Formal handelt es sich also um folgendes Problem. Zur Vereinfachung setzen wir die Prozesse mit
natürlichen Zahlen gleich. Gegeben sind eine Anzahl k ≥ 1 an Prozessoren sowie eine Menge
M von zwei-elementigen Teilmengen der natürlichen Zahlen. Diese repräsentieren diejenigen
Paare von Prozessen, die nicht auf ein und demselben Prozessor laufen können. Gesucht ist eine
Funktion f : N → {1, . . . , k}, so dass für alle {i, j} ∈ M gilt: f (i) 6= f (j).
a) Sei M = {{1, 2}, {1, 3}, {2, 3}, {3, 4}, {3, 5}, {4, 5}}. Geben Sie die kleinste Anzahl k an
Prozessoren an, die benötigt wird, um die Prozesse unter Beachtung der Menge M zu
verarbeiten.
Hinweis: Es empfiehlt sich, die Prozesse als Knoten eines ungerichteten Graphen und die
Relation M als Kanten darin zu modellieren. Die Aufteilung auf die Prozessoren kann
man dann als Färbung der Knoten des Graphen ansehen, so dass zwei durch eine Kante
verbundene Knoten nicht dieselbe Farbe (also denselben Prozessor) erhalten dürfen.
Ziel ist es im folgenden, das oben genannte Problem in Aussagenlogik zu modellieren. Dazu
verwenden wir aussagenlogische Variablen Tij für i ≥ 1 und 1 ≤ j ≤ k, die intuitiv ausdrücken
sollen, dass der Prozess i mit dem j-ten Prozessor verarbeitet wird.
b) Geben Sie eine Formel ϕ!i an, die ausdrückt, dass der Prozess i auf genau einem der k
Prozessoren läuft.
c) Geben Sie eine Formel ϕ#
i,j für i < j an, die ausdrückt, dass die Prozesse i und j auf dem
selben der k Prozessoren verarbeitet wird.
d) Modellieren Sie nun eine Formelmenge ΦM,k die besagt, dass sich unendlich viele Prozesse
auf die k Prozessoren unter Berücksichtigung von M verteilen lassen.
Herunterladen