主定理


ghj1222

先介紹幾個符號的含義。

符號\(\Theta\),讀音西塔,既是上界也是下界,等於,嚴格貼緊。

符號\(O\),讀音毆,表示上界,小於等於,貼緊未知。

符號\(o\),讀音也是毆,小於,不貼緊。

符號\(\Omega\),讀音偶眯嘎,表示下界,大於等於,貼緊未知。

符號\(\omega\),讀音也是偶眯嘎,表示下界,大於,不貼緊。

上面的“貼緊”是我根據tight翻譯過來的(不是很准確啊),大概就是是否嚴格等於的意思吧。

意思就是\(\Theta\)是平均時間復雜度,\(O\)是最壞情況下的復雜度,\(\Omega\)是最好情況下的復雜度。

假設我們有遞推關系式:
\(\begin{aligned}T(n)=aT\left(\frac n b\right)+f(n)\end{aligned}\)

其中,\(n\)為問題的規模、\(a\)為遞推下子問題的數量,\(\begin{aligned}\frac n b\end{aligned}\)為每個子問題的規模,\(f(n)\)為遞推后做的額外的計算工作。

1.假設存在常數\(\epsilon>0\),使得\(f(n)=O(n^{\log_b(a)-\epsilon})\),則\(T(n)=\Theta(n^{log_ba})\)

具體意思是f(n)的上界是n的冪次,且\(log_b(a)\)比這個冪次要大,則時間復雜度為這個n的\(log_b(a)\)次。

例子:二叉樹的遍歷。\(\begin{aligned}T(n)=2T\left(\frac n 2\right)+\Theta(1)\end{aligned}\)。其中\(a=2\)\(b=2\)\(f(n)=1\),此時\(\epsilon=1\)\(T(n)=\Theta(n)\)

2.假設存在常數\(k\ge0\),使得\(f(n)=\Theta (n^{\log _{b}a}\log ^{k}n)\),則\(T(n)=\Theta(n^{log_ba}\log^{k+1}n)\)

具體意思是f(n)是n的\(log_b(a)\)次,再乘以一個log,則復雜度是f(n)的復雜度再乘以一個log。

例子:歸並排序。\(\begin{aligned}T(n)=2T\left(\frac n 2\right)+\Theta(n)\end{aligned}\)。其中\(a=2\)\(b=2\)\(f(n)=n\),此時\(k=0\)\(T(n)=\Theta(n\log_2n)\)

例子:二分搜索(折半搜索)。\(\begin{aligned}T(n)=T\left({\frac {n}{2}}\right)+\Theta (1)\end{aligned}\),其中\(a=1\)\(b=2\)\(f(n)=1\),此時\(k=0\),則\(T(n)=\Theta(log_2n)\)

3.假設存在常數\(\epsilon >0\) ,有\(f(n)=\Omega (n^{\log _{b}(a)+\epsilon })\),同時存在常數\(c<1\)以及充分大的\(n\)滿足 \(af\left({\frac {n}{b}}\right)\leq cf(n)\)那么 \(T\left(n\right)=\Theta \left(f\left(n\right)\right)\)

這個感覺沒啥用啊。。。

【例題】

【NOIP2017初賽】若某算法的計算時間表示為遞推關系式:

\(\begin{aligned}T(N)=2T\left(\frac N 2\right)+N\log N\end{aligned}\)\(T(1)=1\),則該算法的時間復雜度為______________________________________________________。

\(\rm A .O(N)\ B .O(N\log_2N)\ C.O(N\log_2^2N)\ D.O(N^2)\)

【解析】套用情況2中的k=1的情況,則\(T(n)=\Theta(N\log_2^2N)\),選C

【NOIP2016初賽】若某算法的計算時間表示為遞推關系式:

\(\begin{aligned}T(N)=2T\left(\frac N 4\right)+\sqrt N\end{aligned}\)\(T(1)=1\),則該算法的時間復雜度為______________________________________________________。

\(\rm A .O(N)\ B .O(\sqrt N)\ C.O(\sqrt N\log_2N)\ D.O(N^2)\)

【解析】套用情況2中的k=0的情況,則\(T(n)=\Theta(sqrt(N)\log_2N)​\),選C

【NOIP2015初賽】某算法的計算時間表示為遞推關系式:

\(T(N)=T(N-1)+N\)\(T(0)=1\)。則該算法的時間復雜度為______________________________________________________。

\(\rm A .O(\log_2^2N)\ B .O(N\log_2 N)\ C.O(N)\ D.O(N^2)\)

【解析】難道這個就要用主定理了?容易推導出\(\begin{aligned}T(N)=T(0)+1+...+n=1+\frac{N*(N+1)}{2}\end{aligned}\),則時間復雜度為\(O(N^2)\),選D

【總結】

NOIP初賽考察了3年的時間復雜度分析,其中兩年用到了主定理。其實你不會主定理也沒事兒,只要能找幾個特殊值帶入,並根據符號\(O\)的意義排除選項即可。


免責聲明!

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



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