嘘~ 正在从服务器偷取页面 . . .

主定理


主定理

证明先不写

将一个规模为 $n$ 的问题,通过分治得到 $a$ 个规模为 $n/b$ 的子问题,每个递归带来的额外计算为 $f(n)$ ,则有

其中 $a,b$ 为常数, $n\in \mathbb{N}^*,a\ge 1,b > 1,n/b$ 解释为 $\left\lfloor{\dfrac{n}{b}}\right\rfloor$ 或 $\left\lceil\dfrac{n}{b}\right\rceil$

  1. 若 $\exists \epsilon > 0$ 使得 $f(n)=O(n^{\log_b{a}-\epsilon})$,则 $T(n)=\Theta(n^{\log_ba})$
  2. 若 $\exists \epsilon \ge 0$ 使得 $f(n)=\Theta(n^{\log_ba}\log^\epsilon n)$,则 $T(n)=\Theta(n^{\log_ba}\log^{\epsilon+1}n)$
  3. 若 $\exists \epsilon>0$ 使得 $f(n)=\Omega(n^{\log_ba+\epsilon})$ ,且 $\exists c<1 , \forall n \gg 1$ 使得 $af(n/b)\le cf(n)$ ,则 $T(n)=\Theta(f(n))$

其中 $\epsilon,c$ 均为常数。


常用结论

$T(n) = 2T(\frac{n}{2}) + \Theta(n) = \Theta(n \log n)$

$T(n) = T(\frac{n}{2}) + \Theta (n) = \Theta (n)$

$T(n) = T(\frac{n}{2}) +\Theta (1) = \Theta(\log n)$

$T(n) = 2T(\frac{n}{2}) + \Theta(n \sqrt{n}) = \Theta ( n \sqrt{n} )$


例题


例1

解:

根据公式 $a=6,b=3$

注:不要问我为什么可以手算出来,因为我背了自然对数表

并且


例2

解:

根据公式 $a=4,b=2$

并且


例3

解:

根据公式 $a=1,b=2$

并且

同时

此时 $\frac{\sqrt{2}}{2}< c < 1$ ,故


例4

解:

根据公式 $a=4,b=3$

并且

同时

此时 $\frac{4}{9} < c < 1$


文章作者: q779
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 q779 !
评论
  目录