代入法求递推式
先介绍一下几个定理
定理1:
设 $b$ 和 $d$ 是非负常数, $n$ 是2的幂,那么下面递推式
$$f(n) = \begin{cases}
d & n=1 \\
2f(n/2)+bnlog\ n & n \geq 2
\end{cases}$$
的解是 $f(n) = \Theta(n {{\log}^2n})$
引理1:
设 $a$ 和 $c$ 是非负整数,$b, d, x$ 是非负常数,并且对于某个非负整数 $k$,令 $n=c^k$,那么,下面递推式
$$f(n) = \begin{cases}
d & n=1 \\
af(n/c)+bn^x & n \geq 2
\end{cases}$$
的解是
$$f(n)= \begin{cases}
bn^xlog_cn + dn^x & a=c^x \\
(d + \frac{bc^x}{a-c^x})n^{log_ca} - (\frac{bc^x}{a-c^x})n^x & a \neq c^x
\end{cases}$$
特别地,当 $x=1$ 时,有
$$f(n)= \begin{cases}
bnlog_cn + dn & a=c \\
(d + \frac{bc}{a-c})n^{log_ca} - (\frac{bc}{a-c})n & a \neq c
\end{cases}$$
定理:
设 $a$ 和 $c$ 是非负整数,$b$ 和 $d$ 是非负常数,$n=c^k$,那么,下面递推式
$$f(n)= \begin{cases}
d & n=1 \\
af(n/c)+bn^x & n \geq 2
\end{cases}$$
的解是
$$f(n)= \begin{cases}
\Theta(n^x) & a < c^x\\
\Theta(n^xlog \ n) & a=c^x \\
\Theta (n^{log_ca}) & a>c^x
\end{cases}$$
特别地,如果 $x=1$,那么
$$f(n)= \begin{cases}
\Theta(n) & a < c\\
\Theta(nlog \ n) & a=c \\
\Theta (n^{log_ca}) & a>c
\end{cases}$$
代入法
这种方法通常用来证明上下界,也能用来证明精确解。
基本过程:
- 猜想一个解(例如,通过上面地定理)
- 再采取数学归纳法,初始解带有一个或多个常量,假设解对小规模成立;现要对大一点也成立,求出此时地常数 $c_I$
- 也就是说,对常数取 $c_i$ 时,解是正确地.