主定理


漸進記號

\(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\)

證明主定理

畫遞歸樹

現在只需要計算

\[g(n) = \sum_{j=0}^{\log_b{n} - 1} a^j f(\frac{n}{b^j}) \]

帶入即可證明

練習

\(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\)的冪
練習證明


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM