02算法-漸近符號,遞歸及其解法

算法 漸近符號,遞歸和解法

本書是基於漸近符號,遞歸及其解法第二節課的總結。主要分析了三種漸近符號看,以及三種解遞歸的方法

漸近符號

Ω(n2)\Omega(n^2)表示當n足夠大的時候,運行時間一定小於n2n^2,是下界
O(n2)\Omicron(n^2)表示小於當n足夠大的時候,運行時間一定小於n2n^2,是上界
Θ(n2)\Theta(n^2)表示一種緊約束,運行時間與n2n^2成正比,當且僅當f(n)=O(n2)andf(n)=Ω(n2)f(n) = \Omicron(n^2) and f(n) = \Omega(n^2)
還有ο\omicron 表示小於, ω\omega表示大於

遞歸的三種解法

其中代換法很蠢,我們基本用不到,當我們分析的時候主要使用遞歸樹主方法,主方法還可以倒推來設計算法

代換法

有這樣一個遞歸的式子:T(n)=4T(n2)+nT(n) = 4T(\frac{n}{2})+n
Two step:guess,assume and verify
guess: T(n)=O(n3)T(n) = \Omicron(n^3)
assume and verify: replace of T(n)T(n) and T(n/2)T(n/2) with O(n3)\Omicron(n^3) and verify whether the equation is satisfied
接下來會使用其它的假設來尋找更加接近的結果

遞歸樹

recursive tree 是最簡單和直接的方法
有這樣一個遞歸的式子:T(n)=T(n/4)+T(n/2)+n2T(n) = T(n/4) + T(n/2) + n^2
next I will use left represent left child of the root and right…
the root is n2n^2 the left is T(n/4)T(n/4) , the right is T(n/2)T(n/2)
then we will replace the leaf T(n/4) with T(n/16)+T(n/8)+n/42T(n/16) + T(n/8) + {n/4}^2 and the same as &T(T/2)&
Finally we will get a recursive tree like this:
recursive tree
我們可以由級數的公式求出最終的結果

主方法

主方法有很多的限制,首先它是針對形如這樣的式子的解法T(n)=aT(n/b)+f(n)T(n) = aT(n/b) + f(n) and f(n)>0  when   n>n0f(n) > 0\ \ when\ \ \ n > n_0
有如下的情況:
case1:
for f(n)=O(nlogbaε)f(n) = \Omicron(n^{\log_ba-\varepsilon}) for somek>=0for\ some\quad k >= 0
T(n)=Θ(nlogba)T(n) = \Theta(n^{\log_ba})
case2:
f(n)=Θ(nlogba(log2n)k)f(n) = \Theta(n^{\log_ba}(\log_2n)^k) for somek>=0for\ some\quad k >= 0
T(n)=Θ(nlogba(log2n)k+1)T(n) = \Theta(n^{\log_ba}(\log_2n)^{k+1})
case3:
f(n)=Ω(nlogbaε)f(n) = \Omega(n^{\log_ba-\varepsilon}) for somek>=0for\ some\quad k >= 0 and  af(n/b)<(1ε)f(n)\ af(n/b) < (1-\varepsilon)f(n)
T(n)=Θ(f(n))T(n) = \Theta(f(n))
一些應用會在下一節給出

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章