各種複雜度函式的表示方法大致可按表達的精確程度分為下面的三個等級: (何種情況下用相應的複雜度函式)
1.解析表示式。 用解析表示式刻畫複雜度函式是最精確的表達方式。例如 ·求n元中之最大元演算法maxelement的複雜度為 t(n) = w(n) = a(n) = n – 1 。 ·順序搜尋演算法的最壞情形時間複雜度為 w(n) = n ; 在指定分布條件及 q = 1情形下的期望時間複雜度為 a(n) = ( n + 1)/2 。
2.階(order)表示式。 為了簡化演算法複雜度分析的方法,往往只需計算當問題規模較大時演算法的漸進複雜度的階。
定義1.1 稱(複雜度)函式t(n)是o(f(n))的,即 t(n) = o(f(n)),如果存在常數c > 0與n0 ,當n > n0 時有t(n)≤cf(n) 。例如: t1(n) = (n + 1) / 2 = o(n) , t2(n) = 3n2 + 4n + 5 = o(n2)
定義1.2 稱(複雜度)函式t(n)是ω(f(n))的,即 t(n) = ω(f(n)),如果存在常數c > 0與n0 ,當n > n0 時有t(n) ≥cf(n) 。 例如: t1(n) = (n + 1) / 2 = ω(n) , t2(n) = 3n2 + 4n + 5 = ω(n2)
定義1.3 稱(複雜度)函式t(n)是θ(f(n))的, 即t(n) = θ(f(n)),如果存在常數c1, c2 > 0與n0 ,當n > n0 時有c1f(n)≥t(n)≥c2f(n) 。 例如: t1(n) = (n + 1) / 2 = θ(n) , t2(n) = 3n2 + 4n + 5 = θ(n2) 顯然,如果t(n) = o(f(n))且t(n) = ω(f(n)), 則t(n) = θ(f(n)) 。
3.多項式函式和指數函式。 多項式函式指t(n)為自變數n的多項式函式,例如t1(n)=n/2+1/2,t2(n)=3n2+4n+5等。 而指數函式如t3(n) = 2n + 5,t4(n) = 3n/2 – 8等等,自變數n出現在指數部分。這兩類函式都是單增函式,但指數函式的增長速度要比多項式函式快得多。三種複雜度指標由細至粗, 對於乙個新問題首先可用最後一種(是否為多項式)
演算法 複雜度的漸近表示
o f n t n o f n 表示存在常數 c 0 n 0 0 使得當 n n 0 時,總有 t n cf n omega f n t n omega f n 表示存在常數 c 0 n 0 0 使得當 n n 0 時,總有 t n cf n theta f n theta f n 表示同時有 t ...
大O演算法複雜度表示
序言 演算法的時間複雜度和空間複雜度都是用 大o表示法 來表示的。其中o是個常量。常見的排序演算法的時間複雜度 氣泡排序 插入排序 希爾排序 選擇排序的時間複雜度是o n 2 快速排序的時間複雜度是o n log n 空間複雜度 氣泡排序 插入排序 希爾排序 選擇排序的空間複雜度是o 1 快速排序的...
複雜度分析 時間複雜度 空間複雜度
執行效率是演算法的乙個重要的考量指標,演算法的執行效率用時間 空間複雜度來衡量。今天我們來學習一下複雜度的分析。通常我們可以通過執行程式來獲得演算法的真正的執行時間,這種方法我們可以稱為事後統計法,但這種方法得到的是具體的資料,測試結果很依賴測試環境,而且受資料規模影像最大。因此,我們需要乙個不需要...