渐进记号
(O)渐进上界,(Theta)渐进紧确界,(Omega)渐进下界,(o)非渐进紧确上界,(omega)非渐进紧确下界
例如(2n^2 = O(n^2))是渐进紧确的,但(2n = O(n^2))不是渐进紧确的,我们使用(2n = o(n^2))
公式
(lg(n!) = Theta(nlgn))
(a^{log_b{n}} = n ^ {log_b{a}})
主定理
假设有递归式
(T(n) = aT(frac{n}{b}) + f(n), a geq 1, b gt 1)
情况一
若(f(n) = O(n^{log_b{a} - epsilon}), epsilon > 0)
则(T(n) = Theta(n^{log_b{a}}))
如(T(n) = 9T(frac{n}{3}) + n), (T(n) = Theta(n^2))
情况二
若(f(n) = Theta(n^{log_b{a}}))
则(T(n) = Theta(n^{log_b{a}} log_2{n}))
如(T(n) = T(frac{2n}{3}) + 1), (T(n) = Theta(log_2{n}))
情况三
若(f(n) = Omega(n^{log_b{a} + epsilon}), epsilon > 0)且对于某个常数(c<1)和足够大的(n)有(af(frac{n}{b}) leq cf(n))
则(T(n) = Theta(f(n)))
如(T(n) = 3T(frac{n}{4}) + nlog_2{n}), (T(n) = Theta(nlog_2{n}))
例子
对于(T(n) = 2T(frac{n}{2}) + nlog_2{n}),不能应用情况三,因为(frac{f(n)}{n} = log_2{n})都渐进小于(n^epsilon)
证明主定理
画递归树
现在只需要计算
带入即可证明
练习
若(f(n) = Theta(n^{log_b{a}}lg^k n), k ge 0)
则(T(n) = Theta(n^{log_b{a}}lg^{k+1} n)), 简单起见假定(n)是(b)的幂
练习证明