算法之函數的增長

雖然有時我們能夠 確定一個算法的精確運行時間,但是通常並不值得花力氣來計算它以獲得多餘的精度,對於足夠大的輸入,精確運行時間中倍增常量 和低階項被輸入 規模本身的影響所支配。

漸近記號

用來描述算法漸近運行時間的記號根據 定義域爲自然數集N={0,1,2,……}的函數來定義。這樣的記號對於描述最壞情況運行時間函數 T(N)是方便的。因爲該函數通常只定義 在整數輸入規模上。

漸近記號、函數和運行時間

漸近記號實際上應用於函數 。插入排序的最壞情況運行時間刻畫爲an方+bn+c,其中a、b、c是常量,通過插入排序的運行時間寫成θ(n方)。

即使我們使用漸近記號來刻畫算法的運行時間,我們也需要了解意指哪個運行時間,有時我們會對最壞運行時間感興趣。

下面我們介紹 一下適合刻畫任何輸入的運行時間的漸近記號。

θ記號

插入排序的最壞運行時間爲T(n)=θ(n方)

這個記號意指:對於一個給定的函數g(n),用θ(g(n))來表示以下函數的集合

θ(g(n))=
{f(n):存在正常量C1,C2和n0,使得對所有n>=n0,有0<=c1g(n)<=f(n)<=C2g(n)}

若存在正常量c1和c2 使得對於足夠大的n,函數f(n)能“夾入”c1g(n)和c2g(n)之間,則f(n)屬於集合θ(g(n))。作爲替代我們通常記f(n)=θ(g(n))以表達相同的概念

同理
O記號是函數 給出一個常量因子內的上界。如果存在常量n0和c,使得在n0及其右邊,f(n)的值總小於或等於cg(n)那麼記f(n)=O(g(n)),也就是f(n)在n>=n0時,永遠在cg(n)的曲線下面。

Ω記號是f(n)曲線在n>=n0時,永遠在cg(n)的上面

1.θ記號漸近地給出一個函數的上界和下界
2.當只有一個漸近 上界時,使用O記號
3.當只有一個漸近下界時,使用Ω記號

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