演算法的漸近分析,指的是定義它的運行時性能的數學基礎/幀。利用漸近分析,我們可以很好地得出一種演算法結論:最好的情況,平均情況和最壞的情況。
漸近分析輸入的約束,即如果沒有輸入到演算法可以斷定在一個恒定的時間工作。而非 “輸入” 的其他因素都被認為恒量。
漸近分析是指計算中的數學單元的任何操作的運行時間。例如,一種操作的運行時間被計算為 f(n),以及用於另一操作它計算為 g(n2)。這意味著第一操作運行時間線性增加而增加,n 和運行第二操作時間會在 n 增加時成倍增加。同樣地,如果 n 足夠小,那麼兩個操作的運行時間將幾乎相同。
通常情況下,由演算法所需要的時間在三種類型 −
-
最好情況 − 程式執行所需的最短時間。
-
平均情況 − 程式執行所需的平均時間。
-
最壞情況 − 程式執行所需的最長時間。
漸近表示法
下麵是常用的,在計算運行時間的演算法的複雜性使用漸近符號。
-
Ο 標注
-
Ω 標注
-
θ 標注
大標注,Ο
Ο(n)是表達的上限的演算法的運行時間的正式方法。它測量的最壞情況下的時間複雜度和時間的演算法可能才能完成最長時間。 For example, for a function例如,對於一個函數f(n)
Ο(f(n)) = { g(n) : there exists c > 0 and n0 such that g(n) ≤ c.f(n) for all n > n0. }
歐米茄標注, Ω
Ω(n)是表達的下界的演算法的運行時間的正式方法。它衡量最好情況下的時間複雜度和時間的演算法可能才能完成最佳用量。
例如,對於一個函數 f(n)
Ω(f(n)) ≥ { g(n) : there exists c > 0 and n0 such that g(n) ≤ c.f(n) for all n > n0. }
西塔標注, θ
θ(n)表達正式的方式,既下界和上界的演算法的運行時間。它被表示為如下。
θ(f(n)) = { g(n) if and only if g(n) = Ο(f(n)) and g(n) = Ω(f(n)) for all n > n0. }
常量 | − | Ο(1) |
對數 | − | Ο(log n) |
線性 | − | Ο(n) |
n log n | − | Ο(n log n) |
二次 | − | Ο(n2) |
立方 | − | Ο(n3) |
多項式 | − | nΟ(1) |
指數 | − | 2Ο(n) |