算法分析的數學基礎
使用以下四個定義:
- 如果存在正常數c與n0,使得當N≥n0時,T(N) ≤ cf(N),則記爲T(N) = O(f(N)). 也就是大O表示法
- 如果存在正常數c與n0,使得當N≥n0時,T(N) ≥ cf(N),則記爲T(N) = Ω(f(N)) .也就是大Ω表示法
- T(N) = Θ(h(N)) 當且僅當 T(N) = O(h(N)) ,且 T(N) = Ω(h(N)) .
- 如果 T(N) = O(p(N)) 且T(N) ≠ Θ(p(N)) , 則 T(N) = o(p(N)) .
總結:
通俗的說,這幾種表示法可以理解如下:
- 大O表示法: f(x) = O(g(x)) 表示的含義是f(x)以g(x)爲上界
- 小o表示法: f(x) = o(g(x)) 表示的含義是f(x)趨近於g(x)
- Ω表示法:f(x) = Ω(g(x)) 表示的含義是f(x)以g(x)爲下界
- Θ表示法:f(x) = Θ(g(x)) 表示的含義是g(x)是f(x)的確界
算法的常見時間複雜度
由圖中的時間複雜度增長趨勢可以看出:
- 最優的算法複雜度爲
logN
- 當 N 的值較小時,
NlogN < N
, 當 N 的值較大時,NlogN > N
- 指數次方與階乘的複雜度非常高,一般不能使用這些算法,二次方或三次方的時間複雜度在N值較大是也是相當高的,在設計算法的時候必須要注意這一點