1. 定義
大O符号(Big O notation)是用于描述函數漸近行為的數學符号。更确切地說,它是用另一個(通常更簡單的)函數來描述一個函數數量級的漸近上界。
2. 說明
f(n) = 2n^2 + 3n + 1
f(n) = O(n^2)
or
f(n) ∈ O(n^2)
為什麼可以這麼去描述?
lim( f(n) / n^2) = a ( n--> 0, a為常數)
n^2 是f(n)的最高階,f(n)的特性由最高階決定。
為什麼不是O(2*n^2)?
O(g(n)):lim( f(n) / g(n)) = a ( n--> 0, a為常數)
當n趨近于無窮大時,f(n) / g(n)為一個常數,那麼O(g(n))表示f(n)的數量級。
注:關于O(n)更加具體的數學描述請參見:
Big O notation
3. 常用的數量級
符号 | 名稱 |
---|---|
常數(階,下同) | |
疊代對數 | |
對數 | |
多對數 | |
線性,次線性 | |
線性對數,或對數線性、拟線性、超線性 | |
平方 | |
多項式,有時叫作“代數”(階) | |
指數,有時叫作“幾何”(階) | |
階乘,有時叫做“組合”(階) |
4. 算法的上限、下限
符号 | 定義 |
---|---|
漸近上限 | |
asymptotically negligible ( ) | |
漸近下限 (當且僅當 ) | |
asymptotically dominant (當且僅當 ) | |
asymptotically tight bound (當且僅當 且 ) |
5. 參考
大O符号
Big O notation