計算機算法分析之漸進記號

前言

在學習計算機算法時,知道插入排序的時間複雜度是O(n2),那O記號到底是什麼意思呢?本文主要介紹幾個算法分析時用到的記號。

大O記號

定義:O(g(n)) = { f(n) : 存在正常數c和n0 ,使對所有的n >= n0,都有 0 <= f(n) <= cg(n) }。大O記號給出函數的漸進上界。

clip_image002[10], 則可以表示爲 f(n) = O(n2)。證明:

要使得 0 <= f(n) <= cg(n)     

clip_image002[12]

clip_image004

clip_image006

存在c = 9/2 ,n0 = 1,使得對所有的n >= n0都有 0 <= f(n) <= cg(n)。

f(n)不高於g(n)的階

O(g(n) 以及後面講到的記號表示的都是集合,而f(n) = O(n2)的實際意義 是 f(n) ∈ O(n2)。

假設有 clip_image002[14] , clip_image002[10]

則 g(n) = O(n2) , f(n) = O(n2)

clip_image002[21]

大Ω記號

定義:Ω(g(n)) = { f(n) : 存在正常數c和n0 ,使對所有的n >= n0,都有 0 <= cg(n) <= f(n) }。大Ω記號給出函數的漸進下界。

f(n)不低於g(n)的階

假設有 clip_image002[14] ,  clip_image002[10]

則 g(n) = Ω(n) , f(n) = Ω(n)

clip_image002[23]

大Θ記號

定義:Θ(g(n)) = { f(n) : 存在正常數c1和c2和n0 ,使對所有的n >= n0,都有 0 <= c1g(n) <= f(n) <= c2g(n) }。大Θ記號給出函數的漸進確界。

f(n)與g(n)的階數相同

假設有 clip_image002[14] , clip_image002[10]

則 g(n) = Θ(n) , f(n) =Θ(n2)

clip_image002[27]

小O記號

定義:o(g(n)) = { f(n) : 對任意正常數c,存在n0 ,使對所有的n >= n0,都有 0 <= f(n) <= cg(n) }。小o記號給出函數的非漸進緊確的上界。

f(n)小於g(n)的階

假設有 clip_image002[14] , clip_image002[10]

則 g(n) = o(n2) , f(n) clip_image002[33]O(n2)

clip_image002[35]

clip_image002[50]記號

定義:clip_image002[52](g(n)) = { f(n) : 對任意正常數c,存在n0 ,使對所有的n >= n0,都有 0 <= cg(n) <= f(n) }。小clip_image002[54]記號給出函數的非漸進緊確的下界。

f(n)高於g(n)的階

假設有 clip_image002[14] , clip_image002[10]

則 g(n) clip_image002[33] clip_image002[58](n) , f(n) = clip_image002[56](n)

clip_image002[40]

總結

並不是所有的函數都可以漸進比較的,如果clip_image002[46] 的極限值不存在(不等於0,常數以及無窮大)。比如

clip_image002[48]的極限就不存在而且不等於無窮大。

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