--- title: Amortizovaná složitost tags: cvičení description: View the slide with "Slide Mode". --- # B-stromy preemptivní insert B-strom = $(a,2a)$-strom ![](https://i.imgur.com/3JukRZu.png) vizualizace https://www.cs.usfca.edu/~galles/visualization/BTree.html --- Přičítání jedničky 1. $11110001010101010011\color{red}{0} + 1 = 11110001010101010011\color{red}{1}$ : 1 krok 2. $1111000101\color{red}{01111111111} + 1 = 1111000101\color{red}{10000000000}$ : $11$ kroků = $O(\log n)$ případ 2. se provede jen občas. # agregačmí metoda $n\times$ přičteme 1 k 0: ${0000}$ $\color{red}{0001}$ $\color{blue}{0010}$ $\color{red}{0011}$ $\color{green}{0100}$ $\color{red}{0101}$ $\color{blue}{0110}$ $\color{red}{0111}$ $\color{lime}{1000}$ $\color{red}{1001}$ $\color{blue}{1010}$ $\color{red}{1011}$ $\color{green}{1100}$ $\color{red}{1101}$ $\color{blue}{1110}$ $\color{red}{1111}$ <span style="color:red">Pro $n$ přičtení se mění poslední pozice</span> <span style="color:blue">pro $n/2$ přičtení se mění předposlední pozice</span> <span style="color:green">pro $n/4$ přičtení se mění 3. pozice od konce</span> <span style="color:lime">...</span> počet operací pro $n$ přičtení=$\sum_1^{\log n} \frac{n}{2^i}=n\sum_1^{\log n} \frac{1}{2^i}<=n\sum_1^{\infty} \frac{1}{2^ i}=2n$ Takže na jednu operaci je $O(1)$ --- # penízková metoda každá jedničkka mě stojí 1 operaci za vložení a přidá mi "penízek" za přidání. Ten "utratím" při přenosu. $\color{orange}{1111}000\color{orange}{111}0\color{orange}{1}0\color{orange}{1}0\color{orange}{1}00\color{orange}{111} + 1 = \color{orange}{1111}000\color{orange}{111}0\color{orange}{1}0\color{orange}{1}0\color{orange}{1}0\color{orange}{1}000$ --- # potenciálová metoda?? operace $o_1,\ldots,o_n$ s reálnou cenou $C_1,\ldots,C_N$ a amortizovaná cena $A_1,\ldots,A_N$. Potenciál $\Phi_0\geq 0$. A po provedení prvních $i$ operací $\Phi_i=\sum_{j\leq i} A_j - \sum_{j\leq i} C_j$ Potenciálový rozdíl $\Delta\Phi_i=\Phi_i-\Phi_{i-1}=A_i-C_i$ Pokud $\Delta\Phi_i<0$ čas spotřebuje. (při přenosu všechny penízky utratím) Pokud $\Delta\Phi_i>0$ čas ukládá.(1 vloží penízek) Potenciál $\Phi_i$=počet jedniček v binárním zápisu čísla (vždy větší než 0). Takže pro každé $0\leq i \leq n; i\geq 0$. 1. $\Delta\Phi_i=1$ pokud je na konci čísla 0, takže jsem si "naspořil jednu k dobru" a amortizovaná cena $A_i=C_i+\Delta\Phi_i=1+1=2$. 2. $\Delta\Phi_i=-j+1$ kde $j>0$ je počet 1 na koci čísla, takže "utrácím". Skutečná cena $C_i=j+1$ (počet jedniček na konci čísla$+1$, zápis přenosu) a tedy $A_i=C_i+\Delta\Phi_i=-j+1 + j+1=2$ Průběh potenciálu: ![](https://i.imgur.com/kf1WXvr.png)