Suchbaum

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

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.

Die Menge besitzt eine totale Quasiordnung, die auch eine Totalordnung sein kann, und der Baum eine Links-Rechts-Orientierung, die mit der Ordnungsrelation verträglich ist in folgendem Sinn: »links« von einem Knoten gibt es keine größeren Elemente und »rechts« keine kleineren.

Operationen[Bearbeiten | Quelltext 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. Dabei kommt die unter dem Namen »binäres Suchen« bekannte Vorgehensweise zum Zuge, die von der Ordnungsrelation und der Links-Rechts-Orientierung Gebrauch macht.

Der maximale Aufwand für das Suchen, d. i. die Maximalzahl der erforderlichen Vergleiche, ist proportional zur Baumhöhe h. Ein Baum wird balanciert genannt, wenn dafür Sorge getragen ist, dass h stets logarithmisch in der Anzahl n der Elemente ist. Ohne solche Vorkehrung kann der Suchbaum entarten bis zum ungünstigen Fall, dass der Suchaufwand proportional wird zu n.

Spezielle Suchbäume[Bearbeiten | Quelltext 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.

Keine Binärbäume sind folgende Suchbäume:

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

Weitere auf Bäumen basierende Suchstrukturen[Bearbeiten | Quelltext 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 | Quelltext bearbeiten]

Der zusätzliche Speicherverbrauch eines Suchbaums – über die Nutzdaten hinaus – ist im Allgemeinen linear in der Anzahl n der Elemente, also .

Laufzeitkomplexität[Bearbeiten | Quelltext 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
Rot-Schwarz-Baum
2-3-4-Baum
B-Baum
Splay-Baum  1  1  1
binärer Suchbaum  2  2
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 nicht garantiert werden kann. Die Angabe 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 | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]