我們在研究演算法效能的時候,往往會在意演算法的執行時間,而執行時間又與演算法輸入的規模相關,對於乙個演算法,我們可以求出執行時間和輸入規模的函式,當輸入規模足夠大時,站在極限的角度看,就可以求出執行時間如何隨著輸入規模的無限增長而增長。
這種令輸入規模無限大 而研究執行時間增長情況的做法,就是在研究演算法的漸近效率。
幾種符號的直觀理解:
θ,o,ω的影象表示
θ(漸近緊確界):若 f ( n ) = θ ( g ( n )),則存在 c1>0 ,c2 >0,s.t. n→∞時, f ( n )夾在 c1 g ( n )和 c2 g ( n )之間。即g(n)既是f(n)的漸近上界又是漸近下界,可假裝理解為」f(n) = g(n)「
且當 f ( n ) = θ ( g ( n ))時,有:
o (漸近上界):若f ( n ) = o ( g ( n )),則存在c>0, s.t. n→∞時,f(n)在cg(n)下面。即g(n)是f(n)的漸近上界,可假裝理解為「f(n) <= g(n)」。
o (非漸近緊確上界):與o的區別是,任意c>0, 都使f(n)在cg(n)下面。是非緊的上界,可假裝理解為「f(n) < g(n)」。
且當f ( n ) = o ( g ( n ))時,有:
ω (漸近上界):若f ( n ) = ω ( g ( n )),則存在c>0, s.t. n→∞時,f(n)在cg(n)上面。即g(n)是f(n)的漸近下界,可假裝理解為「f(n) >= g(n)」。
ω (非漸近緊確下界):與ω的區別是,任意c>0, 都使f(n)在cg(n)上面。是非緊的下界,可假裝理解為「f(n) > g(n)」。
且當f ( n ) = ω ( g ( n ))時,有:
基本函式類:
至少指數級:
多項式級:
對數多項式級:
多項式函式《指數函式:
對數函式《冪函式:
對數函式:
(1)(換底)
(2)(α>0)
(3)(即,形如指數函式的冪是log級,則可化成多項式級)
指數函式與階乘:
stirling公式:
大話資料結構 2 8 函式的漸近增長
我們先來做乙個測試,判斷以下兩個演算法a和b哪個更好?假設兩個演算法的輸入規模都是n,演算法a要做2n 3次操作,你可以這麼理解 先執行n次的迴圈,執行完成後再有乙個n次的迴圈,最後有3次運算。演算法b要做3n 1次操作,理解上,你覺得它們哪乙個更快些呢?當n 1時,演算法a1效率不如演算法b1,當...
啟用函式的比較
在深度網路中啟用函式的作用 引入非線性。提公升網路的表達能力 啟用函式的對比 sigmoid sigmoid的計算量大 相比relu 反向傳播容易出現梯度消失,輸出均大於0,使得輸出均值不為0,出現偏移現象。tanh 雙曲正切計算量更大,依然有軟飽和性 relu 收斂速度比sigmoid和tanh快...
algorithms中計算時間的漸近表示
1.大寫 符號 大寫 符號給出了函式f的乙個上限。定義 大寫 符號 f n g n 當且僅當存在正的常數c和n0,使得對於所有的n n0,有 f n c g n 上述定義表明,函式f至多是函式g的c倍,除非n小於n0。因此,對於足夠大的n 如n n0 g 是 f 的乙個上限 不考慮常數因子 c 在為...