6.8 Iterační metoda

Pod iterační metodou chápeme opakované rozepsání rekurence a následné řešení asymptotického chování výsledné sumy. Nejprve si ukážeme konkrétní příklad a poté se pustíme do obecného rozboru, který vyústí v Mistrovskou metodu (Věta 6.9).

Příklad 6.19

Mějme rekurentní vztah

\begin{equation*} T(n) = 3 T\left( \frac{n}{4} \right) + n. \end{equation*}

Předpokládejme $T(1) = \Theta(1)$. Bez snahy o hledání explicitního řešení nalezněte asymptotickou těsnou mez pro $T(n)$.

Zobrazit řešení

Postupně iterujme (dosazujme; telescoping), po prvních třech krocích dostaneme

\begin{align*} T(n) &= n + 3T\left( \frac{n}{4} \right) = \\ &= n + 3 \frac{n}{4} + 3^2 \cdot T\left(\frac{n}{4^2}\right) = \\ &= n + 3 \frac{n}{4} + 3^2 \frac{n}{4^2} + 3^3 \cdot T\left( \frac{n}{4^3} \right).\end{align*}

Obecně po $k$ iteracích dostaneme

\begin{equation*} T(n) = n + 3 \frac{n}{4} + 3^2 \frac{n}{4^2} + \cdots + 3^{k-1} \frac{n}{4^{k-1}} + 3^k \cdot T\left( \frac{n}{4^k} \right). \end{equation*}

Iterování skončí při dosažení rovnosti $4^k = n$, tj. $k = \log_4 n$. Bereme-li $T(1) = \Theta(1)$, pak dostáváme vztah

\begin{equation*} T(n) = \underbrace{n \cdot \sum_{i=0}^{\log_4(n) - 1} \left( \frac{3}{4} \right)^i}_{A(n)} + \underbrace{3^{\log_4(n)} \cdot \Theta(1)}_{B(n)}. \end{equation*}

Nyní se zaměřme na výrazy $A(n)$ a $B(n)$ jednotlivě.

  • Ve výrazu pro $A(n)$ se vyskytuje součet konvergentní číselné řady (geometrická s kladným kvocientem menším než $1$) a proto $A(n) = n \cdot \Theta(1) = \Theta(n)$.

  • Pro druhý člen platí $B(n) = n^{\log_4(3)} \cdot \Theta(1) = \Theta\left( n^{\log_4(3)} \right)$.

Celkově dostáváme $T(n) = \Theta(n)$, protože $\log_4(3) < 1$.

Pokud aplikujeme iterační metodu na rekurenci tvaru

\begin{equation*} T(n) = a T\left( \frac{n}{b} \right) + f(n), \end{equation*}

pak je obecně potřeba:

  • určit počet iterací nutných k dosažení počátečních podmínek,

  • sečíst řadu nebo odhadnout její součet, případně rozhodnout o její konvergenci/divergenci, nebo nalézt asymptotické chování posloupnosti částečných součtů divergentní číselné řady,

  • následně určit, který z členů $A(n)$ a $B(n)$ kontroluje výsledné chování.

Tento postup obecně více rozebírat nebudeme, vždy ho lze aplikovat v konkrétním příkladě (viz  cvičení k předmětu BI-MA2 na MARASTu). V následující podkapitole představíme metodu, která je na tomto postupu založená a postihuje některé časté případy.