6.7 Asymptotické chování řešení LRR

Motivací pro obsah této sekce je následující situace: máme rekurzivní algoritmus, který při řešení dělí problém „velikosti“ $n$ na $a$ „částí“ „velikosti“ $\frac{n}{b}$ a jejich „zkombinování“ do celkového řešení stojí $f(n)$.

Takovouto situaci popíšeme rekurzivním vztahem

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

kde $T(n)$ vyjadřuje složitost (operační/paměťovou) vyřešení problému velikosti $n$.

Nyní z praktických důvodů místo posloupností používáme funkce $T$ a $f$, typicky s kladnými funkčními hodnotami a definované alespoň na $\langle 1, +\infty)$, resp. $\N$. Pokud velikost vstupu nemá velikost $n = b^N$, pak musíme ještě řešit případné zaokrouhlování $n/b$ pomocí horní nebo dolní celé části. Za „počáteční podmínku“ považujeme $T(1)$.

Příklady rekurencí a algoritmů (viz BI-AG1 a jinde):

  • FFT: $T(n) = 2 T\left(\frac{n}{2}\right) + \Theta(n)$,

  • MergeSort: $T(n) = 2 T\left(\frac{n}{2}\right) + \Theta(n)$,

  • Karatsuba (rekurzivní násobení čísel): $T(n) = 3 T\left(\frac{n}{2}\right) + \Theta(n)$,

Naším cílem nyní není nalézt řešení v uzavřeném tvaru, ale odhalit nějaké jeho asymptotické vlastnosti. Například nalézt jeho asymptotickou těsnou mez $\Theta$.

K tomuto účelu budeme postupně probírat

  • Iterační metodu (podkapitola 6.8),

  • Mistrovskou metodu (podkapitola 6.9),

  • Substituční metodu (podkapitola 6.10).