wiki.neuro.tu-berlin.de

Zero-Suppressed Binary Decision Diagram (ZDD)

Eine Zero-Suppressed Binary Decision Diagram (ZDD) ist eine kompakte, datenstrukturierte Darstellung von Mengen. Sie wird speziell für kombinatorische Probleme verwendet, bei denen eine Vielzahl von Teilmengen einer universellen Menge untersucht werden muss. Durch die Eliminierung redundanter Pfade in der Repräsentation bietet die ZDD eine effiziente Möglichkeit, diese Probleme zu lösen[1][2].

Grundstruktur der ZDD[1:1]

  1. Knoten:

    • Jeder innere Knoten der ZDD repräsentiert eine Entscheidung, ob ein Element (z. B. eine Kante e_i) in einer Lösung enthalten ist oder nicht.
    • Die Elemente der universellen Menge U = \{e_1, e_2, \dots, e_{\lvert U \rvert}\} werden in einer festen Reihenfolge verarbeitet.
  2. 0- und 1-Kanten:

    • Eine 1-Kante (durchgezogene Linie) bedeutet, dass das aktuelle Element e_i in die Lösung aufgenommen wird.
    • Eine 0-Kante (gestrichelte Linie) bedeutet, dass das aktuelle Element e_i nicht Teil der Lösung ist.
  3. Terminalknoten:

    • Terminalknoten 1 repräsentiert gültige Lösungen .
    • Terminalknoten 0 repräsentiert ungültige Zustände oder Teilmengen.
  4. Reduktion:

    • Die ZDD reduziert redundante Teilgraphen (gleiche Teilmengen mit denselben Eigenschaften) zu einem einzigen Knoten. Dadurch bleibt die Struktur kompakt und effizient.

ZDD
Abb.1 Zero-Suppressed Binary Decision Diagram (ZDD)

Die reduzierte ZDD, die Z(1) = \{\{a\}, \{b\}, \{c\}, \{a, c\}, \{b, c\}\} darstellt. E = \{a, b, c\} wobei a < b < c. Gestrichelte Linien repräsentieren 0-Kanten und durchgezogene Linien repräsentieren 1-Kanten.

Der SIMPATH-Algorithmus nach Knuth[1:2]

Der SIMPATH-Algorithmus von Donald Knuth ist ein Ansatz zur Konstruktion einer ZDD, die alle s-t-Pfade in einem ungerichteten Graphen G = (V, E) repräsentiert. Dabei stellt die ZDD sicher, dass nur gültige Pfade (ohne Zyklen und mit korrekten Start- und Endpunkten) erfasst werden.

Die Mate-Funktion ist ein zentrales Konzept des SIMPATH-Algorithmus. Sie verfolgt den Verbindungszustand der Knoten im Graphen basierend auf den bisher getroffenen Entscheidungen über die Kanten. Weitere Details zur Mate-Funktion finden Sie hier.

Schritte des SIMPATH-Algorithmus


Numberlink
Abb.2 Beispielgraph

Betrachten wir den Graphen G mit den Knoten V = { p, q, r, s } und den Kanten E = { e_1, e_2, e_3, e_4 }. .

Hinweis:
Jede Kante wird in einer festen Reihenfolge verarbeitet, wobei gilt: e_1 \leq e_2 \leq \dots. Diese Reihenfolge sorgt für Konsistenz und erleichtert den Aufbau der Zero-Suppressed Decision Diagram (ZDD)

Ziel:
Unser Ziel ist es, ein Path Matching zu erreichen.

1. Initialisierung

Definition von E(\pi)

Ein Pfad \pi in einer ZDD ist gültig, wenn er in einem Terminalknoten 1 endet. Die Menge E(\pi) umfasst alle Kanten e_j, die durch 1-Kanten im Pfad \pi ausgewählt wurden:
„E(\pi) = \{ e_j \mid \text{die 1-Kante eines Knotens mit } e_j \text{ in } \pi \text{ auftritt} \}“.
Kurz: E(\pi) ist die Menge der Kanten, die im Pfad \pi enthalten sind.


Initialisierung
Abb.3 Initialisierungszustand der ZDD

2. Entscheidung für die Kante e_1

Jeder innere Knoten repräsentiert eine Entscheidung für eine Kante e_i: Aufnahme (1-Kante) oder Nichtaufnahme (0-Kante).

0-Kante
Abb.4 Entscheidung für die erste Kante - 0-Kante
1-Kante
Abb.5 Entscheidung für die erste Kante - 1-Kante

3. Wiederholung für die Kanten e_2

Der Algorithmus wendet die gleiche Entscheidungsmethode für die nächste Kante e_2 an, wobei die Mate-Funktion entsprechend angepasst wird.

Wiederholung
Abb.6 Wiederholung des Entscheidungsprozesses

4. Wiederholung für die restlichen Kanten bis |E|


Abschluss
Abb.7 Abschluss des Prozesses: ZDD mit allen gültigen Pfaden

5. Abschluss

Mate Funktion[1:3]

Die Mate-Funktion ordnet jedem Knoten im Graphen einen Zustand zu. Dieser Zustand beschreibt, wie der Knoten im aktuellen Pfad verbunden ist.

Definition der Mate-Funktion:

Die Mate-Funktion mate(v) gibt für jeden Knoten v im Graphen den Zustand des Knotens an:

mate(v) =
\begin{cases}
v & \text{wenn } v \text{ Grad 0 hat (nicht verbunden)} \\
u & \text{wenn } u \text{ und } v \text{ verbunden sind} \\
0 & \text{wenn } v \text{ wenn der Knoten v ein Zwischenpunkt(Grad 2), ist (nicht mehr relevant für den Pfad)} \\
\end{cases}

Erklärung der Zustände:

Zustand Beschreibung Beispiel
Nicht verbunden \text{mate}(v) = v Der Knoten v ist nicht mit einem anderen Knoten verbunden (Grad 0) und bleibt mit sich selbst verknüpft. Ein isolierter Knoten, der noch nicht in den Pfad aufgenommen wurde.
Verbunden \text{mate}(v) = u Knoten v ist mit einem anderen Knoten u verbunden (Grad 1). Wird auf u abgebildet. Knoten v ist mit Knoten u verbunden, somit gilt: \text{mate}(v) = u.
Nicht mehr relevant \text{mate}(v) = 0 Knoten v wird als Zwischenpunkt (Grad 2) betrachtet und für den aktuellen Pfad nicht mehr relevant. Knoten v, der bereits als Zwischenpunkt in einem unvollständigen Pfad betrachtet wurde.

Aufgaben der Mate-Funktion

  1. Prüfung auf Zyklen:

    • Die Mate-Funktion verhindert die Bildung von Zyklen im Pfad.

    • Falls ein Zyklus entsteht, wird der entsprechende Knoten aus der ZDD entfernt.

  2. Verfolgung von Verbindungen:

    • Die Mate-Funktion stellt sicher, dass Start- und Endknoten korrekt miteinander verbunden werden.
  3. Effizienzsteigerung:

    • Ungültige Pfade werden frühzeitig ausgeschlossen, was die Konstruktion der ZDD beschleunigt.

Algorithmus [1:4]

Dieser Algorithmus stellt alle möglichen Pfad-Zuordnungen in einem Graphen dar, indem er eine Zero-Suppressed Binary Decision Diagram (ZDD) verwendet. Der Algorithmus durchläuft alle Kanten eines Graphen und prüft, ob diese Kanten in den Pfad aufgenommen werden können.

Pseudocode


 begin

   Erstelle einen Wurzelknoten und zwei Terminalknoten 0 und 1

   Setze N1 ← {n_root}, Ni ← ∅ für i = 2, . . . , |E| und mate_(n_root) als Identität auf V

   Für jede Kante i = 1, . . . , |E|:

     Für jeden Knoten n ∈ Ni:

       Setze das 0-Kind von n auf GN(i + 1, mate_n|V ≥ei+1)

       Wenn maten die Kante ei ablehnt, setze das 1-Kind von n auf 0

       Andernfalls setze das 1-Kind von n auf GN(i + 1, MU(mate_n, ei)|V ≥ei+1)

   Ende

 Rückgabe des erstellten Diagramms

 Ende

Pseudocode-Erklärung

Dieser Algorithmus beschreibt, wie eine Zero-Suppressed Binary Decision Diagram (ZDD) aufgebaut wird, um alle möglichen s-t-Pfade in einem Graphen G=(V, E) zu finden.

Schritt-für-Schritt-Erklärung

1. Initialisierung (Zeilen 2–3)

2. Äußere Schleife: Verarbeitung jeder Kante (Zeile 4)

3. Innere Schleife: Verarbeitung jedes Knotens (Zeilen 5–8)

Für jeden Knoten n in der Menge N_i wird geprüft, wie die Kante e_i verarbeitet werden soll:

4. Abschluss der ZDD (Zeile 10)

Schlüsseloperationen

GN(i, m) (Zeilen 6, 8):
Diese Funktion erstellt einen neuen Knoten für die Kante e_i und die Mate-Funktion m. Falls ein Knoten mit demselben Zustand bereits existiert, wird der vorhandene Knoten wiederverwendet.

MU(m, e_i) (Zeile 8):
Diese Funktion aktualisiert die Mate-Funktion, wenn die Kante e_i in den Pfad aufgenommen wird. Sie sorgt dafür, dass die Verbindung zwischen den Knoten korrekt abgebildet wird.

Vorteile der ZDD

  1. Effiziente Speicherverwaltung:

    Durch die Reduktion redundanter Teilgraphen benötigt die ZDD deutlich weniger Speicherplatz als andere Methoden.[3]

  2. Kompakte Darstellung:

    Die ZDD stellt nur gültige Lösungen dar, wodurch ungültige Pfade systematisch eliminiert werden.[1:5]

Referenzen

Abbildungsverzeichnis

Abb. 1,2,3,4,5,6,7: Yoshinaka, Ryo, Toshiki Saitoh, Jun Kawahara, Koji Tsuruma, Hiroaki Iwashita, and Shin-ichi Minato. “Finding All Solutions and Instances of Numberlink and Slitherlink by ZDDs.” Algorithms 5, no. 2 (April 5, 2012): 176–213. https://doi.org/10.3390/a5020176.[URL](https://www.mdpi.com/1999-4893/5/2/176)

Literaturverzeichnis


  1. Yoshinaka, Ryo, Toshiki Saitoh, Jun Kawahara, Koji Tsuruma, Hiroaki Iwashita, and Shin-ichi Minato. “Finding All Solutions and Instances of Numberlink and Slitherlink by ZDDs.” Algorithms 5, no. 2 (April 5, 2012): 176–213. https://doi.org/10.3390/a5020176.
    URL ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  2. Matsuda, Kotaro, Shuhei Denzumi, and Kunihiko Sadakane. “Storing Set Families More Compactly with Top ZDDs.” Algorithms 14, no. 6 (May 31, 2021): 172. https://doi.org/10.3390/a14060172.[URL](https://www.mdpi.com/1999-4893/14/6/172) ↩︎

  3. Zero-suppressed decision diagram (2025, Jan. 19). In Wikipedia. URL ↩︎