2.5 Bäume 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 1 Binäre Suchbäume Optimale Suchbäume Balancierte Bäume Skip-Listen Union-Find-Strukturen Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Optimale Suchbäume • In manchen Anwendungen ist die Zugriffswahrscheinlichkeit auf die Elemente a priori bekannt. • Versuche die Elemente, auf die am häufigsten zugegriffen wird, in der Nähe der Wurzel zu speichern. • Beispiel: Worthäufigkeiten, Übersetzungstabelle 2 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Optimale Suchbäume 1 5 2 3 4 3 3 1 6 4 2 8 7 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer 9 Optimale Suchbäume 5 3 6 1 4 8 2 (-∞,1) (1,2) 7 (2,3) (3,4) (4,5) (5,6) (6,7) 9 (7,8) Explizite Blätter für negative Suchanfragen 4 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer (8,9) (9,∞) Optimale Suchbäume • Seien N1...Nn die inneren Knoten des Suchbaums • Dann gibt es genau n+1 Blätter I0...In • Es sei pi die Wahrscheinlichkeit, dass auf Knoten Ni zugegriffen wird • Es sei qi die Wahrscheinlichkeit, dass auf Knoten Ii zugegriffen wird, d.h. nach einem Schlüssel X mit Ni.X < X < Ni+1.X gesucht wird 5 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Optimale Suchbäume 5 3 6 1 4 8 2 (-∞,1) 6 (1,2) 7 (2,3) (3,4) (4,5) (5,6) (6,7) 9 (7,8) Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer (8,9) (9,∞) Aufwand 7 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Aufwand • Betrachte einen Teilbaum mit Wurzel Nk des optimalen Suchbaums • Dieser Baum enthält eine Teilmenge Ni...Nj der Knoten und Ii-1...Ij der Blatt-Intervalle • Dieser Teilbaum ist ebenfalls ein optimaler Suchbaum (cut & paste) 8 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Aufwand • Die Wahrscheinlichkeit, dass auf den Teilbaum mit Wurzel Nk zugegriffen wird ist • Seien C(i,j) die Kosten, die durch den Teilbaum Ni...Nj verursacht werden 9 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Aufwand • Der Teilbaum mit Wurzel Nk besitzt zwei weitere Teilbäume mit den Knoten – Ni...Nk-1 und Ii-1...Ik-1 – Nk+1...Nj und Ik...Ij die jeder für sich wieder optimal sind • Jeder Pfad im Teilbaum Ni...Nk-1 wird durch Nk um einen Schritt verlängert 10 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Rekursive Optimierung 11 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Aufwand • Für den Teilbaum Ni...Nj soll der optimale Wurzelknoten bestimmt werden... • Dynamische Programmierung! 12 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Aufwand • Speichere Zwischenergebnisse in Tabellen – C[i,j] : Kosten des optimalen Suchbaums für die Knoten Ni...Nj und Ii-1...Ij – W[i,j] : Zugriffswahrscheinlichkeit für den entsprechenden Teilbaum – R[i,j] : Wurzelknoten des optimalen Suchbaums 13 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Aufwand OptTree(P[1..n], Q[0..n]) for i ← 1 to n+1 do C[i, i−1] ← Q[i−1] W[i, i−1] ← Q[i−1] for l ← 1 to n do for i ← 1 to n−l+1 do j ← i+l−1 W[i, j] ← W[i,j−1] + P[j] + Q[j] C[i, j] ← min{ C[i,k−1] + C[k+1,j] } + W[i,j] R[i, j] ← argmin{ C[i,k−1] + C[k+1,j] } 14 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Aufwand • Der optimale Suchbaum muss nicht immer minimale Höhe besitzen. • Das häufigst gefragte Element muss nicht der Wurzelknoten sein. • Berechnungsaufwand mit DP: O(n3) • Lohnt nur für viele Anfragen • Wahrscheinlichkeiten können aus der Zugriffsstatistik extrapoliert werden. 15 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer