漸進符號詳解


1.漸近緊確界記號: Θ(big-theta)

  假設算法A的運行時間表達式T1(n)為:T 1 ( n ) = 30 n^ 4 + 20 n ^3 + 40 n^ 2 + 46 n + 100
  假設算法B的運行時間表達式T2(n)為:T 2 ( n ) = 1000 n 3 + 50 n 2 + 78 n + 10
當問題規模足夠大的時候,例如n=100萬,算法的運行時間將主要取決於時間表達式的第一項,其它項的執行時間只有它的幾十萬分之一,可以忽略不計。第一項的常數系數,隨着n的增大,對算法的執行時間也變得不重要了。
  於是,算法A的運行時間可以記為:T 1 ( n ) ≈ n^ 4,記為T 1 ( n ) = Θ ( n ^4 );算法B的運行時間可以記為:T2(n)n^3,記為T 2 ( n ) = Θ ( n ^3 )

  由下圖中左側f(n)=Θ(g(n))圖可以看出,對所有n>n0時,函數f(n)乘一個常量因子可等於g(n),我們稱g(n)是f(n)的一個 漸近緊確界 。Θ記號在五個記號中,要求是最嚴格的,因為g(n)即可以表示上界也可以表示下界。

在這里插入圖片描述

  需要注意的是:Θ(g(n))的定義要求每個成員f(n)Θ(g(n))均 漸近非負,即當n足夠大時,f(n)非負。 漸近正函數 就是對所有足夠大的n均為正的函數。

2.漸近上界記號:O(big-oh)

定義:設f(n)g(n)是定義域為自然數集N上的函數。若存在正數cn0,使得對一切nn0都有0f(n)cg(n)成立,則稱f(n)的漸進的上界是g(n),記作f(n)=O(g(n))。通俗的說n滿足一定條件范圍內,函數f(n)的階不高於函數g(n)。

  根據符號O的定義,用它評估算法的復雜度得到的只是問題規模充分大時的一個上界。這個上界的階越低,評估越精確,越有價值。

幾種常見的復雜度關系

符號用法測試:素數測試

int isprime(int n) {
    for(int i=2; i<=(int)sqrt(n); i++) {
        if(n%i==0) { 
            return0;
        }
    }
    return1;
}
View Code

在上面這個素數測試的例子中,基本運算是整除;時間復雜度T ( n ) = O ( n ^1 /2 ) 是正確的。當被測的數n為偶數時,基本運算一次也沒執行,所以T ( n ) = Θ ( n ^1/ 2 ) 是錯誤的,因為沒有辦法證明T(n)的下界是Ω ( n^ 1 /2 )


3.漸近下界記號:Ω(big-omege)

  根據符號Ω的定義,用它評估算法的復雜度得到的只是問題規模充分大時的一個下界。這個下界的階越高,評估越精確,越有價值。

顯然,Ω(n^2)作為下界更為精確。

4.非漸近緊確上界:o(小-oh)

定義1:設f(n)和g(n)是定義域為自然數集N上的函數。若對於任意正數c,都存在n_0,使得對一切n≥n_0都有0≤f(n)

O記號提供的漸近上界可能是漸近緊確的,也可能是非緊確的。(如:2 n ^2 = O ( n ^2 )是漸近緊確的,而2n=O(n^2)是非緊確上界。)
例子:f(n)=n^2+n,則f ( n ) = o ( n ^3 ).


5.非漸近緊確下界:ω(小-omege)

定義1:設f(n)和g(n)是定義域為自然數集N上的函數。若對於任意正數c,都存在n_0,使得對一切n≥n_0都有0≤cg(n)

ω記號與Ω的關系類似於oO記號的關系。我們用ω表示一個非漸近緊確的下界。
例子:f(n)=n^2+n,則f(n)=ω(n)是正確的。f(n)=ω(n^2)則是錯誤的,f(n)=Ω(n^2)是正確的。


6.漸近記號Θ、Ο、o、Ω、ω關系

記號 含義 通俗理解
(1)Θ(西塔) 緊確界。 相當於"="
(2)O (大歐) 上界。 相當於"<="
(3)o(小歐) 非緊的上界。 相當於"<"
(4)Ω(大歐米伽) 下界。 相當於">="
(5)ω(小歐米伽) 非緊的下界。 相當於">"

在這里插入圖片描述


7.習題練習

8.參考資料

1.算法導論  殷建平 譯   機械工業出版社

2.計算機算法設計與分析習題解答 第二版  王曉東


免責聲明!

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



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