In der Informatik ist ein binäres Entscheidungsdiagramm ( BDD ) oder verzweigtes Programm eine Datenstruktur zur Darstellung einer booleschen Funktion . Abstrakter betrachtet, lassen sich BDDs als komprimierte Repräsentation von Mengen oder Relationen verstehen . Im Gegensatz zu anderen komprimierten Repräsentationen werden Operationen direkt auf der komprimierten Repräsentation ausgeführt, also ohne Dekomprimierung.
Ähnliche Datenstrukturen sind die Negationsnormalform (NNF), Zhegalkin-Polynome und propositionale gerichtete azyklische Graphen (PDAG).
Definition
Eine Boolesche Funktion lässt sich als gerichteter, azyklischer Graph mit Wurzel darstellen , der aus mehreren Entscheidungsknoten und zwei Endknoten besteht. Die beiden Endknoten sind mit 0 (FALSCH) und 1 (WAHR) beschriftet. Jeder Entscheidungsknoten ist mit einer Booleschen Variable beschriftet und hat zwei Kindknoten, den sogenannten unteren und den oberen Kindknoten. Die Kante von einem Knoten zu einem unteren (oder oberen) Kindknoten repräsentiert die Zuweisung des Wertes FALSCH (bzw. WAHR) an die Variable . Ein solches BDD wird als „geordnet“ bezeichnet, wenn verschiedene Variablen auf allen Pfaden von der Wurzel in derselben Reihenfolge vorkommen. Ein BDD heißt „reduziert“, wenn die folgenden beiden Regeln auf seinen Graphen angewendet wurden:
- Verschmelze alle isomorphen Teilgraphen.
- Entferne alle Knoten, deren zwei Kinder isomorph sind.
Im allgemeinen Sprachgebrauch bezeichnet der Begriff BDD fast immer ein reduziertes geordnetes binäres Entscheidungsdiagramm ( ROBDD , in der Literatur verwendet, wenn die Aspekte der Ordnung und Reduktion betont werden sollen). Der Vorteil eines ROBDD liegt darin, dass es für eine bestimmte Funktions- und Variablenordnung kanonisch (bis auf Isomorphie eindeutig) ist. [ 1 ] Diese Eigenschaft macht es nützlich für die Prüfung funktionaler Äquivalenz und andere Operationen wie das Mapping funktionaler Technologien.
Ein Pfad vom Wurzelknoten zum 1-Terminal repräsentiert eine (möglicherweise partielle) Variablenzuweisung, für die die entsprechende boolesche Funktion wahr ist. Beim Abstieg des Pfades zu einem niedrigeren (oder höheren) Kindknoten wird dessen Variable auf 0 (bzw. 1) gesetzt.
Beispiel
Die linke Abbildung unten zeigt einen binären Entscheidungsbaum (ohne Reduktionsregeln) und eine Wahrheitstabelle , die jeweils die Funktion darstellen . Im linken Baum lässt sich der Funktionswert für eine gegebene Variablenbelegung bestimmen, indem man einem Pfad im Graphen zu einem Endknoten folgt. In den Abbildungen unten stellen gestrichelte Linien Kanten zu einem Kind mit niedrigem Wert dar, durchgezogene Linien hingegen Kanten zu einem Kind mit hohem Wert. Um also den Funktionswert zu finden , beginnt man bei x₁ , folgt der gestrichelten Linie zu x₂ ( da x₁ den Wert 0 hat) und anschließend den beiden durchgezogenen Linien (da x₂ und x₃ jeweils den Wert 1 haben). Dies führt zum Endknoten 1, der den Funktionswert angibt .
Der binäre Entscheidungsbaum in der linken Abbildung kann durch maximale Reduktion gemäß den beiden Reduktionsregeln in ein binäres Entscheidungsdiagramm umgewandelt werden. Das resultierende BDD ist in der rechten Abbildung dargestellt.
![]() |
Eine weitere Notation zum Schreiben dieser Booleschen Funktion ist .
Komplementäre Kanten

Ein ROBDD lässt sich noch kompakter darstellen, indem man komplementäre Kanten, auch Komplementverbindungen genannt, verwendet . [ 2 ] [ 3 ] Das resultierende BDD wird manchmal auch als typisiertes BDD [ 4 ] oder signiertes BDD bezeichnet . Komplementäre Kanten entstehen, indem man Kanten niedriger Ordnung als komplementär oder nicht komplementär annotiert. Eine komplementäre Kante verweist auf die Negation der Booleschen Funktion, die dem Knoten entspricht, auf den die Kante zeigt (die Boolesche Funktion, die durch das BDD mit diesem Knoten als Wurzel repräsentiert wird). Kanten höherer Ordnung werden nicht komplementiert, um sicherzustellen, dass die resultierende BDD-Darstellung eine kanonische Form ist. In dieser Darstellung haben BDDs aus den unten erläuterten Gründen nur einen einzigen Blattknoten.
Zwei Vorteile der Verwendung komplementärer Kanten bei der Darstellung von BDDs sind:
- Die Berechnung der Negation eines BDD benötigt konstante Zeit.
- Der Speicherplatzbedarf (d. h. der benötigte Arbeitsspeicher) wird reduziert (um höchstens den Faktor 2).
Knuth [ 5 ] vertritt jedoch die gegenteilige Ansicht:
Obwohl solche Verknüpfungen von allen gängigen BDD-Paketen verwendet werden, sind sie nur bedingt empfehlenswert, da die Computerprogramme dadurch deutlich komplexer werden. Die Speichereinsparung ist in der Regel vernachlässigbar und beträgt maximal den Faktor 2; zudem zeigen die Experimente des Autors nur geringe Laufzeitvorteile.
In dieser Darstellung ist ein Verweis auf ein BDD eine (möglicherweise komplementierte) Kante, die auf die Wurzel des BDD verweist. Dies steht im Gegensatz zu einem Verweis auf ein BDD in der Darstellung ohne komplementierte Kanten, der dem Wurzelknoten des BDD entspricht. Der Grund, warum ein Verweis in dieser Darstellung eine Kante sein muss, liegt darin, dass für jede boolesche Funktion die Funktion selbst und ihre Negation durch eine Kante zur Wurzel eines BDD und eine komplementierte Kante zur Wurzel desselben BDD repräsentiert werden. Daher benötigt die Negation konstante Zeit. Dies erklärt auch, warum ein einzelner Blattknoten ausreicht: FALSCH wird durch eine komplementierte Kante repräsentiert, die auf den Blattknoten verweist, und WAHR durch eine normale Kante (d. h. nicht komplementiert), die auf den Blattknoten verweist.
Nehmen wir beispielsweise an, eine boolesche Funktion wird durch ein BDD mit komplementären Kanten dargestellt. Um den Wert der booleschen Funktion für eine gegebene Belegung der Variablen mit booleschen Werten zu ermitteln, beginnen wir an der Referenzkante, die auf die Wurzel des BDD zeigt, und folgen dem Pfad, der durch die gegebenen Variablenwerte definiert ist (einer niedrigen Kante, wenn die Variable, die einen Knoten kennzeichnet, den Wert FALSE hat, und einer hohen Kante, wenn die Variable, die einen Knoten kennzeichnet, den Wert TRUE hat), bis wir den Blattknoten erreichen. Auf diesem Pfad zählen wir die durchlaufenen komplementären Kanten. Wenn wir beim Erreichen des Blattknotens eine ungerade Anzahl komplementärer Kanten durchlaufen haben, ist der Wert der booleschen Funktion für die gegebene Variablenbelegung FALSE; andernfalls (wenn wir eine gerade Anzahl komplementärer Kanten durchlaufen haben) ist der Wert der booleschen Funktion für die gegebene Variablenbelegung TRUE.
Rechts ist ein Beispieldiagramm eines BDD in dieser Darstellung abgebildet. Es repräsentiert denselben booleschen Ausdruck wie die obigen Diagramme. Niedrige Kanten sind gestrichelt, hohe Kanten durchgezogen, und komplementäre Kanten werden durch einen Kreis an ihrem Ursprung gekennzeichnet. Der Knoten mit dem @-Symbol stellt die Referenz zum BDD dar; die Referenzkante ist also die Kante, die von diesem Knoten ausgeht.
Geschichte
Die grundlegende Idee, auf der die Datenstruktur basiert, ist die Shannon-Entwicklung . Eine Schaltfunktion wird durch die Zuweisung einer Variablen in zwei Teilfunktionen (Kofaktoren) aufgeteilt (vgl. Wenn-Dann-Sonst-Normalform ). Betrachtet man eine solche Teilfunktion als Teilbaum, lässt sie sich durch einen binären Entscheidungsbaum darstellen . Binäre Entscheidungsdiagramme (BDDs) wurden von C. Y. Lee [ 6 ] eingeführt und von Sheldon B. Akers [ 7 ] und Raymond T. Boute [ 8 ] weiterentwickelt und bekannt gemacht . Unabhängig von diesen Autoren realisierte Yu. V. Mamrukov ein BDD unter dem Namen „kanonische Klammerform“ in einem CAD-System zur Analyse geschwindigkeitsunabhängiger Schaltungen [ 9 ] . Das volle Potenzial effizienter Algorithmen auf Basis dieser Datenstruktur wurde von Randal Bryant an der Carnegie Mellon University untersucht . Seine wichtigsten Erweiterungen bestanden in der Verwendung einer festen Variablenreihenfolge (für die kanonische Darstellung) und gemeinsam genutzter Teilgraphen (zur Komprimierung). Die Anwendung dieser beiden Konzepte führt zu einer effizienten Datenstruktur und Algorithmen zur Darstellung von Mengen und Relationen. [ 10 ] [ 11 ] Durch die Erweiterung der gemeinsamen Nutzung auf mehrere BDDs, d. h. ein Teilgraph wird von mehreren BDDs verwendet, wird die Datenstruktur Shared Reduced Ordered Binary Decision Diagram (SDRDD) definiert. [ 2 ] Der Begriff BDD wird heute allgemein für diese spezielle Datenstruktur verwendet.
In seinem Video-Vortrag „ Spaß mit binären Entscheidungsdiagrammen (BDDs)“ bezeichnet Donald Knuth BDDs als „eine der wenigen wirklich grundlegenden Datenstrukturen, die in den letzten fünfundzwanzig Jahren entwickelt wurden“ und erwähnt, dass Bryants Arbeit von 1986 einige Zeit lang zu den meistzitierten Arbeiten in der Informatik gehörte. [ 12 ]
Adnan Darwiche und seine Mitarbeiter haben gezeigt, dass BDDs eine von mehreren Normalformen für Boolesche Funktionen darstellen, die jeweils durch eine unterschiedliche Kombination von Anforderungen induziert werden. Eine weitere wichtige Normalform, die Darwiche identifiziert hat, ist die zerlegbare Negationsnormalform (DNNF).
Anwendungen
BDDs werden in CAD -Software zur Schaltungssynthese ( Logiksynthese ) sowie zur formalen und Netzwerkverifikation umfassend eingesetzt . Es gibt einige weniger bekannte Anwendungen von BDDs, darunter Fehlerbaumanalyse , Bayes'sche Inferenz, Produktkonfiguration und private Informationssuche . [ 13 ] [ 14 ]
Jedes beliebige BDD (auch wenn es nicht reduziert oder geordnet ist) lässt sich direkt in Hardware implementieren, indem jeder Knoten durch einen 2-zu-1- Multiplexer ersetzt wird; jeder Multiplexer kann direkt mit einer 4-LUT in einem FPGA realisiert werden . Die Umwandlung eines beliebigen Netzwerks von Logikgattern in ein BDD ist hingegen nicht so einfach (anders als beim UND-Inverter-Graphen ).
BDDs wurden in effizienten Datalog- Interpretern eingesetzt. [ 15 ]
Variable Reihenfolge
Die Größe des BDD wird sowohl durch die dargestellte Funktion als auch durch die gewählte Variablenreihenfolge bestimmt. Es gibt Boolesche Funktionen, deren Anzahl an Knoten je nach Variablenreihenfolge bestenfalls linear (in n ) und schlimmstenfalls exponentiell ist (z. B. ein Ripple-Carry-Addierer ). Betrachten wir die Boolesche Funktion . Bei der Variablenreihenfolge benötigt das BDD Knoten, um die Funktion darzustellen. Bei der Reihenfolge besteht das BDD aus Knoten.
Bei der praktischen Anwendung dieser Datenstruktur ist die Variablenreihenfolge von entscheidender Bedeutung. Das Problem, die optimale Variablenreihenfolge zu finden, ist NP-schwer . [ 16 ] Für jede Konstante c > 1 ist es sogar NP-schwer, eine Variablenreihenfolge zu berechnen, die zu einer OBDD führt, deren Größe höchstens c -mal größer ist als die einer optimalen. [ 17 ] Es existieren jedoch effiziente Heuristiken zur Lösung dieses Problems. [ 18 ]
Verfeinerungen
Es gibt Funktionen, deren Graphgröße stets exponentiell ist – unabhängig von der Variablenreihenfolge. Dies gilt beispielsweise für die Multiplikationsfunktion. [ 1 ] Tatsächlich besitzt die Funktion, die das mittlere Bit des Produkts zweier n-Bit-Zahlen berechnet, kein OBDD, das kleiner als n Knoten ist. [ 19 ] (Hätte die Multiplikationsfunktion OBDDs polynomieller Größe, würde dies zeigen, dass die Faktorisierung ganzer Zahlen in P/poly liegt , was jedoch nicht bekannt ist. [ 20 ] ) Ein weiteres bekanntes Beispiel ist die Funktion mit versteckten Gewichten, die als einfachste Funktion mit einem BDD exponentieller Größe gilt. [ 21 ]
Forscher haben Verbesserungen an der BDD-Datenstruktur vorgeschlagen, die zu einer Reihe verwandter Graphen geführt haben, wie zum Beispiel:
- BMD ( Binärmomentdiagramme ),
- ZDD ( Zero-Suppressed Decision Diagrams ),
- Bei FBDD ( Free Binary Decision Diagrams ) liest jeder Pfad von der Wurzel zu einem Blattknoten jede Variable höchstens einmal. Jedes OBDD (Object-Based Decision Diagram) ist ein FBDD.
- FDD ( funktionale Entscheidungsdiagramme ),
- MDD ( Mehrwertige Entscheidungsdiagramme ), die BDDs verallgemeinern, indem sie Entscheidungsvariablen erlauben, mehr als zwei Werte anzunehmen, [ 22 ].
- PDD ( Paritätsentscheidungsdiagramme ),
- MTBDD (Multiple-Terminal BDDs),
- TDD ( ternäre Entscheidungsdiagramme ), bei dem ein "unbekannter" Zweig hinzugefügt wird, um aufeinanderfolgende Vereinigungs-/Disjunktionsoperationen verzögert auszuführen und so ein exponentielles Größenwachstum zu vermeiden. [ 23 ]
- NDD ( Netzwerkentscheidungsdiagramme ),
Logische Operationen auf BDDs
Viele logische Operationen auf BDDs können durch Graphmanipulationsalgorithmen mit polynomieller Laufzeit implementiert werden: [ 24 ] : 20
Die mehrmalige Wiederholung dieser Operationen, beispielsweise die Bildung der Konjunktion oder Disjunktion einer Menge von BDDs, kann im schlimmsten Fall zu einem exponentiell großen BDD führen. Dies liegt daran, dass jede der vorhergehenden Operationen für zwei BDDs ein BDD mit einer Größe proportional zum Produkt der Größen der BDDs erzeugen kann, und folglich kann die Größe für mehrere BDDs exponentiell mit der Anzahl der Operationen wachsen. Die Reihenfolge der Variablen muss daher erneut überdacht werden; eine für (einige) der BDDs sinnvolle Reihenfolge ist möglicherweise nicht optimal für das Ergebnis der Operation. Da die Konstruktion des BDD einer Booleschen Funktion das NP-vollständige Problem der Booleschen Erfüllbarkeit und das co-NP-vollständige Tautologieproblem löst , kann die Konstruktion des BDD exponentiell in der Größe der Booleschen Formel dauern, selbst wenn das resultierende BDD klein ist.
Die Berechnung existentieller Abstraktion über mehrere Variablen reduzierter BDDs ist NP-vollständig. [ 25 ]
Das Zählen von Modellen, also das Ermitteln der Anzahl erfüllender Belegungen einer Booleschen Formel, ist für BDDs in Polynomialzeit möglich. Für allgemeine Aussagenlogik ist das Problem ♯P -vollständig, und die besten bekannten Algorithmen benötigen im schlechtesten Fall exponentielle Laufzeit.
Siehe auch
- Boolesche Erfüllbarkeitsproblem , das kanonische NP-vollständige Berechnungsproblem
- L/poly , eine Komplexitätsklasse , die strikt die Menge der Probleme mit BDDs polynomieller Größe enthält.
- Modellprüfung
- Radixbaum
- Satz von Barrington
- Hardwarebeschleunigung
- Karnaugh-Diagramm , eine Methode zur Vereinfachung von Ausdrücken der Booleschen Algebra
- Nullunterdrücktes Entscheidungsdiagramm
- Algebraisches Entscheidungsdiagramm , eine Verallgemeinerung von BDDs von zweielementigen auf beliebige endliche Mengen
- Satzentscheidungsdiagramm , eine Verallgemeinerung von OBDDs
- Einflussdiagramm
Referenzen
- ^ a b Bryant, Randal E. (August 1986). „Graph-Based Algorithms for Boolean Function Manipulation“ (PDF) . IEEE Transactions on Computers . C-35 (8): 677–691 . CiteSeerX 10.1.1.476.2952 . doi : 10.1109/TC.1986.1676819 . S2CID 10385726 .
- ^ a b Brace, Karl S.; Rudell, Richard L.; Bryant, Randal E. (1990). „Effiziente Implementierung eines BDD-Pakets“. Proceedings der 27. ACM/IEEE Design Automation Conference (DAC 1990) . IEEE Computer Society Press. S. 40–45 . doi : 10.1145/123186.123222 . ISBN 978-0-89791-363-8Die
- ^ Somenzi, Fabio (1999). „Binäre Entscheidungsdiagramme“ (PDF) . Entwurf von Berechnungssystemen . NATO Science Series F: Computer- und Systemwissenschaften. Band 173. IOS Press. S. 303–366 . ISBN 978-90-5199-459-9Die
- ^ Jean-Christophe Madre; Jean-Paul Billon (1988). „Beweis der Korrektheit von Schaltungen durch formalen Vergleich zwischen erwartetem und extrahiertem Verhalten“. Proceedings der 25. ACM/IEEE-Konferenz über Entwurfsautomatisierung, DAC '88, Anaheim, CA, USA, 12.– 15 . Juni 1988, S. 205–210 . doi : 10.1109/DAC.1988.14759 . ISBN 0-8186-0864-1Die
- ^ Knuth, DE (2009). Faszikel 1: Bitweise Tricks & Techniken; Binäre Entscheidungsdiagramme . Die Kunst der Computerprogrammierung . Band 4. Addison–Wesley. ISBN 978-0-321-58050-4DieEntwurf von Faszikel 1b, archiviert am 12.03.2016 in der Wayback Machine , zum Download verfügbar.
- ^ Lee, C. Y. (1959). „Darstellung von Schaltkreisen durch Binär-Entscheidungsprogramme“. Bell System Technical Journal . 38 (4): 985–999 . doi : 10.1002/j.1538-7305.1959.tb01585.x .
- ^ Akers, Jr., Sheldon B (Juni 1978). „Binäre Entscheidungsdiagramme“. IEEE Transactions on Computers . C-27 (6): 509–516 . doi : 10.1109/TC.1978.1675141 . S2CID 21028055 .
- ^ Boute, Raymond T. (Januar 1976). „Die binäre Entscheidungsmaschine als programmierbare Steuerung“. EUROMICRO Newsletter . 1 (2): 16–22 . doi : 10.1016/0303-1268(76)90033-X .
- ^ Mamrukov, Yu. V. (1984). Analyse aperiodischer Schaltungen und asynchroner Prozesse (Dissertation). Leningrader Elektrotechnisches Institut.
- ^ Bryant, Randal E. (1986). „Graph-Based Algorithms for Boolean Function Manipulation“ (PDF) . IEEE Transactions on Computers . C-35 (8): 677–691 . doi : 10.1109/TC.1986.1676819 . S2CID 10385726 .
- ^ Bryant, Randal E. (September 1992). „Symbolische Boolesche Manipulation mit geordneten binären Entscheidungsdiagrammen“ . ACM Computing Surveys . 24 (3): 293–318 . doi : 10.1145/136035.136043 . S2CID 1933530 .
- ^ „Stanford Center for Professional Development“ . scpd.stanford.edu . Archiviert vom Original am 4. Juni 2014. Abgerufen am 23. April 2018 .
- ^ Jensen, RM (2004). „CLab: Eine C++-Bibliothek für die schnelle, rückwärtsgesteuerte interaktive Produktkonfiguration“ . Proceedings of the Tenth International Conference on Principles and Practice of Constraint Programming . Lecture Notes in Computer Science. Band 3258. Springer. S. 816. doi : 10.1007/978-3-540-30201-8_94 . ISBN 978-3-540-30201-8Die
- ^ Lipmaa, HL (2009). „Erstes CPIR-Protokoll mit datenabhängiger Berechnung“ (PDF) . Internationale Konferenz für Informationssicherheit und Kryptologie . Lecture Notes in Computer Science. Band 5984. Springer. S. 193–210 . doi : 10.1007/978-3-642-14423-3_14 . ISBN 978-3-642-14423-3Die
- Whaley , John; Avots, Dzintars; Carbin, Michael; Lam, Monica S. (2005). „Using Datalog with Binary Decision Diagrams for Program Analysis“ . In: Yi, Kwangkeun (Hrsg.). Programming Languages and Systems . Lecture Notes in Computer Science. Band 3780. Berlin, Heidelberg: Springer. S. 97–118 . doi : 10.1007/11575467_8 . ISBN 978-3-540-32247-4. S2CID 5223577 .
- ^ Bollig, Beate; Wegener, Ingo (September 1996). „Improving the Variable Ordering of OBDDs Is NP-Complete“. IEEE Transactions on Computers . 45 (9): 993–1002 . doi : 10.1109/12.537122 .
- ^ Sieling, Detlef (2002). „Die Nichtapproximierbarkeit der OBDD-Minimierung“ . Information and Computation . 172 (2): 103–138 . doi : 10.1006/inco.2001.3076 .
- ^ Rice, Michael. „Eine Übersicht über Heuristiken zur statischen Variablenordnung für die effiziente BDD/MDD-Konstruktion“ (PDF) .
- ^ Woelfel, Philipp (2005). „Schranken für die OBDD-Größe der Ganzzahlmultiplikation mittels universellem Hashing“ . Journal of Computer and System Sciences . 71 (4): 520–534 . CiteSeerX 10.1.1.138.6771 . doi : 10.1016/j.jcss.2005.05.004 .
- ^ Richard J. Lipton . „BDDs und Faktorisierung“ . Gödels verlorener Brief und P=NP , 2009.
- ^ Méaux, Pierrick; Seuré, Tim; Deng, Tang (2024). „The Revisited Hidden Weight Bit Function“ (PDF) . IACR Cryptology ePrint Archive : 24. Abgerufen am 19.06.2025 .
- ^ Miller, D. Michael; Drechsler, Rolf (1998). „Zur Konstruktion mehrwertiger Entscheidungsdiagramme“. Proceedings of the 28th IEEE International Symposium on Multiple-Valued Logic (ISMVL) . S. 264–269 . doi : 10.1109/ISMVL.1998.679191 .
- ^
- Duboc, Guillaume (19.01.2026). Typisierung dynamischer Sprachen mit mengentheoretischen Typen: Der Fall Elixir (Dissertation). Université Paris Cité.
- Valim, José (2025-12-02). „Lazier Binary Decision Diagrams (BDDs) for set-theoretic types“ . Die Programmiersprache Elixir .
- ^ Andersen, HR (1999). „Einführung in binäre Entscheidungsdiagramme“ (PDF) . Vorlesungsskript . IT-Universität Kopenhagen.
- ^ Huth, Michael; Ryan, Mark (2004). Logik in der Informatik: Modellierung und Systemtheorie (2. Aufl.). Cambridge University Press. S. 380–. ISBN 978-0-52154310-1OCLC 54960031 .
Weiterführende Literatur
- Ubar, R. (1976). „Testgenerierung für digitale Schaltungen mittels alternativer Graphen“. Tagungsband der Technischen Universität Tallinn (in Russisch) (409). Tallinn, Estland: 75–81 .
- Meinel, C.; Theobald, T. (2012) [1998]. Algorithmen und Datenstrukturen im VLSI-Design: OBDD – Grundlagen und Anwendungen (PDF) . Springer. ISBN 978-3-642-58940-9DieDas vollständige Lehrbuch steht zum Download bereit.
- Ebendt, Rüdiger; Fey, Görschwin; Drechsler, Rolf (2005). Erweiterte BDD-Optimierung . Springer. ISBN 978-0-387-25453-1Die
- Becker, Bernd; Drechsler, Rolf (1998). Binäre Entscheidungsdiagramme: Theorie und Implementierung . Springer. ISBN 978-1-4419-5047-5Die
Externe Links
- Spaß mit binären Entscheidungsdiagrammen (BDDs) , Vortrag von Donald Knuth
- Liste von BDD-Softwarebibliotheken für verschiedene Programmiersprachen.



