一 問題計算複雜度的界定
二 算法及時間複雜度
1. 基本概念
有限條指令的序列--求解問題的一系列步驟
算法A求解問題P:
把問題P的任何實例作爲算法A的輸入,每步計算是確定性的。
A能夠在有限步停機並輸出該實例的正確的解
基本運算與輸入規模
算法時間複雜度:針對指定基本運算,計算算法所做運行次數
基本運算有:比較,加法,乘法,置指針, 交換等
2. 算法的兩種時間複雜度
平均情況下的複雜度A(n)
設S是規模爲n的實例集
實例IϵS的概率是PI
算法對實例I所執行的基本運算次數是tI
A(n)=𝐼ϵ𝑆PI ∑_IϵS▒"PI " tI
最壞情況下的複雜度W(n)
3. 算法的僞碼錶示
先寫算法 後面函數名 然後輸入 輸出 之後僞代碼
用僞碼錶示算法
僞碼不是程序代碼,只是給出關鍵步驟
僞碼關鍵字
僞碼中允許過程調用
4. 函數的漸進的界
大O符號 上界複雜度
設f和g是定義域爲自然集的N上的函數,若存在正數c和n0,使得對一切n > n0有
0 <= f(n) <= cg(n)
成立, 則稱f(n)的漸進上界是g(n) 記爲 f(n) = O(g(n))
大Ω符號 下界複雜度
定義:設f和g是定義域爲自然數集N上的函數.若存在正數c和n0,使得對一切n>n0有,
0≤cg(n) ≤f(n)
成立,則稱f(n)的漸進的下界是g(n),
記作
f(n)= Ω(g(n))
小o符號
定義:設f和g是定義域爲自然數集N上的函數.若對任意正數c,都存在n0,使得對一起n>n0有,
0≤f(n)<c g(n)
成立,則記作
f(n)=o(g(n))
小ω符號
定義:設f和g是定義域爲自然數集N上的函數.若對任意正數c,都存在n0,使得對一起n>n0有,
0≤c g(n) < f(n)
成立,則記作
f(n)= ω(g(n))
𝛩 Θ符號
若f(n)=O(g(n))且f(n)= Ω(g(n)),則記作
f(n)= 𝛩Θ(g(n))
5. 有關函數漸進的界的三個定理
定理1
定理 設f和g是定義域爲自然數集合的函數.
(1)如果lim𝑛→∞𝑓(𝑛)/𝑔(𝑛)存在,lim┬(n→∞)〖f(n)/g(n)〗 存在,並且等於某個常數c>0,那麼f(n)= 𝛩Θ(g(n)).
(2)如果lim𝑛→∞𝑓(𝑛)/𝑔(𝑛)=0lim┬(n→∞)〖f(n)/g(n)〗=0,那麼f(n)= o(g(n)).
(3)如果lim𝑛→∞𝑓(𝑛)/𝑔(𝑛)=lim┬(n→∞)〖f(n)/g(n)〗=+∞,那麼f(n)= ω(g(n)).
多項式函數的階低於指數函數的階
對數函數的階低於冪函數的階
定理2
定理 設函數f,g,h的定義域爲自然數集合
(1)如果f=O(g),且g=O(h),那麼f=O(h).
(2)如果f= Ω(g),且g= Ω(h),那麼f= Ω(h).
(3)如果f= 𝛩Θ(g),且g= 𝛩Θ(h),那麼f= 𝛩Θ(h).
函數的階之間的關係具有傳遞性
定理3
定理 假設函數f和g的定義域爲自然數集合,若對某個其它函數h,有f=O(h)和g=O(h),
那麼 f+g=O(h)
該性質可以推廣到有限個函數.
算法由有限步驟構成,若每一步的時間複雜度上界都是h(n),那麼該函數的時間複雜度函數可以寫作O(h(n))