1. 程式人生 > >演算法分析:大O符號/大Ω符號/大Θ符號/小o符號/小w符號

演算法分析:大O符號/大Ω符號/大Θ符號/小o符號/小w符號

Θ符號大O符號大Ω符號的結合。即:f(\nu)=\Theta[g(\nu)]\!\begin{cases}f(\nu)=\Omicron[g(\nu)]\\f(\nu)=\Omega[g(\nu)]\end{cases}

這一符號首先由高德納於1970年提出[1]

注意

大Θ符號經常被誤用;有的作者可能會使用大O符號表達大Θ符號的含義。因此在看到大O符號時應首先確定其是否為誤用。

我發現讀完維基百科還是有一些不清晰的地方,或者不好理解的地方,再加上這些。

設函式f ( n )代表某一演算法在輸入大小為n的情況下的工作量(效率),則在n趨向很大的時候,我們將f (n)與另一行為已知的函式g(n)進行比較:

1)如果0,則稱f (n)在數量級上嚴格小於g(n),記為f (n)=o( g(n))。

2)如果,則稱f (n)在數量級上嚴格大於g(n),記為f (n)=w( g(n))。

3)如果c,這裡c為非0常數,則稱f (n)在數量級上等於g(n),即f (n)和g(n)是同一個數量級的函式,記為:f (n)=Θ( g(n))。

4)如果f (n)在數量級上小於或等於g(n),則記為f (n)=O( g(n))。

5)如果f(n)在數量級上大於或等於g(n),則記為f (n)=Ω( g(n))。

這裡我們假定f (n),g (n)是非負單調的,且極限存在。如果這個極限不存在,則無法對f (n)和g (n)進行比較。在進行此種計算時,一個經常用到的技術是洛必達(L'Hopital)法則。該法則由17世紀法國數學家Guillaume de L'Hopital發現(也有人認為是瑞士數學家Johann Bernoulli發現的)。該法則聲稱,兩個函式的比率極限等於兩個函式的導數的比率極限,這裡當然假定兩個函式的導數比率的極限存在,即有:


 

有了這個定義,就可以對素性測試的兩個演算法進行比較了。