\( \def\cO{\mathcal{O}} \def\cH{\mathcal{H}} \def\cU{\mathcal{U}} \def\LCP{\mathrm{LCP}} \def\reals{\mathbb{R}} \)

Velikost widgetu u Traversal Data Structure

TDS spravuje posloupnost prvků s operací přidání prvku s I/O složitostí $\cO((\log\log N)^{2+ε})$ a sekvenčním čtením $K$ prvků se složitostí $\cO(K/B + B^ε)$. Celý popis viz původní článek. Paměť je hierarchicky členěna na widgety. Widget typu $W_l$ má $(1+1/(\log\log l)^{1+ε})⋅l^{1-α}$ podwidgetů typu $W_{l^α}$, kde $0 \lt α \lt 1$ a $ε\gt 0$ jsou konstantní parametry datové struktury. Každý widget obsahuje souvislou podposloupnost uložených prvků, pořadí podwidgetů je libovolné. Na nejnižší úrovni jsou widgety typu $W_{l_0}$ pro $l_0 = (\log\log N)^2$, které obsahují maximálně $2l_0$ prvků. Vedle toho má každý widget jen hlavičku konstantní velikosti. Lemma 1 z článku: Widget typu $W_l$ má velikost $Θ(l)$. Nechť $S(l)$ je velikost widgetu typu $W_l$. Na nejnižší úrovni má widget velikost $S(l_0) = \cO((\log\log N)^2)$; jejich počet je větší než počet všech ostatních widgetů, takže můžeme na této úrovni započítat i velikosti všech hlaviček. Pro vyšší úrovně pak máme: \[ S(l) = (1+1/(\log\log l)^{1+ε})⋅l^{1-α}⋅S(l^α)). \] Index $l$ v typech widgetů roste s každou vyšší úrovní umocněním na $1/α$. Nechť $k$ je počet úrovní mezi $W_{l_0}$ a $W_l$; pak platí, že $l = l_0^{α^{-k}}$ a tedy $k=\log_{1/α}\log_{l_0} l$. Rekurenci rozepíšeme následovně: \[ S(l) = \cO\left(l_0 \prod_{i=1}^k \left(1+1/\left(\log\log l_0^{α^{-i}}\right)^{1+ε}\right)⋅l_0^{(1-α)α^{-i}} \right) = \] \[ =\cO\left( l_0^{1+ \sum_{i=1}^k (1-α)α^{-i} } ⋅ e^{ \sum_{i=1}^k 1/\left(\log\log l_0 + i⋅\log(1/α)\right)^{1+ε} } \right) = \] \[ =\cO\left( l_0^{α^{-k}} ⋅ e^{\cO\left( \sum_{i=1}^{\infty} 1/i^{1+ε}\right) } \right) = \cO\left( l ⋅ e^{\cO(1)} \right) = \cO(l) \]