演算法複雜度的漸近表示法(詳細版)

2021-06-28 01:55:41 字數 1207 閱讀 3165

**:

乙個演算法的時間複雜度,指演算法執行的時間。

假設資料輸入規模是n,演算法的複雜度可以表示為f(n)的函式

一。大o記號

假設f(n)和g(n)的定義域是非負整數,存在兩個正整數c和n0,使得n>n0的時候,f(n)

≤c*g(n),則f(n)=o(g(n))。可見o(g(n))可以表示演算法執行時間的上界。o(g(n))表示的函式集合的函式是階數不超過g(n)的函式。

例如:f(n)=2*n+2=o(n)

證明:當n>3的時候,2*n +2<3n,所以可選n0=3,c=3,則n>n0的時候,f(n)

現在再證明f(n)=2*n+2=o(n^2)

證明:當n>2的時候,2*n+2<2*n^2,所以可選n0=2,c=2,則n>n0的時候,f(n)

同理可證f(n)=o(n^a),a>1 二。

ω記號 ω

記號與大o記號相反,他可以表示演算法執行時間的下界。

ω(g(n))表示的函式集合的函式是所有階數超過g(n)的函式。

例如:f(n)=2*n^2+3*n+2=

ω(n^2)

證明:當n>4的時候,2*n^2+3*n+2>n^2,

所以可選n0=4,c=1,則n>n0的時候,f(n)>c*(n^2),所以f(n)=

ω(n^2)。

同理可證f(n)=

ω(n),f(n)=

ω(1)

三。θ記號

θ記號介於大o記號和

ω記號之間。他表示,存在正常數c1,c2,n0,當n>n0的時候,c1*g(n)≤f(n)≤c2*g(n),則f(n)=

θ(g(n))。他表示所有階數與g(n)相同的函式集合。

四。小o記號

f(n)=o(g(n))當且僅當f(n)=o(g(n))且f(n)≠ω

(g(n))。也就是說小o記號可以表示時間複雜度的上界,但是一定不等於下界。

五。例子

假設f(n)=2n^2+3n+5,

則f(n)=o(n^2)或者f(n) = o(n^3)或者f(n)=o(n^4)或者……

f(n)=

ω(n^2)或者f(n)=

ω(n)或者f(n)=

ω(1)

f(n)=

θ(n^2)

f(n) = o(n^3)或者f(n)=o(n^4)或者f(n)=o(n^5)或者……

注:n^2表示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 ...

演算法的複雜度的漸近表示方法

乙個演算法的時間複雜度,指演算法執行的時間。假設資料輸入規模是n,演算法的複雜度可以表示為f n 的函式 一。大o記號 假設f n 和g n 的定義域是非負整數,存在兩個正整數c和n0,使得n n0的時候,f n 二。記號 記號與大o記號相反,他可以表示演算法執行時間的下界。g n 表示的函式集合的...

大O表示法 時間複雜度

引入原因 用另乙個 通常更簡單的 函式來描述乙個函式數量級的漸近上界。定義 如果乙個問題的規模是n,解這一問題的某一演算法所需要的時間為t n 它是n的某一函式。t n 稱為這一演算法的 時間複雜度 某個演算法的複雜度到達了這個問題複雜度的下界,那就稱這樣的演算法是最佳演算法 決定演算法複雜度的是執...