KNF-Algorithmus

Werbung
Logik und Diskrete Strukturen (Sommer 2017)
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!
Einheit 8
– Folie 8.1 –
02.05.2017
Logik und Diskrete Strukturen (Sommer 2017)
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 )
Einheit 8
– Folie 8.2 –
02.05.2017
Logik und Diskrete Strukturen (Sommer 2017)
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
F ≡
B
0
0
1
1
0
0
1
1
F0
Einheit 8
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:
= (¬A ∧ ¬B ∧ C ) ∨ (¬A ∧ B ∧ ¬C )∨
(A ∧ ¬B ∧ ¬C ) ∨ (A ∧ ¬B ∧ C ) ∨ (A ∧ B ∧ ¬C )
– Folie 8.3 –
02.05.2017
Logik und Diskrete Strukturen (Sommer 2017)
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
Einheit 8
B
0
0
1
1
0
0
1
1
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 –
02.05.2017
Logik und Diskrete Strukturen (Sommer 2017)
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.
Einheit 8
– Folie 8.5 –
02.05.2017
Logik und Diskrete Strukturen (Sommer 2017)
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.
Einheit 8
– Folie 8.6 –
02.05.2017
Herunterladen