算法分析和設計_漸進符號的表示

小聲音算法

big-O notation and its relatives-concepts that belong in the vocabulary of every serious programmer and computer scientist.編程

爲何要研究它編程語言

 

漸進表示法是算法分析裏的基本術語,當聽到別人說某段代碼以"n的大O時間"運行,而另外一段代碼以"n平方的大O時間 運行",你須要知道背後的含義。3d

 

當某個問題能夠用不一樣的算法解決時,須要用一個東西進行比較哪一個算法好。漸進表示算法就能夠幫助區分。blog

 

High Levelci

 

一句話歸納漸進算法,就是: 忽略常數因子和低階項。數學

漸進法還有更多的含義,可是10年後能記得的就是上面這個歸納,它很精妙。it

 

爲何要忽略常數因子?io

 

常數因子通常很依賴於環境的細節,咱們的算法分析是不想固定某種特定的編程語言,計算機體系結構,因此忽略常數因子是合理的。class

 

爲何要忽略低階項?

 

當咱們的輸入很大的時候,低階項的做用很微小,而咱們算法關注的就是大規模的輸入。

 

大O符號

 

標準的數學公式以下定義:

 

T(n)=O(f(n))當且僅當T(n)最後的上界是f(n)的一個常數積。

因此只須要找的到c和n0,使得當n>=n0的時候不等式知足,就表示T(n)=O(f(n))。

 

用圖來表示就是

這裏的n0就是指'最後的',3就是指'常數倍',當n>n0的時候,知足T(n)<=3f(n),因此T(n)=O(f(n))。

 


大Omega符號
它的數學表示以下:


它的定義和大O的定義是平行的,當且僅當T(n)最後的下界是f(n)的一個常數積。用圖來表示就是:

當n>=n0時,T(n)>=1/4f(n),因此


大theta符號

能夠把它類比爲"等於",同時知足上面兩個條件,即:


至關於T(n)最後被夾在了f(n)的兩個不一樣的常數積之間。數學定義以下:


參考書:Algorithms Illuminated

 

 

相關文章
相關標籤/搜索