漸進記號
\(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}) + n\log_2{n}\), \(T(n) = \Theta(n\log_2{n})\)
例子
對於\(T(n) = 2T(\frac{n}{2}) + n\log_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\)的冪
練習證明