代入法求递推式

先介绍一下几个定理

定理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$ 时,解是正确地. 

 

posted @ 2019-10-09 19:40  Rogn  阅读(573)  评论(0编辑  收藏  举报