diff --git a/301_dynamische_Arrays.tex b/301_dynamische_Arrays.tex index 13c546814e4cb0b82034ca73160ecde0064dce72..7f694daeb486dddf676cfc027fb63ce31e5cae11 100644 --- a/301_dynamische_Arrays.tex +++ b/301_dynamische_Arrays.tex @@ -121,10 +121,10 @@ Damit kommen wir bei genauerer Betrachtung auf einen amortisierten Aufwand von $ Im Unterschied zur average-case-Analyse haben wir bei einer amortisierten Analyse also \emph{garantiert}, dass $k$ subsequente Operationen nicht jedes mal im worst case landen. \begin{definition}[Amortisierte Laufzeit] - Seien $o_1, o_2, \dots$ endlich viele verschiedene Funktionen. Der \emph{amortisierte} Aufwand von Funktionenfolgen + Seien $o_1, o_2, \dots$ endlich viele verschiedene Operationen. Der \emph{amortisierte} Aufwand von Operationenfolgen $f_\bullet \in \{o_1, o_2, \dots\}^\mathbb{N}$ der Länge $n$ wird definiert als: \[ - T_{\text{amo}}(n) = \frac{\max(\{\sum_{i=1}^n f_i | f_\bullet \in \{o_1, o_2, \dots\}^\mathbb{N})}{n}. + T_{\text{amo}}(n) = \frac{\max(\{\sum_{i=1}^n T(f_i) | f_\bullet \in \{o_1, o_2, \dots\}^\mathbb{N})}{n}. \] \end{definition} @@ -216,9 +216,10 @@ Umstrukturierung: \end{lemma} \begin{proof} Wir beobachten zuerst: Direkt nach einer Umstrukturierung, als zu Beginn von Zeitpunkt $i+1$ gilt: - \[ + \begin{align} n_{i+1} = \frac{n_\text{cap}}{2}. - \] + \label{eq:post_resizing} + \end{align} Nun gibt es zwei Fälle für die Umstrukturierung zum Zeitpunkt $j$: Fall 1: Die Umstrukturierung ist eine Erweiterung, es ist also $f_j$ gleich $\texttt{add}$.\\ @@ -253,13 +254,13 @@ Damit können wir zeigen, dass das dynamische Array einen amortisierten Aufwand vorherigen Lemma klar: Ist $K_0 = 0$ und damit nicht negativ, bleibt $K_i \leq 0$ für alle $i \in \mathbb{N}$. Da die tatsächliche Laufzeit $T(f_i) = a_i$, haben wir also \[ - T\left(\sum_{i=1}^n f_i \right) = \sum_{i=1}^n a_i \leq \sum_{i=1}^n e_i \leq 3n. + \sum_{i=1}^n T(f_i) = \sum_{i=1}^n a_i \leq \sum_{i=1}^n e_i \leq 3n. \] Das gilt für alle möglichen Operationenfolgen, also auch für die zeitaufwendigste. Nach Definition ist damit ist Laufzeit pro Operation \[ - T_{\text{amo}}(n) = \frac{\max(\{\sum_{i=1}^n f_i | f_\bullet \in \{\texttt{add}, \texttt{delete}\}^\mathbb{N})}{n} + T_{\text{amo}}(n) = \frac{\max(\{\sum_{i=1}^n T(f_i) | f_\bullet \in \{\texttt{add}, \texttt{delete}\}^\mathbb{N})}{n} \leq \frac{3n}{n} = 3 \in \mathcal{O}(1). \] \end{proof}