| Interactive NoteBook (c) Dr. Stefan Bosse |
Lese Folien 27 bis 65 hier Modul C.
Eine boolesche Funktion f(a,b,c,..) bildet eine Menge von n Eingabevariablen auf m Ausgabevariablen ab:
Boolesche Funktionen bestehen aus Variablen, Verknüpfungen, und Werten.
+*!0,1( expr )y=expr(expr)|xIm ersten Beispiel können Boolesche Funktionen algebraisch und symbolisch automatisch evaluiert und vereinfacht werden:
Boolesche Funktionsevaluierung (Symbolische Vereinfachung)|
▸
|
✗
|
!a*b*!c+!a*b*c+a*bz+(x+y)*(z+x)z+(x+y)*(z+x)*(x+y)z+(x+y)*(z+x)*xz+(x+y)*(z+x)*(x+1)Im nächsten Beispiel kann aus einer booleschen Funktion eine Funktionstabelle erstellt werden.
Boolesche Funktionsevaluierung (Erzeugung Tabelle)|
▸
|
✗
|
|
|
|
Teste ob die automatische Reduktion korrekt ist anhand der vorherigen Aufgabenbeispiele und dem Vergleich über die Funktionstabelle. Dazu kann im Tabellengenerator die Syntax y1=a+b+c y2=a+b verwendet werden (multiple BF, je eine BF pro Zeile).
Erstelle im nächsten Schritt die DNF und KNF Terme in folgender Funktionstabelle (jeweils entsprechend für y=1/0 Zeilen):
Hier kann die Funktion auf Korrektheit getestet werden:
Test 1|
▸
|
✗
|
|
|
|
Lese Folien 66 bis 78 hier Modul C.
1986 von R. Bryant vorgeschlagen
Eine Boolesche Funktion f wird repräsentiert als gerichteter azyklischer Graph (DAG):
Terminalknoten stellen konstante Funktion 0 bzw. 1 dar
Innere Knoten interpretiert als:
Es gibt eine Variablenordnung ≺ bei der Entwicklung von BDDs
Größe des BDDs kann stark von der gewählten Variablenordnung ≺ abhängen
(a+b+c)|a
Im folgenden Beispiel kann ein Funktionsausdruck ε nach einer Variable x ∈ vars(ε) zerlegt werden:
Shanon Zerlegung|
▸
|
✗
|
Für folgende Aufgabe kann nachfolgende Graphenvisualisierung genutzt werden.
Leite für die Funktion f(a,b,c,d)=!a*!b*!c+!a*b*!c+a*b*!c+a*!b*c*d+!a*b*c einen BDD ab.
[a,b,c,d][d,b,a,c][d,c,b,a]Wie unterscheiden sich die Bäume? Gibt die Höhe (Anzahl der Ebenen) und die Anzahl der Knoten an.
<node id> : <var name> ( <left id>|0 , <right id>|1 ) erzeugt den Wurzelknoten oder einen inneren Knoten des Graphens mit einem beliebigen Index id, z.B. 1 oder A1. Der Variablename ergibt sich aus der aktuellen Shanonzerlegung sowie und die Nachfolgeknoten. <node id>:1 ist Blattknoten mit dem Booleschen Wert 1A1,A2,.., Baum 2 B1,B2,.. usw.; getrennt angegeben werden.|
▸
|
✗
|
|
|
▸
|
✗
|
|
Frage. Welche Reduktionen wurden im obigen Beispiel durchgeführt (A ⇒ B ⇒ C)?
Reduziere folgenden BDD und füge ihn zu dem nicht reduzierten Baum:
Aufgabe BDD Reduktion|
▸
|
✗
|
|
Autor: Stefan Bosse
Version: 2.12.2019 Draft!
Tutorial 2