- Balancierter Baum
-
Ein Balancierter Baum ist in der Informatik ein Spezialfall der Datenstruktur Baum, der eine maximale Höhe von
garantiert, wobei n die Anzahl der Elemente im Baum angibt und c eine von n unabhängige Konstante ist. Manche Autoren rechnen auch Datenstrukturen dazu, die Vorkehrungen enthalten, dass die Höhe im Mittel logarithmisch bleibt.
Inhaltsverzeichnis
Problem: Entartung
Die wichtigste Anwendung von Bäumen in der Informatik ist die als Suchbaum. Die Laufzeit der wichtigsten Operationen in einem Suchbaum (Suchen, Einfügen oder Löschen eines Wertes) hängt im schlechtesten Fall linear von der Höhe des Baumes ab (die Operationen haben eine Komplexität von O(h); h Höhe des Baumes).
Jeder
Beispiel für nicht balancierten Baum - aus denen folgt, dass die Höhe des Baumes in jedem Fall
ist.
- sodass es geeignete Such-, Einfüge- und Löschoperationen (sinnvollerweise der Komplexität O(h)) gibt, die die speziellen Eigenschaften wahren.
- Gewichteter binärer Suchbaum
- Bellman-Algorithmus (Konstruktion des optimalen gewichteten binären Suchbaums)
- Splay-Baum
- Kurt Mehlhorn Datenstrukturen und effiziente Algorithmen Teubner Stuttgart 1988, ISBN 3-519-12255-3.
Fügt man jedoch zum Beispiel einem Suchbaum eine große Menge bereits sortierter Daten ein, wächst dieser ungleichmäßig und hat im Extremfall eine Höhe von n mit der unerwünschten Folge, dass auch jede folgende Einfüge-, Such- und Löschoperation der Komplexität O(n) ist.
Siehe auch: O-Notation, Komplexität, Erwartungswert
Gegenstrategie: Balance halten
Balancierte Bäume wurden entwickelt, um die Entartung zu verhindern und eine Höhe von zu garantieren.
Dazu verfolgt man unterschiedliche Konzepte. Allen gemeinsam ist: Man fordert spezielle Eigenschaften des Baumes,
Man erhält eine solche Operation, indem man die Operation der allgemeinen Suchbäume verwendet und nach jeder Ausführung an der Stelle der Änderung die Balance überprüft, adjustiert und ggf. neu balanciert. Es kann vorkommen, dass sich diese Anpassungs- und Reparatur-Welle bis zur Wurzel hinauf fortsetzt.
Höhenbalance
Nach der Höhe balancierte Bäume stellen für jeden Knoten sicher, dass die Höhe des linken Unterbaumes und die Höhe des rechten Unterbaumes nur um ein bestimmtes Verhältnis oder eine bestimmte Differenz voneinander abweichen.
Beim Rot-Schwarz-Baum wird jedem Knoten eine Farbe (rot oder schwarz) zugeordnet; der Baum ist bezüglich der schwarzen Knoten optimal höhenbalanciert und der Anteil der roten Knoten ist begrenzt. Diese Bäume stellen eine binäre Realisierung der 2-3-4-Bäume dar, einer speziellen Variante der B-Bäume.
Im AVL-Baum gilt für jeden Knoten: Die Höhe seines linken Kindes weicht von der seines rechten Kindes um höchstens ±1 ab.
Gewichtsbalance
Ist der Baum statisch, spielen also Einfüge- oder Entfernoperationen keine Rolle, so bietet sich der Bellman-Algorithmus an, der einen optimalen gewichteten binären Suchbaum konstruiert. Seine Effizienz ist auch dann gegeben, wenn die Gewichte nur ungefähr bekannt sind.
Allerdings kann bei einer extremen Verteilung der Zugriffswahrscheinlichkeiten auch beim optimalen gewichteten binären Suchbaum eine lineare (nicht mehr logarithmische) Abhängigkeit der Höhe von der Anzahl herauskommen.
Sind Einfüge- oder Entfernoperationen wichtig, so sind im Prinzip auch die Gewichte zu pflegen. Im Grenzfall sogar beim Aufsuchen, da sich hierbei zumindest die Zugriffsstatistik ändert.
Dies und noch mehr leisten die Splay-Bäume.
Mehlhorn führt gewichtsbalancierte BB[α]-Bäume ein. Hier gilt für jeden Knoten: Die Anzahl der Knoten (das Gewicht) links unter ihm steht in einem gewissen Verhältnis zu der Gesamtanzahl der Knoten unter ihm (und damit auch in einem gewissen Verhältnis zu der Anzahl der Knoten rechts unter ihm).