# Gewichteter binärer Suchbaum

In der Informatik ist ein gewichteter binärer Suchbaum eine Ausprägung der abstrakten Datenstruktur binärer Suchbaum, bei der jedem Knoten neben Schlüssel und anderen Daten ein Gewicht (Zugriffswahrscheinlichkeit) zukommt. (Der Vollständigkeit halber kommt ein solches auch seinen Nachbarintervallen zu.)
Zu optimieren ist die gewichtete Pfadlänge des Baums.
Das Gewicht ist an den Schlüssel gebunden, somit ergibt das Zulassen von mehreren Objekten („Duplikaten“) mit gleichem Schlüssel keinen Sinn.
Sind Gewichte überhaupt nicht bekannt oder sind sie untereinander praktisch gleich, dann sind höhen-balancierte Bäume eine gute Wahl. Ein Beispiel ist der AVL-Baum, der als optimiert auf die gewichtete Pfadlänge bei Einheitsgewichten angesehen werden kann.

## Beispiele

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.

### Geometrische Verteilung

Bei der geometrischen Gewichtsverteilung $p_{i}=(1-q)q^{i}$ für $i=0,1,...$ mit $0<q<1$ gilt $\textstyle \sum _{i\geqq 0}p_{i}=1$. Ein Binärbaum sei wie folgt rekursiv aufgebaut: Derjenige Schlüssel wird zu einem der beiden Söhne und zur Wurzel des nächsten Teilbaums gemacht, der das größte verbleibende Gewicht hat. Da es danach keinen Schlüssel auf seiner Seite mehr gibt, bleibt der andere Sohn leer. Ein solcher Binärbaum hat die konstante gewichtete Pfadlänge $\textstyle \sum _{i\geqq 0}(i+1)p_{i}=1/(1-q)$, obwohl er einer linearen Liste entspricht. Passt nun die Anordnung der Schlüssel genau zu diesem Binärbaum (so dass er ein binärer Suchbaum ist), so ist er bei $q>{\tfrac {1}{2}}$ optimal, denn ein Herabstufen der Wurzel eines Teilbaums verschlechtert den Mittelwert. Es gibt dann also sehr seltene Suchanfragen, die beim optimalen gewichteten binären Suchbaum in nur linearer Zeit beantwortet werden.

### Natürliche Vokabulare

Im Englischen ist die Wahrscheinlichkeit für das Vorkommen des $i$-t häufigsten Wortes ungefähr
    $\alpha _{i}\approx i^{-1{,}12}/\sum _{i\geqq 1}i^{-1{,}12}$.
Die gewichtete Pfadlänge eines optimalen binären Suchbaums für alle englischen Wörter ergibt sich zu ungefähr $10{,}2$.

### Dynamische Gewichte

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.
Mehlhorn beschreibt „Nahezu optimale binäre Suchbäume“.
Bei den Splay-Bäumen werden trotz völlig anderer Vorgehensweise ebenfalls die am häufigsten angesprochenen Knoten in die Nähe der Wurzel gespült.

## Zugriffsverteilung und gewichtete Pfadlänge

Sei $X:=\left\{x_{1}<x_{2}<...<x_{n}\right\}$ eine Schlüsselmenge aus einem total (quasi)geordneten Reservoir $R$ von Schlüsseln, seien ferner $p_{i}$ bzw. $q_{j}$ Häufigkeiten, mit denen auf das Element $x\in R$ (oder Äquivalenzklasse resp. Intervall) zugegriffen wird, wobei $x\in {\overline {x_{i}}}$ für $1\leqq i\leqq n$ resp. $x_{j}<x<x_{j+1}$ für $0\leqq j\leqq n$. (Dabei seien $x_{0}:=-\infty$ und $x_{n+1}:=+\infty$ zusätzliche nicht zu $R$ gehörende Elemente mit der üblichen Bedeutung.) Das $(2n+1)$-Tupel
    ${\mathfrak {z}}:=\left({\begin{smallmatrix}&p_{1}&&p_{2}&&\cdots &&p_{n}&\\q_{0}&&q_{1}&&q_{2}&&\cdots &&q_{n}\end{smallmatrix}}\right)$
heißt Zugriffsverteilung für die Menge $X$, wenn alle $p_{i},q_{j}\geqq 0$ sind. ${\mathfrak {z}}$ wird zur Zugriffswahrscheinlichkeitsverteilung, wenn $\textstyle \sum p_{i}+\sum q_{j}=1$ ist.
Sei nun $T$ ein Suchbaum für die Menge $X$ mit einer Zugriffsverteilung ${\mathfrak {z}}$, ferner sei $a_{i}^{T}$ die Tiefe des (inneren) Knotens $x_{i}$ und $b_{j}^{T}$ die Tiefe des Blattes $(x_{j},x_{j+1})$ (s. Abb. 4; jeweils Binärer Suchbaum#Terminologie der Abb. 1B). Wir betrachten die Suche nach einem Element $x\in R$. Wenn $x=x_{i}$, dann vergleichen wir $x$ mit $a_{i}^{T}+1$ Elementen im Baum. Wenn $x_{j}<x<x_{j+1}$, dann vergleichen wir $x$ mit $b_{j}^{T}$Elementen im Baum. Also ist
    $S_{\mathfrak {z}}^{T}:=\sum _{i=1}^{n}p_{i}(a_{i}^{T}+1)+\sum _{j=0}^{n}q_{j}b_{j}^{T}$
die (mit der Zugriffsverteilung ${\mathfrak {z}}$) gewichtete Pfadlängensumme des Baumes $T$; ist ${\mathfrak {z}}$ eine Wahrscheinlichkeitsverteilung, dann ist $S_{\mathfrak {z}}^{T}$ die gewichtete Pfadlänge, die gewichtete Suchtiefe oder die mittlere Anzahl der benötigten Vergleiche. Die Abb. 4 zeigt einen Suchbaum $T$, der mit einem Wert von $S_{\mathfrak {z}}^{T}=2$ optimal für die Zugriffsverteilung ${\mathfrak {z}}:={\tfrac {1}{24}}\left({\begin{smallmatrix}&1&&3&&3&&0&\\4&&0&&0&&3&&10\end{smallmatrix}}\right)$ ist.