Logik und Diskrete Strukturen Einheit 8 Prof. Dr. Ulrich Hertrampf KNF-Algorithmus Man kann eine KNF wie folgt direkt erzeugen: 1. Schritt: Negationen nach innen schieben (deMorgan) und dabei Doppelnegationen eliminieren. 2. Schritt: Zweites Distributivgesetz nutzen, um ∨-Operationen an ∧-Operatoren vorbei nach innen zu schieben. (Voraussetzung: Die Ausgangsformel ist nur mit Operatoren ¬, ∨ und ∧ gebildet.) Beispiel: (¬(A ∧ ¬(C ∨ ¬B)) ∨ ¬(¬D ∨ (B ∧ A))) ≡ (¬(A ∧ (¬C ∧ B)) ∨ (D ∧ ¬(B ∧ A))) ≡ ((¬A ∨ (C ∨ ¬B)) ∨ (D ∧ (¬B ∨ ¬A))) ≡ (¬A ∨ C ∨ ¬B ∨ D) ∧ (¬A ∨ C ∨ ¬B ∨ ¬B ∨ ¬A) Diese letzte Formel ist in KNF! Winter 2015/16 – Folie 8.1 – 29.10.2015 Logik und Diskrete Strukturen Einheit 8 Prof. Dr. Ulrich Hertrampf KNF aus der Wahrheitstafel Man kann eine KNF auch direkt aus der Wahrheitstafel generieren: A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 F 0 1 1 0 1 1 1 0 Um eine KNF für die Formel F zu erhalten, schließen wir mit einer Konjunktion alle Fälle aus, in denen F den Wert 0 annimmt. Zu vermeiden sind also die erste, die vierte und die letzte Zeile! Um z.B. die erste Zeile zu vermeiden, muss eine der atomaren Formeln den Wert 1 annehmen. Also erhalten wir die Disjunktion (A ∨ B ∨ C ), aus der 4. Zeile entsprechend (A ∨ ¬B ∨ ¬C ), und aus der letzten Zeile (¬A ∨ ¬B ∨ ¬C ). Damit lautet die gesuchte KNF wie folgt: F ≡ F 0 = (A ∨ B ∨ C ) ∧ (A ∨ ¬B ∨ ¬C ) ∧ (¬A ∨ ¬B ∨ ¬C ) Winter 2015/16 – Folie 8.2 – 29.10.2015 Logik und Diskrete Strukturen Einheit 8 Prof. Dr. Ulrich Hertrampf DNF aus der Wahrheitstafel Analog ist auch eine DNF direkt aus der Wahrheitstafel generierbar: A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 F 0 1 1 0 1 1 1 0 Für die DNF müssen wir umgekehrt die positiven Fälle aussuchen und mit ODER verknüpfen: Die 2. Zeile liefert (¬A ∧ ¬B ∧ C ) Die 3. Zeile liefert (¬A ∧ B ∧ ¬C ) Die 5. Zeile liefert (A ∧ ¬B ∧ ¬C ) Die 6. Zeile liefert (A ∧ ¬B ∧ C ) Die 7. Zeile liefert (A ∧ B ∧ ¬C ) Damit erhalten wir die folgende DNF: F ≡ F 0 = (¬A ∧ ¬B ∧ C ) ∨ (¬A ∧ B ∧ ¬C )∨ (A ∧ ¬B ∧ ¬C ) ∨ (A ∧ ¬B ∧ C ) ∨ (A ∧ B ∧ ¬C ) Winter 2015/16 – Folie 8.3 – 29.10.2015 Logik und Diskrete Strukturen Einheit 8 Prof. Dr. Ulrich Hertrampf Übung 19 Bilde DNF und KNF für folgende Formel: F = ((¬A → B) ∧ ((A ∧ ¬C ) ↔ B)) A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 Winter 2015/16 C 0 1 0 1 0 1 0 1 F 0 0 0 0 0 1 1 0 Die nebenstehende Wahrheitstafel liefert eine recht kurze DNF, nämlich: (A ∧ ¬B ∧ C ) ∨ (A ∧ B ∧ ¬C ) Die KNF ist länger - sie hat 6 Disjunktionen. Wie kann man eine kurze KNF finden? – Folie 8.4 – 29.10.2015 Logik und Diskrete Strukturen Einheit 8 Prof. Dr. Ulrich Hertrampf Komplexität der Normalformen Wie lang kann eine mit Wahrheitstafelmethode erzeugte DNF/KNF werden? Es ist offensichtlich, dass diese DNF und KNF zusammen immer von der Größenordnung n · 2n sind, wenn n atomare Formeln beteiligt sind. Das liegt daran, dass jede Zeile der Wahrheitstafel genau in einer der beiden Normalformen verwendet wird, wobei die entsprechende Konjunktion oder Disjunktion zu jeder atomaren Formel ein Literal enthält, also Größenordnung n hat. Allgemein muss gelten, dass es viele Formeln gibt, die weder eine kurze DNF noch eine kurze KNF haben. Den Beweis hierzu liefert ein einfaches Abzählargument. Winter 2015/16 – Folie 8.5 – 29.10.2015 Logik und Diskrete Strukturen Einheit 8 Prof. Dr. Ulrich Hertrampf Übung 20 Man soll zeigen, dass jede Formel in eine erfüllbarkeits-äquivalente Formel in sogenannter 3-KNF (mit linearer Länge) umgeformt werden kann. Den Beweis führt man über den zu der gegebenen Formel gehörenden Syntaxbaum. Details bitte selbst ausarbeiten. Winter 2015/16 – Folie 8.6 – 29.10.2015