Logik und Diskrete Strukturen (Sommer 2017) Prof. Dr. Ulrich Hertrampf 1.3 Hornformeln Die Disjunktionen einer KNF nennt man auch Klauseln. Definition: Beispiele: Eine Hornformel ist eine Formel in KNF, bei der in jeder Klausel höchstens ein positives Literal vorkommt. (A ∨ ¬B ∨ ¬C ) ∧ (¬A ∨ ¬D) ∧ B ∧ (C ∨ ¬D) (A ∨ ¬B) ∧ (B ∨ ¬C ∨ ¬D) ∧ (D ∨ ¬A) ∧ C Diese Formel ist erfüllbar – man muss nur alle atomaren Formeln auf 1 setzen (A ∨ ¬B ∨ ¬C ) ∧ (¬A ∨ ¬D) ∧ (C ∨ ¬D) Diese Formel ist auch erfüllbar – setze alle atomaren Formeln auf 0 Einheit 9 – Folie 9.1 – 02.05.2017 Logik und Diskrete Strukturen (Sommer 2017) Prof. Dr. Ulrich Hertrampf Hornformeln in prozeduraler Form Eine Klausel (also eine Disjunktion von Literalen) der Form (z.B.) (A ∨ ¬B ∨ ¬C ∨ ¬D) schreiben wir auch so: (B ∧ C ∧ D → A) Denn mit deMorgan gilt: ¬(B ∧ C ∧ D) ∨ A ≡ ¬B ∨ ¬C ∨ ¬D ∨ A Ohne positives Literal: (¬B ∨ ¬C ∨ ¬D) wird zu (B ∧ C ∧ D → 0) Dabei steht 0 für die unerfüllbare Formel... Es gilt (¬(B ∧ C ∧ D) ∨ 0) ≡ ¬(B ∧ C ∧ D) ≡ (¬B ∨ ¬C ∨ ¬D) Und ohne negative Literale: A wird zu 1→A Denn (1 → A) ≡ (¬1 ∨ A) ≡ A Einheit 9 – Folie 9.2 – 02.05.2017 Logik und Diskrete Strukturen (Sommer 2017) Prof. Dr. Ulrich Hertrampf Markierungsalgorithmus Der folgende Algorithmus testet Erfüllbarkeit für Hornformeln: 1. Für alle in F vorkommenden atomaren Formeln A: Falls 1 → A in F vorkommt, markiere A. 2. Wenn (A1 ∧ · · · ∧ Am → 0) in F vorkommt und alle Ai sind markiert: STOP (Ausgabe: unerfüllbar) 3. Wenn (A1 ∧ · · · ∧ Am → B) in F vorkommt und alle Ai sind markiert, aber B nicht: Markiere B. 4. Wenn Schritt 3 nicht zutraf: STOP (Ausgabe: erfüllbar), sonst weiter mit 2. Beachte: Es wird niemals mehr Durchläufe der Schleife als atomare Formeln in F geben! Einheit 9 – Folie 9.3 – 02.05.2017 Logik und Diskrete Strukturen (Sommer 2017) Prof. Dr. Ulrich Hertrampf Zur Korrektheit des Algorithmus Der folgende Satz besagt, dass der Algorithmus von Folie 9.3 seinen Zweck erfüllt: Satz: Falls F eine Hornformel mit n atomaren Formeln ist, dann terminiert der Algorithmus der vorigen Folie nach höchstens n Schleifendurchläufen und liefert das korrekte Ergebnis. Wir wollen zuerst die Termination beweisen: In jedem Schleifendurchlauf wird mindestens eine atomare Formel markiert, die vorher unmarkiert war (oder der Algorithmus endet in diesem Durchlauf). Da markierte atomare Formeln ihre Markierung nicht mehr verlieren können, ist klar, dass es nicht mehr als n Schleifendurchläufe geben kann. Einheit 9 – Folie 9.4 – 02.05.2017 Logik und Diskrete Strukturen (Sommer 2017) Prof. Dr. Ulrich Hertrampf Fortsetzung des Korrektheitsbeweises Nun beweisen wir, dass die Ausgabe immer korrekt ist: 1. Behauptung: Wenn im Verlauf des Algorithmus eine atomare Formel markiert wird, dann muss sie in jeder erfüllenden Belegung den Wert 1 bekommen. Den Beweis kann man per Induktion über die Anzahl der Schleifendurchläufe bis zur Markierung der jeweiligen atomaren Formel führen. 2. Behauptung: Wenn in Schritt 2 unerfüllbar ausgegeben wird, dann hat die Formel F tatsächlich keine erfüllende Belegung. Zum Beweis schauen wir uns an, warum der Algorithmus gestoppt hat. Grund war das Vorhandensein einer Klausel (A1 ∧ · · · ∧ Am → 0), für die alle Ai markiert sind, also nach der ersten Behauptung in jeder erfüllenden Belegung den Wert 1 annehmen müssen. Aber die besagte Klausel können wir auch als (¬A1 ∨ . . . ¬Am ) schreiben. Da alle Ai den Wert 1 erhalten, bekommen alle ¬Ai den Wert 0, diese Klausel ist also nicht erfüllt! Daraus folgt Behauptung 2. 02.05.2017 Einheit 9 – Folie 9.5 – Logik und Diskrete Strukturen (Sommer 2017) Prof. Dr. Ulrich Hertrampf Abschluss des Korrektheitsbeweises 3. Behauptung: Wenn in Schritt 4 erfüllbar ausgegeben wird, dann gibt es die folgende erfüllende Belegung: Alle markierten atomaren Formeln erhalten den Wert 1, alle übrigen atomaren Formeln erhalten den Wert 0. Wir müssen prüfen, dass diese Belegung tatsächlich alle Klauseln wahr macht. Dazu unterscheiden wir die drei Klausel-Typen: Klauseln der Form (1 → A) sind erfüllt, da wir die atomare Formel A bereits im 1. Schritt markiert haben, d.h. sie bekommt den Wert 1. Klauseln der Form (A1 ∧ · · · ∧ Am → 0) sind erfüllt, da nicht alle Ai markiert sein können, sonst hätten wir in Schritt 2 schon gestoppt. Es gibt also ein unmarkiertes Ai , das den Wert 0 hat, also ist ¬Ai auf 1 gesetzt. Bei Klauseln der Form (A1 ∧ · · · ∧ Am → B) ist entweder B markiert oder mindestens ein Ai unmarkiert, denn sonst hätten wir im Schritt 3 diese Klausel verarbeitet und im Schritt 4 nicht gestoppt. Im ersten Fall ist die Klausel durch B erfüllt, da B den Wert 1 hat. Im zweiten Fall hat Ai den Wert 0, also ¬Ai den Wert 1. In jedem Fall ist damit die Klausel erfüllt. Einheit 9 – Folie 9.6 – 02.05.2017 Logik und Diskrete Strukturen (Sommer 2017) Prof. Dr. Ulrich Hertrampf Bemerkungen zum Hornformel-Algorithmus Minimalität der Belegung Der Hornformel-Algorithmus liefert, wie wir im Beweis gesehen haben, im positiven Fall eine erfüllende Belegung, die nur den atomaren Formeln den Wert 1 zuordnet, die in jeder erfüllenden Belegung den Wert 1 haben. Damit ist die konstruierte Belegung die eindeutig definierte minimale erfüllende Belegung. Frage: Gibt es für jede erfüllbare Formel eine solche eindeutig definierte minimale erfüllende Belegung? Antwort: Nein. Hierfür gibt es einfache Beispiele, z.B. die Formel (A ∨ B). Einheit 9 (Überprüfen Sie das bitte!) – Folie 9.7 – 02.05.2017 Logik und Diskrete Strukturen (Sommer 2017) Prof. Dr. Ulrich Hertrampf Weitere Bemerkungen Zielklauseln Klauseln der Form (A1 ∧ · · · ∧ An → 0) werden als Zielklauseln bezeichnet. Das Ziel ist dann der Nachweis, dass die Formel unerfüllbar ist! Diesen Nachweis kann man erhalten, wenn man zeigen kann, dass die Ai alle den Wert 1 bekommen müssen. Axiome Klauseln der Form (1 → A) bezeichnet man auch als Axiome. Denn es ist a priori klar, dass durch diese Klausel die atomare Formel A in jeder erfüllenden Belegung den Wert 1 bekommt. Eine Hornformel ohne Zielklauseln ist immer erfüllbar. Setze alle atomaren Formeln auf 1 Eine Hornformel ohne Axiome ist auch immer erfüllbar. Einheit 9 – Folie 9.8 – Setze alle atomaren Formeln auf 0 02.05.2017