gesucht : möglichst kleine DNF für eine Boolesche Funktion f
so wenig Konjunktionen wie möglich (Elementarkonjunktionen K (x1 , ... , xn ), die zu einer DNF von f gehören)
so wenigLiterale wie möglich
Eine DNF, die diesen Bedingungen genügt, ist eine minimaleDNF für f.
Relationen zwischen Konjunktionen
K1 (x1, ... , xn ) und K2 (x1, ... , xn) seien Elementarkonjunktionen. K1 ist in K2 enthalten bzw. ist ein Teilintervall (Teilwürfel) von K2, wenn K1 ≤ K2, d.h. wenn ON(K1) ⊆ ON(K2). Das ist genau dann der Fall, wenn alle Literale von K2 in K1 vorkommen. Anders formuliert: K2 überdeckt K1.
Beispiel:
n = 5
x_1 ¬x_2 x_4 ¬x_5 ist in x_1 ¬x_5 enthalten, denn es gilt: 10–10 ⊆ 1–––0.
x_2 x_4 ist nicht in ¬x_1 x_2 x_3 enthalten, und auch nicht umgekehrt; beide Intervalle überlappen sich. –1–1- / 011––
Implikant
Eine Elementarkonjunktion K (x1 , ... , xn ) = xi1a1xi2a2⋅⋅⋅xikak heißt ein Implikant der n–stelligen Funktion f ( x1, ... , xn ),
wenn K ≤ f,
also wenn für allex1 , ... , xn gilt: K (x1 , ... , xn ) ≤ f (x1 , ... , xn ),
also wenn ON(K) ⊆ ON(f).
Primimplikant
Ein Implikant K von f heißt Primimplikant, wenn es keinen Implikanten K′ von f gibt, der echt größer als K ist, also für den gilt ON(K) ⊂ ON(K′).
Beispiel Implikant und Primimplikant
A) {(1,1,1), (1,1,0), (1,0,1), (1,0,0), (0,0,0)}
B) {010,011}
C) {110}
D) {110,111}
E) {100,101,110,111}
F) {000,100}
G) nein
H) ja
I) ja
J) ja
K) ja
L) nein
M) nein
N) nein
O) ja
P) ja
Implikanten und Primimplikanten
Eine Konjunktion K ist genau dann Implikant von f, wenn das zu K gehörige On–Set ON(K) ein Teilintervall von ON(f) ist. K ist genau dann Primimplikant, wenn ON(K) ein maximales Teilintervall von ON(f) ist. Jeder Implikant von f ist in mindestens einem Primimplikanten enthalten.
Praktische Konsequenzen
Aus einem Implikanten K′ von f kann man einen Primimplikanten K machen, der K′ enthält, indem man Literale aus K′ herausstreicht, solange das zugehörigeIntervall von K noch inON(f)liegt. Zu jeder Booleschen Funktion gibt es eine minimale DNF, in der alle vorkommenden Konjunktionen Primimplikanten sind. Wenn f = K1∨K2∨...∨Km eine minimale DNF für f ist, dann muss jede Konjunktion Ki darin ein Primimplikant sein.
Verkürzte DNF
Es sei f (x1 , ... , xn) eine Boolesche Funktion und K1 , ... ,Km seien sämtliche Primimplikanten von f. Dann gilt f = K1 ∨ K2 ∨ . . . ∨ Km. Diese DNF, die aus allen Primimplikanten von f besteht, heißt die verkürzte oder gekürzte DNF von f. (im Gegensatz zur VDNF)
Sie ist bis auf die Reihenfolge der Primimplikanten eindeutig bestimmt. Die verkürzte DNF ist also (bis auf die Reihenfolge) eine echteNormalform!
Überdeckung
Die Funktion f wird von den Primimplikanten überdeckt. Es kann aber sein, dass auch eine Teilmenge der Primimplikanten bereits ausreicht, um f zu überdecken.
Zweistufige Minimierung
Schritt 1: Man finde alle Primimplikanten von f. (Ermittlung der verkürzten DNF)
Schritt 2: Aus diesen wähle man eine kleinsteMenge von Primimplikanten aus, die ON(f)gemeinsamüberdecken.
Streichung derjenigen Primimplikanten, die zur Überdeckung von ON(f)nicht nötig sind, weil andere Primimplikanten dies bereits erledigen.
(im Allgemeinen schwierig und nicht eindeutig)
Karnaugh-Veitch-Diagramme
zweidimensionale Repräsentation des Booleschen Würfels, auch für größere n praktikabel
(auch „Symmetriediagramm“)
A) 00
B) 01
C) 11
D) 10
E) 000
F) 100
G) 101
H) 001
I) 010
J) 110
K) 111
L) 011
M) 0000
N) 0100
O) 0101
P) 0001
Q) 1000
R) 1100
S) 1101
T) 1001
U) 1010
V) 1110
W) 111
X) 1011
Y) 0010
Z) 0110
[) 0111
\) 0011
Bildung von KV-Diagrammen
A) a
B) a
C) b
D) a
E) c
F) b
G) a
H) c
I) b
J) d
K) a
L) c
M) e
N) a
O) b
P) d
Q) a
R) a
S) e
T) b
U) d
V) b
W) d
X) f
Minimierung mit KV-Diagrammen
Intervalle entsprechen im KV-Diagramm Rechtecken, deren Kantenlänge Zweierpotenzen sind:
rechteckige Blöcke von Einsen → Implikanten
maximale derartige Blöcke → Primimplikanten
Gegenüberliegende Ränder und symmetrische Bereiche sind benachbart.
Beispiel:
Funktion vom Rang 4
8 Bereiche von Rang 3
1 Bereich vom Rang 2
Auswahl einer minimalen Überdeckung wie beim Booleschen Würfel
Verfahren von Quine/McClusky
gegeben: Boolesche Funktion f
Ermittlung aller Fundamentalkonjunktionen von f (vollständige DNF)
Ermittlung aller Primimplikanten von f (verkürzte DNF bzw. größtmögliche Intervalle)
Auswahl minimaler Überdeckungen (mit Hilfe einer Überdeckungstabelle)
Quine/McClusky Schritt 1
Ermittlung aller Fundamentalkonjunktionen
Gruppierung nach der Anzahl der vorkommenden negierten Variablen
vertikale Anordnung als erste Spalte einer Tabelle
Vereinfachung:
Verwendung der Intervallschreibweise
0 für negierte
1 für nicht negierte Variablen
– für nicht vorkommende Variablen
A) 01111
B) 10111
C) 11101
D) 00111
E) 01110
F) 10101
G) 00110
H) 01100
I) 00100
Quine/McClusky Schritt 2
Ermittlung aller Primimplikanten
paarweiserVergleich der Konjunktionen benachbarter Gruppen
Konjunktionen, die sich nur in einerVariable unterscheiden:
Markierung in der alten Spalte
Verschmelzung zu einem Intervall
Übernahme in die nächste Spalte
aus dem Vergleich benachbarter Gruppen entstehende Konjunktionen bilden eine Gruppe der neuen Spalte
Wiederholung bis eine Verschmelzungenmehr möglich ist
→ schrittweiser Aufbau von neuen Spalten der Tabelle
A) 0-111
B) 0111-
C) -0111
D) 101-1
E) 1-101
Verschmelzen von Konjunktionen
Zwei Konjunktionen K1 und K2 können genau dann verschmolzen werden, wenn sie in allen Literalenbis auf einesübereinstimmen. Das Literalxi , in dem sich K1 und K2 unterscheiden, muss in der einen Konjunktion negiert, in der anderen unnegiert vorkommen. Ergebnis der Verschmelzung ist die Konjunktion, die aus K1 bzw. K2 durch Streichen von xi entsteht. K xi ∨ K ¬xi = K
Quine/McClusky Schritt 3
Überdeckungstabelle
je eine Zeile für Elemente aus ON(f) (d.h. Fundamentalkonjunktionen)
je eine Spalte für die Primimplikanten
Markierung, wenn Primimplikant eine Belegung überdeckt
Zeilen mit nur einer Markierung enthalten wesentlichePrimimplikanten, diese müssen vorkommen
→ diese Zeilen und Spalten aus der Tabelle entfernen
in der Resttabelle eine minimale Überdeckung der Belegungen suchen
(Siehe "minimierungsverfahren" p38ff., zu viele Bilder)
Minimierung mit Don’t Cares
Don’t-Care-Bedingungen:
Die Funktion ist nichtan allen Stellenfestgelegt, d.h. es ist “egal”, welcherFunktionswert hier angenommen wird.
n–stellige Boolesche Funktion mit don’t–care Bedingungen:
f : {0, 1}^n → {0, 1, *}
Neben ON(f) und OFF(f) gibt es dann die Menge der Don’t-Care Stellen: