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.

Inhaltsverzeichnis

[Bearbeiten] 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, 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.

[Bearbeiten] Spezielle Suchbäume

Insbesondere bei den binären Suchbäumen (engl. BST von binary search tree), bei denen ein Knoten maximal 2 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.

[Bearbeiten] 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:

[Bearbeiten] Speicherkomplexität

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

[Bearbeiten] 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 mittlere/maximale Laufzeiten gegenübergestellt.

Suchbaum Suchen
(=Baumhöhe)
Traversieren Einfügen Löschen
unausgewogener
Binärbaum
\mathcal{O}(\log n) / \mathcal{O}(n) \mathcal{O}(1) / \mathcal{O}(n) \mathcal{O}(1) / \mathcal{O}(1) \mathcal{O}(\log n) / \mathcal{O}(n)
AVL-Baum \mathcal{O}(\log n) / \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}(\log n) \mathcal{O}(1) / \mathcal{O}(\log n) \mathcal{O}(\log n) / \mathcal{O}(\log n) \mathcal{O}(\log n) / \mathcal{O}(\log n)
Splay-Baum \mathcal{O}(\log n) / \mathcal{O}(\log n) \mathcal{O}(\log n) / \mathcal{O}(\log n) \mathcal{O}(\log n) / \mathcal{O}(\log n)
2-3-4-Baum \mathcal{O}(\log n) / \mathcal{O}(\log n) \mathcal{O}(\log n) / \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) / \mathcal{O}(\log n) \mathcal{O}(\log n) / \mathcal{O}(\log n)

Die \mathcal{O}(\log n)-Angaben gelten normalerweise für jeden einzelnen Baum des Typs, bei den unausgewogenen Bäumen jedoch nur über alle Bäume 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.

[Bearbeiten] Weblinks

[Bearbeiten] Siehe auch

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Mitmachen
Drucken/exportieren
Werkzeuge
In anderen Sprachen