计算时间复杂度
前言
首先,注意几个符号:
符号 $\Theta$ 既是上界也是下界。
符号 $O$ 表示上界。
符号 $\Omega$ 表示下界。
Master 定理
又称为主定理,具体内容如下:
$T(n)=aT(n/b)+f(n)$,则:
$f(n)<O(n^{\log_b^a} )\Longrightarrow T(n)=\Theta(n^)$。
$f(n)=\Theta(n^{\log_b^a}\log^kn) \Longrightarrow T(n)=\Theta(n^{\log_b^a}\log^{k+1}n)$
假设存在常数 $ϵ>0$ ,有 $f(n)=Ω(n^{log_b^a+ϵ})$,同时存在常数 $c<1$ 以及充分大的 $n$ 满足 $af(n/b)≤cf(n)$ ,那么 $T(n)=Θ(f(n))$。
注意第三个情况,有一些情况是不可以用的,如:
$T(n)=4T(n/2)+\frac{n^2}{\log n}$
正确答案是 $\Theta(n^2\log\log n)$。
XXX 定理
在算法导论上看到的,定理名字忘记了,内容如下:
$T(n)=\sum\limits a_iT(n\cdot b_i)+f(n)$
其中 $0<b_i<1$。
令实数 $p$ 为 $\sum\limits a_ib_i^p=1$ 的解,可以证明是存在解的。
$$T(n)=\Theta(n^p(1+\int_1^n \dfrac{f(x)}{x^{p+1}}dx))$$
用法比主定理更广,也没有很多的限制。
例如:
$T(n)=T(\dfrac{n}{3})+2T(\dfrac{2n}{3})+O(n\log n)$
此时 $p=2$ ,$T(n)=\Theta(n^2)$。
万金油:数学归纳法
猜测 $T(n)=g(n)$,然后瞎搞。
可能有用的 link