Eine kanonische Normalform ist eine Form, in die jede Funktion eindeutig gebracht werden kann.
Wichtig sind folgende Normalformen:
Disjunktive Normalform (DNF)
Konjunktive Normalform (KNF)
Reed-Muller-Form (RMF)
Es ist üblich die DNF bzw. die KNF aus sog. Mintermen bzw. Maxtermen aufzubauen. Minterme wurden schon unter der Bezeichnung Einspunktfunktion definiert:
Def. mTn heißt Minterm , wenn es genau ein xBn gibt, so dass m(x) = 1 und m(y) = 0 yBn, y≠x .
MTn heißt Maxterm , wenn es genau ein xBn gibt, so dass M(x) = 0 und M(y) = 1 yBn, y≠x .
In Tn gibt es genau 2n Minterme und 2n Maxterme.
Beispiel : T3 Tabellen für alle Minterme und Maxterme m1 ... m8 ; M1 ... M8
a b c | m1 m2 m3 m4 m5 m6 m7 m8 M1 M2 M3 M4 M5 M6 M7 M8 _______|____________________________________________________ 0 0 0 | 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 1 | 0 1 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 | 0 0 1 0 0 0 0 0 1 1 0 1 1 1 1 1 0 1 1 | 0 0 0 1 0 0 0 0 1 1 1 0 1 1 1 1 1 0 0 | 0 0 0 0 1 0 0 0 1 1 1 1 0 1 1 1 1 0 1 | 0 0 0 0 0 1 0 0 1 1 1 1 1 0 1 1 1 1 0 | 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 1 1 1 1 | 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0
Def. Sei fTn und fi seien die Elemente der Funktionstabelle von f (i = 1,...,2n) . Dann ist
2n f = fi∩mi = f1∩m1 f2∩m2 f3∩m3 ... i=1
die disjunktive Normalform (DNF) und
2n f = ∩ fiMi = (f1M1) ∩ (f2M2) ∩ (f3M3) ∩ ... i=1
die konjunktive Normalform (KNF) von f .
Bei der Konjunktiven Normalform beachte man, dass aus fi = 1 folgt:
fimi = 1Mi = 1 . Diese Terme können also weggelassen werden.
Nur die Terme mit fi = 0 verbleiben in der konjunktiven Normalform.
Die Reed-Muller-Form (RMF) von f ist
2n f = Σ ri*pi i=1
wo das Symbol Σ die wiederholte Addition im GF(2) bedeutet.
riB sind Koeffizienten und pi die rekursiv definierten Basisfunktionen
p1 = 1; |
---|
p2 = p1*x1 = x1 |
p3 = p1*x2 = x2 |
p4 = p2*x2 = x1*x2 |
p5 = p1*x3 = x3 |
p6 = p2*x3 = x1*x3 |
p7 = p3*x3 = x2*x3 |
p8 = p4*x3 = x1*x2*x3 |
p9 = p1*x4 = x4 |
usw. |
Die xi sind die Variablen der Funktionen. Mit dem Infixsymbol * ist die Multiplikation im GF(2) also das UND gemeint.
Diese Basisfunktionen lassen sich automatisch erzeugen (hier mit den Variablen a, b, c, ...):
rmbasis(1)
rmbasis(3)
rmbasis(5)