Suchbaum

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

In der Informatik ist ein Suchbaum eine abstrakte Datenstruktur, bei der die Menge von Elementen, in der gesucht werden soll, in einer Baumstruktur dargestellt wird. Diese Repräsentation unterstützt ein effizientes Suchen nach Art der Intervallschachtelung, wenn die Elemente in einer Totalordnung angeordnet werden können.

Operationen[Bearbeiten]

Die charakteristische Operation ist das Suchen. Die meisten anderen Operationen, wie Einfügen, Löschen, Traversieren werden von der unterliegenden Baumstruktur geerbt.

Die Suchoperation gibt ein Element mit übereinstimmendem Schlüssel zurück oder, falls der Schlüssel nicht vorkommt, das NULL-Element oder ein (im Sinne der Totalordnung) nächstgelegenes anderes.

Der maximale Aufwand für das Suchen, d. i. die Maximalzahl der erforderlichen Vergleiche, ist proportional zur Baumhöhe. Bei einem balancierten Baum ist die Höhe logarithmisch in der Anzahl n der Elemente, während sie bei einem zu einer linearen Liste degenerierten Baum proportional zu n ist.

Spezielle Suchbäume[Bearbeiten]

Insbesondere bei den binären Suchbäumen (engl. BST von binary search tree), bei denen ein Knoten maximal zwei Kindknoten besitzt, sind viele Varianten entwickelt worden, die der Degeneration entgegenwirken sollen. Für das Gemeinsame bei ihnen siehe den

Hauptartikel: Binärer Suchbaum

Nicht binär sind folgende Suchbäume:

Der Fibonacci-Heap verwendet eine Baummenge – auch Wald genannt.

Weitere auf Bäumen basierende Suchstrukturen[Bearbeiten]

Obwohl komplexitätstheoretische Angaben asymptotisch zu verstehen sind, lassen sie sich am ehesten in die Praxis übertragen, wenn die gesamte Datenstruktur in einem gleichförmigen Medium, z. B. dem Arbeitsspeicher (Hauptspeicher), untergebracht werden soll.

Spielen dagegen Zugriffe zu externen Medien eine Rolle, kommen weitergehende Überlegungen ins Spiel. Im Kontext der Suchbäume sei verwiesen auf die Artikel:

Speicherkomplexität[Bearbeiten]

Der zusätzliche Speicherverbrauch eines Suchbaums – über die Nutzdaten hinaus – ist im Allgemeinen linear in der Anzahl n der Elemente, also \mathcal{O}(n).

Laufzeitkomplexität[Bearbeiten]

Bei der Laufzeit unterscheidet man Operationen zum Suchen, Einfügen und Löschen. Bei den letzteren beiden ist in der Tabelle die Laufzeit für das Positionieren nicht mit eingerechnet, da dies nicht nur über das Suchen, sondern z. B. auch über das Traversieren geschehen kann. Abhängig von der Art des Suchbaums werden mittlere < maximale Laufzeiten gegenübergestellt, wobei die maximale weggelassen ist, wenn sie mit der mittleren zusammenfällt.

Laufzeitkomplexitäten
Suchbaum Suchen
(=Baumhöhe)
Traversieren zum
Nachbarknoten
Einfügen Löschen
AVL-Baum \mathcal{O}(\log n) \mathcal{O}(1)\!<\!\mathcal{O}(\log n) \mathcal{O}(1)\!<\!\mathcal{O}(\log n) \mathcal{O}(1)\!<\!\mathcal{O}(\log n)
Rot-Schwarz-Baum \mathcal{O}(\log n) \mathcal{O}(1)\!<\!\mathcal{O}(\log n) \mathcal{O}(1)\!<\!\mathcal{O}(\log n) \mathcal{O}(1)\!<\!\mathcal{O}(\log n)
2-3-4-Baum \mathcal{O}(\log n) \mathcal{O}(\log n) \mathcal{O}(\log n)
B-Baum \mathcal{O}(\log n) \mathcal{O}(\log n) \mathcal{O}(\log n)
Splay-Baum \mathcal{O}(\log n) 1 \!<\! \mathcal{O}(n) \mathcal{O}(1)\!<\!\mathcal{O}(n) \mathcal{O}(\log n) 1 \!<\! \mathcal{O}(n) \mathcal{O}(\log n) 1 \!<\! \mathcal{O}(n)
binärer Suchbaum \mathcal{O}(\log n) 2 \!<\! \mathcal{O}(n) \mathcal{O}(1)\!<\!\mathcal{O}(n) \mathcal{O}(1) \mathcal{O}(\log n) 2 \!<\!\mathcal{O}(n)
1 Abhängig vom Zugriffsmuster der Anwendung können bei Splay-Bäumen auch unterlogarihmische mittlere Laufzeiten vorkommen.

2 Unter den unbalancierten binären Suchbäumen gibt es Bäume, bei denen \mathcal{O}(\log n) nicht garantiert werden kann. Die Angabe \mathcal{O}(\log n) gilt jedoch im Mittel über alle möglichen Baumformen hinweg.

Neben den vorgenannten Operationen kommen weitere in Betracht:

  • Zugriff auf spezielle Elemente, wie z. B. das kleinste Element
  • Verschmelzen von Suchbäumen

Laufzeitmessungen einiger Suchalgorithmen anhand realistischer Beispiele sind zu finden bei Ben Pfaff.

Siehe auch[Bearbeiten]

Weblinks[Bearbeiten]