diff --git a/303_Binaerbaeume.tex b/303_Binaerbaeume.tex index 684a6c997208484afff5342416f60d2463f61698..9fc77b07426bc6dcd84f4e053be6710bb45f6a69 100644 --- a/303_Binaerbaeume.tex +++ b/303_Binaerbaeume.tex @@ -200,7 +200,7 @@ Teilbaum, der Information im Node und einem rechten Teilbaum: \text{BST}\; D &= ε\ |\; \text{BST}\; D\quad D\quad \text{BST}\; D \\ \mathcal{B}\quad &= ε\ |\;\quad l\qquad \ \ \ x\; \ \qquad r \end{align*} -In dieser Notation beschreiben wir nun kombat die gängisten Operationen auf binären Suchbäumen in rekursiver Form: +In dieser Notation beschreiben wir nun kompakt die gängigsten Operationen auf binären Suchbäumen in rekursiver Form: Die Höhe ist $1$ + die Höhe des größeren Teilbaums: \begin{align*} @@ -292,7 +292,7 @@ erreicht, wenn wir die Elemente gemäß ihrer Ordnung einfügen. Da die Laufzeit aller Algorithmen auf Binären Suchbäumen direkt von der Höhe abhängt, stellt sich die Frage: Was ist die zu erwartende Höhe eines Binärbaums, wenn man (eindeutige) Elemente in einer zufälligen Reihenfolge einfügt? -\begin{proposition} +\begin{theorem} Werde $π \in S_n$, eine Permutation von $n$ Elementen (d.h. die Elemente $\{1,\cdots,n\}$ in einer zufälligen Reihenfolge ohne Wiederholungen), in einen initial leeren Binärer Suchbaum eingefügt. Sei $H_n$ die Zufallsvariable, die die Höhe dieses zufällig befüllten Baumes beschreibt. @@ -301,7 +301,7 @@ Was ist die zu erwartende Höhe eines Binärbaums, wenn man (eindeutige) Element \mathbb{E}[H_n] \in Θ(\log n). \] \label{prop:BST_average_case_wachstum} -\end{proposition} +\end{theorem} \begin{proof} Die untere Grenze ist klar, da wie eingangs beschrieben die Höhe eines Baumes immer in $Ω(\log n)$ liegt. @@ -309,7 +309,7 @@ Was ist die zu erwartende Höhe eines Binärbaums, wenn man (eindeutige) Element Wird ein Element $i$ gezogen, befinden sich am Ende $i-1$ Elemente im linken Teilbaum und $n-i$ Elemente im rechten Teilbaum. - Die Höhe eines nichtlehren Baumes ist 1 + die Höhe des größten Teilbauem. + Die Höhe eines nichtleeren Baumes ist 1 + die Höhe des größten Teilbaums. Unter der Annahme, dass alle Elemente gleichwahrscheinlich gezogen werden, ist der Erwartungswert von $H_n$ einfach nur der Durchschnitt aller möglichen Fälle: \begin{equation*} @@ -318,15 +318,15 @@ Was ist die zu erwartende Höhe eines Binärbaums, wenn man (eindeutige) Element \end{equation*} Wir betrachten nun $Y_n = 2^{H_n}$: Wenn wir zeigen können, dass $\mathbb{E}[Y_n] \in \mathcal{O}(n^a)$, so folgt - daraus das $\mathbb{E}[H_n] \in \mathcal{O}(a \log n) = \mathcal{O}(\log n)$. + daraus, dass $\mathbb{E}[H_n] \in \mathcal{O}(a \log n) = \mathcal{O}(\log n)$. In dieser exponentiellen Darstellung wird exponentielle Höhe nun durch \\$Y_n = 2 \max(Y_{i-1},Y_{n-1})$ beschrieben, analog verhält sich der Erwartungswert von $Y_n$: \begin{equation*} - \mathbb{E}[Y_n] = \frac{2}{n} \sum_{i=1}^n \mathbb{E}[\max(Y_{i-1}, Y_{n-i})]. + \mathbb{E}[Y_n] = \frac{2}{n} \sum_{i=1}^n \mathbb{E}[\max(Y_{i-1}, Y_{n-i})], \label{eq:EW_Yn_1} \end{equation*} - Wobei wir durch die Abschätzung $\mathbb{E}[\max(X,Y)] ≤ \mathbb{E}[X] + \mathbb{E}[Y]$ (gültig für nichtnegative + wobei wir durch die Abschätzung $\mathbb{E}[\max(X,Y)] ≤ \mathbb{E}[X] + \mathbb{E}[Y]$ (gültig für nichtnegative Zufallsvariablen $X$ und $Y$) und der Symmetrie der Summenterme weiter zu \[ \mathbb{E}[Y_n] ≤ \frac{2}{n} \sum_{i=1}^n (\mathbb{E}[Y_{i-1}] + \mathbb{E}[Y_{n-i}]) = \frac{4}{n} diff --git a/304_Halden.tex b/304_Halden.tex index 1ac67790241758fb5669e6a2694ac7d6000d35e2..991c65274b8e4ff55336319963c927a6f4e573df 100644 --- a/304_Halden.tex +++ b/304_Halden.tex @@ -49,7 +49,7 @@ Ist das Wurzelelement ein Blatt, so ist die Haldenbedingung immer erfüllt. Um sonst die Haldenbedingung zu erzwingen, muss das Wurzelelement also mit dem Maximum seiner beiden Kinder getauscht werden. Dabei wird die Haldenbedingung aber möglicherweise bei betauschten Kindknoten verletzt. Also rufen wir den Algorithmus dort noch einmal auf. -In Pseudocode aus der Array-Perspektive sieht das folgendermaßen aus (Der Pseudocode in Arrayperspektive ist eine +In Pseudocode aus der Array-Perspektive sieht das folgendermaßen aus (Der Pseudocode in Baumperspektive ist eine Übungsaufgabe): \begin{algorithm}[H] diff --git a/305_RBT.tex b/305_RBT.tex index 2c440ddf27d167991e20c4ea5a54857ae403d80c..1fcdb63dcfaf40b0373c241572790d58f200c9d9 100644 --- a/305_RBT.tex +++ b/305_RBT.tex @@ -47,7 +47,10 @@ maximal halb so hoch hängt wie eins auf der untersten Ebene. Dadurch folgt: \begin{lemma} - In einem nichtlehren Red-Black-Tree der Größe $n$ liegt die Höhe $h$ in $Θ(\log n)$. + In einem nichtlehren Red-Black-Tree der Größe $n$ gilt: + \[ + h ∈ Θ(n \log n). + \] \label{lemma:RBT_height} \end{lemma} Die Details des Beweises sind eine Übungsaufgabe. @@ -97,7 +100,7 @@ Dabei macht \texttt{balance} nichts, solange nicht einer der vier Fälle aus Abb \begin{align} \begin{rcases} \texttt{balance}(B\; a\; x\; (R\; b\; y\; (R\; c\; z\; d))) \\ - \texttt{balance}(B\; (R\; a\; x\; (R\; b\; y\; c\;) z\; d)) \\ + \texttt{balance}(B\; (R\; a\; x\; (R\; b\; y\; c\;)) z\; d) \\ \texttt{balance}(B\; (R\; (R\; a\; x\; b)\; y\; c)\; z\; d) \\ \texttt{balance}(B\; a\; x\; (R\; (R\; b\; y\; c)\; z\; d)) \\ \end{rcases} &= (R\; (B\; a\; x\; b)\; y\; (B\; c\; x\; d)) \\ @@ -155,11 +158,12 @@ Dieses Ergebnis lässt sich noch verfeinern, da tatsächlich amortisiert $\mathc kann: \begin{lemma} - Bei mehrfacher, sukzessiver Anwendung von \emph{\texttt{insert}} passieren lediglich $\mathcal{O}(1)$ Schreibaufrufe, also - Anwendungen der Regeln (3.1), (3.3) und (3.5). + Bei widerholten Einfügen in einen Red-Black-Tree gibt es lediglich amortisiert $\mathcal{O}(1)$ Umstrukturierungsoperationen + (Also Operationen wie in Abbildung \ref{fig:rbt_balance} beschrieben). \label{lemma:rbt_amortisiert} \end{lemma} \begin{proof} + TODO: Rework. 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