Binary Decision Diagrams (BDDs) 1

Ähnliche Dokumente
Binary Decision Diagrams

4. OBDDs und Modellüberprüfung

5 BINÄRE ENTSCHEIDUNGS- DIAGRAMME (BDDS)

Grundlagen digitaler Systeme WS12

Darstellung Boolescher Funktionen

Präsentation BDDs Binary Decision Diagrams

Entscheidungsverfahren für die Software-Verifikation. 4 - BDDs

Binary Decision Diagrams (Einführung)

Formale Systeme. Binary Decision Diagrams. Prof. Dr. Bernhard Beckert, WS 2017/2018

Shannon Formeln. Formale Systeme. Normierte Shannon Formeln. Eigenschaften des sh-operators

Binärer Entscheidungsbaum. für Boole sche Funktionen. (binary decision tree: BDT) Kapitel 4: Binäre Entscheidungsdiagramme

Rechnerstrukturen. Michael Engel und Peter Marwedel WS 2013/14. TU Dortmund, Fakultät für Informatik

Rechnerstrukturen, Teil 1. Vorlesung 4 SWS WS 15/16

Effizienter Planaritätstest Vorlesung am

Rechnerstrukturen WS 2012/13

Vorlesung : Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz

Rechnerstrukturen WS 2012/13

Rechnerstrukturen. Michael Engel und Peter Marwedel SS TU Dortmund, Fakultät für Informatik

Binary Decision Diagrams

Graphen. Definitionen

x x y x y Informatik II Schaltkreise Schaltkreise Schaltkreise Rainer Schrader 3. November 2008

Resolutionskalkül. wird t als eine Menge K t von Klauseln geschrieben, welche die einzelnen Maxterme repräsentieren:

Isomorphie von Bäumen

Was bisher geschah Wissensrepräsentation und -verarbeitung in Zustandsübergangssystemen Constraint-Systemen Logiken Repräsentation von Mengen

Verkettete Datenstrukturen: Bäume

Formale Systeme. Binary Decision Diagrams. Prof. Dr. Bernhard Beckert WS 2010/2011 KIT INSTITUT FÜR THEORETISCHE INFORMATIK

Informationsverarbeitung auf Bitebene

Algorithmen und Datenstrukturen II

é KFDDs (Kronecker Functional Decision Diagrams) [Drechsler, Sarabi, Becker, Perkowski 1994]

Künstliche Intelligenz Logische Agenten & Resolution

Aussagenlogik. Formale Methoden der Informatik WiSe 2012/2013 teil 6, folie 1

Aufgabe Gegeben sind die folgenden aussagenlogischen Formeln F, G, H über den Variablen u, w, y, z:

Aufgabe Gegeben sind die folgenden aussagenlogischen Formeln F, G, H über den Variablen s, u, w, y:

Aufgabe Gegeben sind die folgenden aussagenlogischen Formeln F, G, H über den Variablen s, p, w, y:

Graphenbasierte Funktionsdarstellung. Boolesche und Pseudo- Boolesche Funktionen

Algorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016

Vorlesung Datenstrukturen

Perlen der Informatik I Wintersemester 2012 Aufgabenblatt 7

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone

Programmiertechnik II

Lösungen zur 1. Klausur. Einführung in Berechenbarkeit, formale Sprachen und Komplexitätstheorie

Performance von BDD-basiertem Model Checking

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

9 Minimum Spanning Trees

Vorlesung Datenstrukturen

Prüfungsrelevante Studienleistung Logische Programmierung (Sommer 2006) Magische Quadrate. Patricia Röschke (46016) Martin Grandrath (46375)

Aufgabe Zusatz.1. Aufgabe Zusatz.2. Aufgabe Zusatz.3. Aufgabe Zusatz.4. HTWK Leipzig, Fakultät IMN Prof. Dr. Sibylle Schwarz

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?

Algorithmen zur Visualisierung von Graphen

Algorithmen und Datenstrukturen (für ET/IT)

Theoretische Informatik II

Lernmodul 7 Algorithmus von Dijkstra

Musterloesung: Uebung 3

Grundlagen der Informatik II

Kapitel IV Minimale Spannbäume

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Rückblick. Erweiterte b-adische Darstellung von Kommazahlen. 7,1875 dargestellt mit l = 4 und m = 4 Bits. Informatik 1 / Kapitel 2: Grundlagen

Datenstrukturen und Algorithmen (SS 2013)

KAPITEL 5. Damit wird F n (B) selbst zu einer Booleschen Algebra und es gilt f(x) := f(x) 0(x) := 0 B 1(x) := 1 B

Rückblick. Erweiterte b-adische Darstellung von Kommazahlen. 7,1875 dargestellt mit l = 4 und m = 4 Bits. Informatik 1 / Kapitel 2: Grundlagen

Algorithmen und Datenstrukturen SS09. Foliensatz 17. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

4. Lernen von Entscheidungsbäumen

Aufgabe Bonus.1. Aufgabe Bonus.2. Aufgabe Bonus.3. Aufgabe Bonus.4. HTWK Leipzig, Fakultät IMN Prof. Dr. Sibylle Schwarz

Aufgaben aus den Übungsgruppen 8(Lösungsvorschläge)

Graphentheorie. Algebraic Graph Theory von Chris Godsil und Gordon Royle. Kapitel Seminararbeit. von. Katharina Mayr

Algorithmen & Datenstrukturen Midterm Test 2

Algorithmen und Datenstrukturen

f ist sowohl injektiv als auch surjektiv.

Boolesche (Schalt-) Algebra (8)

Algorithmen und Datenstrukturen 2

Lösungen zur Vorlesung Berechenbarkeit und Komplexität

Allgemeingültige Aussagen

Logik. Gabriele Kern-Isberner LS 1 Information Engineering. TU Dortmund Wintersemester 2014/15 WS 2014/15

Graphalgorithmen 1. Tillmann Zipperer Tillmann Zipperer Graphalgorithmen / 40

Transkript:

Handout 22.11.2011 Binary Decision Diagrams (BDDs) 1 Übersicht Es gibt viele verschiedene Möglichkeiten um Boole sche Funktionen zu repräsentieren (Boole sche Formeln, Minterme, Wahrheitstabellen, ). Manche davon sind kanonisch, das bedeutet, dass die Repräsentation einer gegebenen Funktion eindeutig ist, bzw. das zwei Funktionen dann und nur dann identisch sind, wenn ihre Repräsentationen identisch sind (wobei Dinge wie die Reihenfolge es Anschreibens von Termen meist vernachlässigt werden). Wahrheitstabellen sind beispielsweise eine kanonische Repräsentation von Boole schen Funktionen, Boole sche Formeln hingegen sind nicht kanonisch (zu einer gegebenen Funktion existieren viele Boole sche Formeln, die sie beschreiben). Sogenannte Binäre Entscheidungsdiagramme (engl.: Binary Decision Diagrams; BDDs) sind eine weitere Möglichkeit Boole sche Funktionen zu repräsentieren. Unter bestimmten Voraussetzungen, die nachfolgend noch näher beschrieben werden, sind BDDs kanonisch. BDDs bieten für viele Funktionen eine sehr kompakte Repräsentation, und es existieren effiziente Algorithmen zur Manipulation von BDDs. Abb. 1: Beispiel für ein BDD. Dargestellt ist die Funktion f = (a b c) ( b d) ( c d) 1 Grafiken übernommen aus Gary D. Hachtel, Fabio Somenzi: Logic Synthesis and Verification Algorithms, Springer, 1996 1

BDDs sind gerichtete, azyklische Graphen (engl.: Directed Acyclic Graphs; DAGs). Ein Beispiel für ein BDD ist in Abb. 1 dargestellt. Das BDD besteht aus einem Wurzelknoten (f), Knoten für die Variablen (a, b, c, d) und Endknoten (1, 0). Die Kanten sind jeweils mit T (für Then ) oder E (für Else ) beschriftet. Um den Funktionswert zu einer gegebenen Variablenbelegung zu finden geht man wie folgt vor: Ausgehend vom Wurzelknoten folgt man an jedem Variablenknoten der Then -Kante, wenn die entsprechende Variable den Wert 1 hat, ansonsten folgt man der Else -Kante. Der Endknoten den man auf diese Art und Weise erreicht gibt den Funktionswert an. Wie wir bereits wissen lassen sich Formeln in CNF oder DNF direkt und unmittelbar in 2-Level Schaltungen, bestehend aus UND und ODER Gattern umsetzen. BDDs hingegen lassen sich unmittelbar durch ein Multiplexer-Netzwerk realisieren. Übung: Entwirf eine Multiplexer-Schaltung für das BDD in Abb. 1. Komplementierende Kanten (engl.: Complement Edges) Um in einigen Fällen noch effizientere Implementierungen erreichen zu können, gibt es neben den bereits gezeigten BDDs auch welche mit komplementierenden Kanten. Geht man entlang einer komplementierenden Kante, so ist der abschließend erhaltene Funktionswert zu komplementieren. Komplementierende Kanten werden in der graphischen Repräsentation durch einen ausgefüllten Kreis markiert. Um später Kanonizität sicherstellen zu können wird vereinbart, dass nur Else -Kanten komplementierend sein können. Des Weiteren ist es üblich, nicht komplementierende Else -Kanten mit einem leeren Kreis zu markieren. Dadurch kann dann die Markierung T oder E entfallen, weil alle nicht markierten Kanten Then -Kanten sind. Außerdem kann man durch die Einführung komplementierender Kanten auf einen der beiden Endknoten (0,1) verzichten, im Normalfall auf 0. Aus Gründen der Einfachheit sei darüber hinaus vereinbart, dass Kanten ohne Ziel zum Endknoten 1 zeigen. (siehe Abb. 2) Abb. 2: BDDs mit komplementierenden Kanten Übung: Finde eine Formel für die dargestellten Funktionen 2

Formale Definition Ein BDD ist ein gerichteter, azyklischer Graph (V Φ {1}, E), der eine Funktion f: {0,1} n {0,1} m repräsentiert. Seine Knoten sind in drei Untermengen unterteilt. V ist die Menge aller internen Knoten. Diese Knoten haben je zwei ausgehende Kanten. Jeder Knoten v V besitzt eine Bezeichnung l(v) S F, wobei S F = {x 1,, x n } die Menge der Variablen ist, von denen f abhängt. 1 ist der Endknoten. Er besitzt keine ausgehenden Kanten. Φ ist die Menge der Funktionsknoten. Die Funktionsknoten stehen in einer eineindeutigen Beziehung zu den Komponenten von f. Diese Knoten haben keine eingehenden Kanten und je nur eine ausgehende Kante. Die von Funktionsknoten ausgehenden Kanten können das Attribut komplementierend besitzen. Die beiden von einem internen Knoten ausgehenden Kanten werden mit T und E beschriftet, wobei die mit E beschrifteten Kanten das Attribut komplementierend besitzen können. Mit (l(v), T, E) wird ein interner Knoten und seine beiden ausgehenden Kanten bezeichnet. Die Variablen in S F sind geordnet. Wenn der Knoten v j ein Nachfahre des Knotens v i ist, dann gilt l(v i ) < l(v j ). Die durch das BDD repräsentierte Funktion ist wie folgt definiert: 1. Die Funktion des Endknotens ist die konstante Funktion 1. 2. Die Funktion einer Kante ist die Funktion des Knotens, auf den sie zeigt, außer, die Kante besitzt, das komplementierend -Attribut. Falls die Kante das komplementierend - Attribut besitzt, ist die Funktion der Kante das Komplement der Funktion des Ziel- Knotens. 3. Die Funktion eines internen Knotens v V ist gegeben durch (l(v) f T ) ( l(v) f E ), wobei f T bzw. f E die Funktionen der T- bzw. E-Kante von v sind. 4. Die Funktion eines Funktionsknotens φ Φ ist die Funktion der davon ausgehenden Kante. Variablenordnung und Reduzierte BDDs Die Ordnung der Variablen hat einen signifikanten Einfluss auf das resultierende BDD. So repräsentiert zum Beispiel das BDD in Abb. 3 dieselbe Funktion wie das BDD in Abb. 1, allerdings Abb. 3: BDD mit Variablenordnung b c a d 3

mit wesentlich weniger Knoten. Übung: Betrachte die Funktion f = (a 1 b 1 c 1 ) (a 2 b 2 c 2 ) (a 3 b 3 c 3 ) und überlege, welche der beiden Variablenordnungen besser ist: a 1 a 2 a 3 b 1 b 2 b 3 c 1 c 2 c 3 oder a 1 b 1 c 1 a 2 b 2 c 2 a 3 b 3 c 3 Übung: Konstruiere ein BDD für die Funktion f = (a b c) ( b d) ( c d) mit der Variablenordnung b c d a. Hinweis: Berechne dafür (rekursiv) die Kofaktoren 2 von f in Bezug auf die jeweils erste Variable der Ordnung. Übung: Überlege eine gute Variablenordnung für die Funktion f = a (b e) (d c) und konstruiere das BDD. Begründe deine Entscheidung. Wie man aus der Übung erkennt kann es vorkommen, dass sich beim Erstellen eines BDDs identische Kofaktoren bzw. isomorphe Subgraphen ergeben. Das bedeutet, es gibt zwei interne Knoten, die dieselbe Funktion repräsentieren. Ebenso kann es vorkommen, dass redundante Knoten auftreten. Ein Knoten ist dann redundant, wenn er keine Entscheidung trifft, also wenn seine T- und E-Kante zum selben nächsten Knoten zeigen. Durch das wiederholte Verschmelzen von isomorphen Subgraphen und Entfernen redundanter Knoten kommt man zu einem reduzierten BDD. Ein reduziertes BDD ist (für eine gegebene Variablenordnung) eine kanonische Darstellung für eine Funktion. Wenn nicht anders angegeben soll im Folgenden mit BDD immer reduziertes BDD gemeint sein. Vorteile Die Größe eines BDDs (Anzahl der Knoten) ist im schlimmsten Fall exponentiell in der Anzahl der Variablen. Dieser schlimmste Fall wird z.b. für Multiplizierer (unabhängig von der Variablenordnung) erreicht. Für viele Fälle (z.b. XOR) liefern BDDs jedoch eine kompakte Repräsentation, selbst wenn für diese Fälle CNF oder DNF Formeln keine kompakte Repräsentation bieten können. Die logische UND-Verknüpfung bzw. die logische ODER-Verknüpfung von zwei BDDs kann effizient (in polynomieller Zeit) berechnet werden. Es kann in konstanter Zeit geprüft werden ob eine durch ein BDD repräsentierte Funktion erfüllbar (engl.: satisfiable) oder eine Tautologie ist. 2 Die Kofaktoren einer Funktion f bezüglich einer Variablen v sind die beiden Funktionen f v bzw. f v, die man erhält in dem man in f für v einmal 1 und einmal 0 einsetzt. 4

Nachteile Die Größe eines BDDs hängt von der Variablenordnung ab. Eine gute Ordnung zu finden ist nicht immer einfach. Es gibt Funktionen für die CNF- oder DNF-Repräsentationen kompakter sind als BDDs. CNF- oder DNF-Repräsentationen sind für manche Anwendungen näher an der endgültigen Implementierung der Funktion. Wenn die Funktion z.b. durch eine 2-Level Schaltung implementiert werden soll, so muss irgendwann eine CNF- oder DNF- Repräsentation erzeugt werden. BDD Softwarepakete Es existieren mehrere Software-Pakete für die (effiziente) Verwaltung und Manipulation von (großen) BDDs. Einige für (alle) Implementierungen wichtige Grundkonzepte sollen kurz erwähnt werden: Shared BDDs: Wenn man mehrere Funktionen (mit denselben Variablen) repräsentieren will ist es sehr wahrscheinlich, dass es gemeinsame Subausdrücke gibt. Daher ist es üblich, dass mehrere Funktionen von demselben BDD (nicht nur zwei identischen BDDs) repräsentiert werden. Dieses shared BDD hat dann einfach mehrere Wurzelknoten, die die einzelnen Funktionen repräsentieren. Dadurch wird einerseits Speicher gespart, andererseits kann ein Identitätsvergleich dadurch in konstanter Zeit durchgeführt werden, weil es genügt die beiden Pointer auf den jeweiligen Funktionsknoten zu vergleichen. Unique Table: In der Unique Table, die meist als Hash-Table realisiert ist, werden die (Sub-) Funktionen abgespeichert, die bereits vom BDD repräsentiert werden. Dadurch ist es möglich beim Hinzufügen oder Berechnen neuer Funktionen ohne großen Suchaufwand bereits vorhandene Knoten einzusetzen. Computed Table: Die Computed Table speichert Funktionen ab, die kürzlich berechnet worden sind, und dient so als Cache zur Effizienzsteigerung. Im Gegensatz zur Unique Table, die Fragen der Art Gibt es bereits einen Knoten v mit Kanten zu g und h? beantworten kann, dient die Computed Table dazu Fragen der Art Wurde kürzlich ein Knoten berechnet, der die UND- Verknüpfung von x und y repräsentiert? zu beantworten. Diese Frage kann gestellt werden, bevor bekannt ist, dass die UND-Verknüpfung von x und y ein Knoten v mit Kindern g und h ist. Dadurch kann die erneute Berechnung vermieden werden. Dynamic Reordering: In vielen Fällen kann es von Vorteil sein, BDDs von Zeit zu Zeit neu zu ordnen, um die Größe zu reduzieren. Dafür existieren viele verschiedene Algorithmen und Ansätze, auf die hier nicht näher eingegangen wird. 5

Algorithmen BDDs werden in der Regel erzeugt indem bestehende BDDs miteinander kombiniert werden (z.b. UND- oder ODER-verknüpft). Zu Beginn legt man primitive BDDs an, die die Funktionen f = x i für alle x i die als Variablen vorkommen darstellen. Diese können dann entsprechend kombiniert und verknüpft werden. Ein Operator der in diesem Zusammenhang große Bedeutung hat ist der ITE Operator (ITE für If-Then-Else ), der wie folgt definiert ist: ITE(F, G, H) = (F G) ( F H) Der ITE-Operator ist deshalb so bedeutsam, weil er im Stande ist, alle binären Operatoren auszudrücken. (siehe Abb. 4) Abb. 4: Binäre Operatoren durch ITE ausgedrückt Der Operator ITE wird durch den folgenden Algorithmus implementiert: ITE(F,G,H) = (F G) ( F H) = (v ((F G) ( F H))v) ( v ((F G) ( F H)) v) = (v, ITE(Fv,Gv, Hv ), ITE(F v,g v,h v)) Basisfälle: ITE(1,F,G) = ITE(0,G,F) = ITE(F,1,0) = ITE(G,F,F) = F Übung: Berechne ITE(f,g,h) für die Funktionen f = a ( b c) g = ( b c) d h = b c d Zu jedem Tripel (F,G,H) existieren weitere Tripel (F 1, G 1, H 1 ), so dass ITE(F,G,H) = ITE(F 1, G 1, H 1 ), obwohl mindestens einer der Operanden verschieden ist. Z.B. gilt ITE(F,1,G) = ITE(G,1,F). 6

Indem man diese verschiedenen Paare mit dem gleichen Ergebnis auf einen eindeutigen Repräsentanten abbildet, kann man mit Hilfe der Computed Table zusätzliche ITE-Aufrufe sparen. In vielen Fällen ist es ausreichend zu berechnen, ob das Ergebnis eines ITE-Aufrufs eine konstante Funktion liefert oder nicht. Will man beispielsweise überprüfen ob F G dann genügt es zu zeigen, dass F G eine Tautologie ist. Dies kann durchgeführt werden, indem F G mit Hilfe von ITE berechnet wird. Dabei ist das eigentliche Ergebnis jedoch uninteressant, falls es nicht konstant ist. Für solche Beispiele gibt es eine speziell in diesem Fall effizientere Lösung: Den ITE_CONSTANT Algorithmus: Abb. 5: Pseudo-Code für den ITE_CONSTANT Algorithmus ITE_CONSTANT liefert einen der drei Werte 0, 1 oder non_constant zurück. Der Algorithmus basiert auf der Beobachtung, dass eine Funktion nur dann konstant ist, wenn beide Kofaktoren konstant und gleich sind. Sobald eine Verletzung dieser Bedingung erkannt wird, wird abgebrochen. Dadurch können im Fall, dass das Ergebnis non_constant ist, rekursive Aufrufe eingespart werden. Übung: Betrachte die Funktionen f = (a b) (b c d) und g = (a b) (a c d). Berechne mit Hilfe von ITE_CONSTANT ob f g. Hinweis: Berechne ITE_CONSTANT(f,g,1). 7