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)|x
Im 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*b
z+(x+y)*(z+x)
z+(x+y)*(z+x)*(x+y)
z+(x+y)*(z+x)*x
z+(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