Suchbaum

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. Wie ein assoziatives Datenfeld oder eine Hashtabelle realisiert er eine endliche Funktion (englisch: map), bei der aus einem Suchschlüssel (aus der endlichen Definitionsmenge) ein Datenwert (aus der Wertemenge) gewonnen wird. Bei fehlender Wertemenge realisiert der Baum eine Indikatorfunktion, entspricht also einer endlichen Menge (englisch: set).

Aus Effizienzgründen besitzt die Menge allermeist eine totale Quasiordnung, die auch eine Totalordnung sein kann. Dieser Ordnung entspricht im Baum eine Links-Rechts-Orientierung auf folgende Weise: »links« von einem Knoten gibt es keine größeren Elemente und »rechts« keine kleineren. Dadurch wird in Form des „binären Suchens“ ein Prinzip namens „Teile und herrsche“ möglich, welches Suchzeiten erlaubt, die logarithmisch in der Anzahl der Suchschlüssel sind.

Es gibt Suchbäume sowohl in statischer (unveränderlicher) wie in dynamischer (durch Einfügungen und Löschungen veränderbarer) Ausprägung, für welch letztere sich die Baumstruktur besonders gut eignet.

Operationen

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 (bei vorliegender Totalordnung) 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

Hauptartikel: Binärer Suchbaum

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

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

Der Speicherverbrauch eines Suchbaums ist – zusätzlich zu den Nutzdaten – im Allgemeinen linear in der Anzahl n der Elemente, also in {\mathcal {O}}(n).

Laufzeitkomplexität

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 asymptotische

mittlere < maximale (worst case)

Laufzeiten gegenübergestellt, wobei die maximale weggelassen ist, wenn sie mit der mittleren übereinstimmt.

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:

Siehe auch

Literatur

Trenner
Basierend auf einem Artikel in: Wikipedia.de
Seitenende
Seite zurück
©  biancahoegel.de
Datum der letzten Änderung: Jena, den: 18.01. 2022