第一次在《算法導論》中看到這三種漸進記法的符號,當時對此一竅不通,所以也就沒有注意它們,直接把他們忽略了,知道學習算法的時候,才知道當初的做法有多傻,因為一個算法的好壞以及復雜度,可以用它們來表示。現在我學習過程當中用的最多的是O(g(n)),大概是老師認為我們還不具有算法設計分析與優化的能力吧。
先聲明一下:本文不會對算法的時間復雜度和空間復雜度進行討論,大家可以查看別的博客。^_^
好了,首先介紹一下這三個符號吧。
符號 | 含義 |
O | 漸進小於或等於 |
Ω | 漸進大於或等於 |
Θ | 漸進等於 |
其實大家一看到本文的標題,就應該猜到這幾個符號的用法與高等數學有關,因為“漸進”兩個字,比如在高等數學中經常聽到漸進線之說。
請看以下兩個舉例:
如果a=x^2+x,b=x^2+5,則稱a與b是相同等級的,且a漸進等於b;
如果a=x^2+x,b=x^3+5,則稱a與b不是相同等級的,且a漸進小於或等於b,b漸進大於或等於a。
其中判斷a和b是不是兩個相同等級的,是依靠比較兩個式子中自變量最高的次數,a=x^2+x中自變量最高次數為2,b=x^3+5中自變量最高次數為3。
如果兩個自變量的最高次數相同,則說明它們是相同等級的,即他們倆漸進相等,如果其中一個的次數比另一個高,則稱次數低的一個式子漸進小於或等於次數高的式子,次數高的一個式子漸進大於或等於次數低的式子。注意不要關注他們的系數誰大誰小。
現在用符號表示語言:
a=x^2+x,b=x^2+5;====>a=Θ(b);
a=x^2+x,b=x^3+5;====>a=O(b)或者b=Ω(a);
其實,這個只要明白比較的是什么就能理解三個符號的含義及用法了。
簡記為:O表示上界,Ω表示下界,Θ表示平行。