Mějme opět rekurenci (případně i jinou rekurenci)
Substituční „metoda“ spočívá v následujících dvou krocích:
Uhodněte/odhadněte asymptotické chování $T(n)$, vyjádřené pomocí $\Theta$, $\mathcal{O}$, $\Omega$, …
Dokažte jeho platnost pomocí matematické indukce.
Z důvodu zpětné kompatibility s BI-ZDM o tomto přístupu stále mluvíme jako o „substituční metodě“. Ale skutečně nejde o nic jiného, než o důkaz platnosti jistého vztahu pomocí matematické indukce. Demonstrujme výše popsané myšlenky na konkrétních příkladech.
Mějme rekurentní rovnici
Pomocí iterační metody po $k$ krocích dostaneme
Pokud $n = 2^k$, tj. $k = \log_2(n)$, pak dostáváme
Pomocí matematické indukce dokažte vztah $T(n) = \mathcal{O}(n \ln n)$, pro $n \to \infty$.
Máme dokázat následující tvrzení: splňuje-li $T(n)$ rekurentní rovnici $T(n) = 2 T\left( \frac{n}{2} \right) + n$, pak
Indukční krok: Předpokládejme, že pro $n$ platí $T(\frac{n}{2}) \leq c \frac{n}{2} \ln \frac{n}{2}$. Potom s využitím rekurentního vztahu dostáváme
Pro $c > \frac{1}{\ln 2}$ je poslední výraz záporný a proto platí $T(n) \leq cn \ln(n)$. Omezení na $n$ jsme žádná neměli.
Základní krok matematické indukce: dokážeme nalézt nějaké $n_0 \in \N$ takové, aby nerovnost $T(n_0) \leq c n_0 \ln(n_0)$ platila pro nějaké $c > 1/\ln 2$? Ano, můžeme vzít libovolné $n_0 > 1$, pro které má $T(n_0)$ smysl a pak nerovnost splnit volbou dostatečně velkého $c$.
Poznámka: Naprosto analogickým způsobem bychom dokázali vztah $T(n) = \Omega(n \ln(n))$, pro $n \to \infty$ a dohromady tedy i $T(n) = \Theta(n \ln(n))$, $n \to \infty$.
Mějme rekurenci
Pomocí matematické indukce dokažte, že $T(n) = \mathcal{O}(n)$.
V tomto případě se dostaneme do problémů. Chceme ukázat, že nerovnost
platí pro nějaké $c > 0$ a všechna dost velká $n$.
Indukční krok: Předpokládejme platnost vztahu $T\left(\frac{n}{2}\right) \leq c \frac{n}{2}$. Potom
Pravou stranu ovšem nikdy neuděláme menší než požadované $cn$.
Pokud ovšem chceme dokázat, že $T(n) = \mathcal{O}(n)$, pak díky tranzitivitě na pravé straně (6.11) stačí mít libovolný $\mathcal{O}(n)$ výraz.
Druhý pokus: V předchozím pokusu jsme „přetekli“, zkusme tento problém vyřešit zpřísněním původního požadavku, pokusme se ukázat nerovnost
pro nějaké konstanty $c,b > 0$ a všechna dost velká $n$.
Indukční krok: Předpokládejme platnost vztahu $T\left(\frac{n}{2}\right) \leq c \frac{n}{2} - b$. Potom
Požadujeme $1 - 2b \leq -b$, což je ekvivalentní $b \geq 1$.