Für eine Reihe von Anwendungen ist es sinnvoll und notwendig, an Stelle einer aussagenlogischen Formel eine äquivalente aussagenlogische Formel zu verwenden, die eine standardisierte, vereinfachte Form aufweist.
Ein Literal ist eine aussagenlogische Variable oder das Negat einer solchen. Sind
Literale für
,
, so ist eine Formel in disjunktiver Normalform (DNF), wenn sie die Form
besitzt, oder in konjunktiver Normalform (KNF), wenn sie die Form
besitzt. Eine Formel in disjunktiver Normalform ist also eine Disjunktion von Konjunktionen von Literalen, eine Formel in konjunktiver Normalform eine Konjunktion von Disjunktionen von Literalen. Die Disjunktionen einer KNF werden auch Klauseln genannt, die KNF entsprechend Klauselnormalform. Spezialfälle für konjunktive beziehungsweise disjunktive Normalformen sind
beziehungsweise
.
Konjunktion und Disjunktion sind
Daher ist es möglich, für Formeln in KNF beziehungsweise DNF die folgende Mengenschreibweise zu verwenden:
Eine solche Literalmenge kann jedoch sowohl als DNF als auch als KNF interpretiert werden. Um Unklarheiten zu vermeiden, wollen wir diese Schreibweise ausschließlich für KNFs verwenden.
Im Folgenden wird nun die syntaktische (algebraische) Methode beschrieben, um zu einer beliebigen aussagenlogischen Formel die äquivalente KNF beziehungsweise DNF zu ermitteln. Eine andere Möglichkeit stellt die semantische Methode dar, die eine KNF beziehungsweise DNF an Hand der Wahrheitstafel einer Formel konstruiert. Die semantische Methode ist an dieser Stelle jedoch irrelevant, da der KNF-DNF-Konverter ausschließlich die syntaktische Methode verwendet.
Im Folgenden stehen ,
und
für beliebige Formeln
.
Schritt 1: Ersetze alle Operatoren durch ,
sowie
:
A ⊃ B | ¬A ∨ B | A ⊅ B | A ∧ ¬B | |||
A ⊂ B | A ∨ ¬B | A ⊄ B | ¬A ∧ ¬B | |||
A ↑ B | ¬A ∨ ¬B | A ↓ B | ¬A ∧ ¬B | |||
(A ≡ B) | (A ∧ B) (¬A ∧ ¬B) | (A ≢ B) | (A ∧ B) (¬A ∧ ¬B) |
Schritt 2: Schiebe alle Negationen direkt vor die Variablen und Konstanten (die ersten beiden Umformungen sind die De Morgan'schen Gesetze):
![]() |
![]() |
![]() |
Schritt 3: Eliminiere die Konstanten
und
; dabei darf auf die Kommutativität von Konjunktion und Disjunktion (siehe oben) nicht vergessen werden:
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Schritt 4: Wende die Distributivgesetze an. Dabei führt die linke Äquivalenz zu einer DNF, die rechte zu einer KNF; wieder ist die Kommutativität von Konjunktion und Disjunktion zu beachten.
![]() |
![]() |
Dieses Verfahren basiert auf drei Tatsachen:
Paul Staroch