更换变元法求递推式

即高中经常用的换元法。

直接看两个例子吧!

例子一

考虑递推式

$$f(n) = \begin{cases}
1 &  n=2 \\
1 &  n = 4 \\
f(n/2)+f(n/4) & n>4
\end{cases}$$

解:

这里假设 $n$ 是2的幂,令 $t = log \ n, \ g(k) = f(2^k)$

那么

$$g(k) = \begin{cases}
1 &  n=2 \\
1 &  n = 4 \\
g(k-1)+g(k-2) & n>4
\end{cases}$$

根据Fibonacci的递推式,$g(k) = \phi ^k,\  \phi = \frac{1+\sqrt5}{2}$

所以 $f(n) = g(log \ n) = \phi^{log\ n} = n^{log \ \phi } = \Theta(n^{0.69})$.

例子二

考虑递推式

$$f(n) = \begin{cases}
d & n=2 \\
2f(\sqrt n) + b log \ n& n>2
\end{cases}$$

解:

设 $n = 2^{2^k}$,则 $k = loglogn, g(k) = f(2^{2^k})$.

$f(n)$ 可重写成

$$g(k))\begin{cases}
d & k=0 \\
2g(k-1)+b2^k & k>0
\end{cases}$$

易求 $g(k) = d2^k + bk2^k$

因此 $f(n) = g(loglogk) = d*\ logn + b*\ logn* \ loglogn$.

 

posted @ 2019-10-07 21:40  Rogn  阅读(559)  评论(0编辑  收藏  举报