From 49ffbcc865dd935a484ec1d5af6ade529b4d3f71 Mon Sep 17 00:00:00 2001 From: Florian Unger <florian.unger@posteo.net> Date: Tue, 14 Jun 2022 17:34:12 +0200 Subject: [PATCH] progress on RBT chapter --- 305_RBT.tex | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/305_RBT.tex b/305_RBT.tex index b384954..d2ef4aa 100644 --- a/305_RBT.tex +++ b/305_RBT.tex @@ -41,8 +41,8 @@ Wir notieren RBT über einen Datentyp $D$ analog zu BST und speichern lediglich \end{align*} Per Konvention nehmen wir an, dass der Wurzelknoten immer Schwarz ist. -Wenn der kürzeste vorstellbare Pfad von der Wurzel zu einem Blatt in einem RBT-Tree durch $l$ ausschließlich durch schwarze Knoten geht, ist der längste -Pfad dann durch $2l$ Knoten, immer einen Schwarzen und einen roten. Dadurch ist gewährleistet, dass das höchste Blatt +Wenn der kürzeste vorstellbare Pfad von der Wurzel zu einem Blatt in einem RBT-Tree durch $h'$ ausschließlich durch schwarze Knoten geht, ist der längste +Pfad dann durch $2h'$ Knoten, immer einen Schwarzen und einen roten. Dadurch ist gewährleistet, dass das höchste Blatt maximal halb so hoch hängt wie eins auf der untersten Ebene. Dadurch folgt: @@ -52,6 +52,8 @@ Dadurch folgt: \end{lemma} Die Details des Beweises sind eine Übungsaufgabe. +Umgekehrt ist die Kapazität eines RBT zwischen $2^{h'}$ und $4^{h'}$. + \subsection{Einfügen in Red-Black-Trees} Da RBT insbesondere Binäre Suchbäume sind, sind die Operationen zum Suchen von Elementen, dem Finden des Maximums, @@ -152,8 +154,29 @@ kann: \label{lemma:rbt_amortisiert} \end{lemma} \begin{proof} - -\end{proof}<++> + Wir beobachten zuerst, dass sich bei einer Anwendung der Regel (3.5) die Kapazität des entsprechenden Teilbaums + verdoppelt: In jeder der vier Ausgangsfälle in Abbildung \ref{fig:rbt_balance} beträgt die Kapazität maximal + $4^{h'}$, wobei $h'$ hier die Anzahl der zu durchwandernden schwarzen Knoten auf den von der Wurzel dieses Teilbaums zu + einem Blatt beschreibt. + + Nach der Umstrukturierung hat jedoch jeder Teilbaum mit der Wurzel $x$ bzw $z$ die maximale Kapazität $4^{h'}$, d.h. + der Teilbaum mit $y$ als Wurzel hat $2 4^{h'}$ Kapazität. + + Dadurch ergeben sich beim Einfügen die in Abbildung \ref{fig:RBT_aufwand} skizzierten Schreibaufwände - eine Umstrukturierung + in der $i.$ Ebene ist doppelt so häufig wie in der Ebene $(i-1)$. + + Akkumuliert man also über $k=2^l$ mal subsequent einfügen, ergeben sich eine folgende Anzahl von Schreiboperationen: + \[ + 2^l + 2^{l-1} + 2^{l-2} + \dots + 2^0 ≤ 2^{l+1} = 2*k, + \] + und damit amortisiert über $k$ Schritte $\mathcal{O}(1)$ Aufwand. +\end{proof} + +\begin{figure}[h] + \centering + \input{bilder/RBT_aufwand.tex} + \label{fig:RBT_aufwand} +\end{figure} -- GitLab