Bisher Klassische Aussagenlogik (Syntax, Semantik) semantische Äquivalenz von Formeln äquivalentes Umformen von Formeln (syntaktisch) Normalformen: NNF, DNF, CNF, kanonische DNF und CNF Ablesen kanonischer NF aus Wahrheitswerttabellen Zusammenhänge zwischen logischen Formeln Booleschen Funktionen Schaltungen minimale DNF
DNF-Minimierung DNF-Minimierungsproblem: gegeben: Boolesche Funktion f : {0, 1} n {0, 1} (kanonische DNF ϕ) gesucht: minimale DNF ψ mit Semantik f (ϕ ψ) Minterm der DNF ϕ = i {1,...,n} ϕ i: Konjunktion ϕ i von Literalen Implikant der DNF ϕ: Konjunktion ψ von Literalen mit ψ ϕ. (Jeder Minterm von ϕ ist ein Implikant von ϕ.) Primimplikant der DNF ϕ: Implikant ψ = i {1,...,n} l i für DNF ϕ, wobei für alle k {1,..., n} gilt: ψ = i {1,...,n}\k l i ist kein Implikant für DNF ϕ Fakt Minimale DNF sind Disjunktionen von Primimplikanten. Beweis (Tafel)
Verfahren zur DNF-Minimierung gegeben: DNF ϕ gesucht : minimale DNF ψ mit ψ ϕ 1. Bestimmung aller Primimplikanten von ϕ (durch Anwendung der Äquivalenz (a b) ( a b) b) 2. ψ ist Disjunktion einer geeigneten Auswahl von Primimplikanten Bisher: graphisches Verfahren nach Karnaugh und Veitch (KV)
Karnaugh-Veitch Diagramme KV-Diagramm einer Booleschen Funktion f : {0, 1} n {0, 1} (kanonische DNF ϕ): Wertetabelle in einer geeigneten Anordnung (benachbarte Zellen unterscheiden sich in der Belegung genau einer Aussagenvariable) zweidimensionale Darstellung der Menge {0, 1} n (Ecken eines n-dimensionalen Würfels) für n > 5 unübersichtlich Beispiele: ϕ 1 = ( a b) (a b) ( a b) ϕ 2 = ( a b c) (a c) (a b c) Idee: Zusammenfassen von benachbarten Zellen (Teilwürfel der Größe 2 k ) mit 1-Einträgen im KV-Diagramm zu einem Block, der sich durch eine Konjunktion beschreiben lässt
Karnaugh-Veitch-Verfahren (KV) Ziel: Überdeckung der Zellen im KV-Diagramm durch (rechteckige) Blöcke mit Seitenlängen 2 n jede 1-Zelle überdeckt, möglichst wenige möglichst große Blöcke (Primimplikanten), Mehrfachüberdeckungen möglich Konjunktionen zur Beschreibung der Blöcke in KV-Diagramm sind Implikanten für ϕ minimierte DNF: Disjunktion von Primimplikanten (geeignete Auswahl) Ergebnis abhängig von der Wahl der Blöcke (Primimplikanten), keine eindeutige minimierte DNF
Quine-McCluskey-Verfahren (QMC) Bestimmung aller Primimplikanten: 1. binäre Darstellung der Minterme (Belegung in der Wahrheitswerttabelle) Minterme nach Anzahl der vorkommenden Einsen (Quersumme) sortieren 2. Spaltenweise Konstruktion einer Kürzungstabelle (Anwendung der Äquivalenz (a b) ( a b) b) Markierung der dabei verwendeten Konjunktionen Wildcard für eliminierte Variablen Einträge in Spalten repräsentieren Blöcke i-te Spalte enthält Blöcke der Größe 2 i Verfahren endet, wenn keine neuen Blöcke mehr entstehen (nach höchstens n Schritten) 3. Alle während der Konstruktion der Kürzungstabelle nicht markierten Konjunktionen sind Primimplikanten.
Auswahl der Primimplikantenmenge für DNF gegeben: Boolesche Funktion f : {0, 1} n {0, 1} (kanonische DNF ϕ) Menge P = {P 1,..., P k } aller Primimplikanten für ϕ gesucht: minimale DNF ψ mit Semantik f (ϕ ψ) Verfahren zur Bestimmung einer minimalen DNF ψ: 1. Auswahl der Menge {K 1,..., K l } P aller Primimplikanten, die eine Belegung als einzige überdecken (Kernprimimplikanten), 2. Löschen aller überflüssigen Primimplikanten aus P { ( l )} P i P Mod(P i ) Mod K i P = P \ 3. Auswahl einer minimalen Überdeckung {K l+1,..., K p } der Restmenge P (aufwendigster Teil des Verfahrens) 4. minimale DNF ψ = p i=1 K i Minimale DNF sind i.a. nicht eindeutig. i=1
Minimale CNF minimale CNF für ϕ AL(P): CNF mit möglichst wenigen Vorkommen von Aussagenvariablen (varcount(ϕ) minimal) CNF-Minimierung: gegeben: CNF ϕ gesucht: minimale CNF ψ mit ϕ ψ Klausel : Disjunktion von Literalen Klausel der CNF ϕ: Disjunktion ψ von Literalen mit ϕ ψ. Primklausel der CNF ϕ: Klausel ψ = i {1,...,n} l i für DNF ϕ, wobei für alle k {1,..., n} gilt: ψ = i {1,...,n}\k l i ist keine Klausel für DNF ϕ
Verfahren zur CNF-Minimierung Idee: Minimale CNF sind Konjunktionen von Primklauseln. KV-Verfahren analog zu DNF-Minimierung: Überdeckung der Zellen mit Wert 0 Negieren aller Literale statt und statt