考研相關文章參考資料為 wjungle 大神提供的筆記
漸進式符號
Asymptotic Notations
- 表示時間函數的
成長速率 (growth rate) 等級
符號
- O
- f(n)=O(g(n)) iff exist two positive constants c and n0 such that f(n)≤c∗g(n), for all n≥n0
- 視為理論的
Upper-Bound
- Ω
- f(n)=Ω(g(n)) iff exist two positive constants c and n0 such that f(n)≥c∗g(n), for all n≥n0
- 視為理論的
Lower-Bound
- Θ
- f(n)=Θ(g(n)) iff exist three positive constants c1,c2 and n0 such that c1∗g(n)≤f(n)≤c2∗g(n), for all n≥n0
- o
- f(n)=o(g(n)) iff for all constants c>0, exist n0>0 such that 0≤f(n)<c∗g(n), for all n≥n0
- ω
- f(n)=o(g(n)) iff for all constants c>0, exist n0>0 such that 0≤c∗g(n)<f(n), for all n≥n0
常見成長速率
- 由小到大
常數、對數:
- O(1)
- O(log∗n)=O(loglog...logn)
- O(loglogn)
- O(logn)=O(2loglogn)
- O(logkn)
線性、多次方:
- O(n)=O(2logn)
- O(nlogn)、O(n!)
- O(n2)
- O(nk)
指數:
- O(2n)
- O(kn)
階乘、多指數:
- O(n!)
- O((n+1)!)
- O(nn)
- O(n2n)
實用操作:
- alogbc=clogba
求解遞迴時間函數
展開帶入法
ex: T(n)=2T(n−1)+1, T(1)=1,求 T(n), O(n)?
T(n)=2T(n−1)+1
=2[2T(n−2)+1]+1=4T(n−2)+3
=4[2T(n−3)+1]+1=8T(n−3)+7
=16T(n−4)+15
...
=2n−1T(1)+2n−1−1
得 O(2n)
Master Method
- 若 T(n)=aT(bn)+f(n),其中 a≥1, b>1 之 constants,f(n) 是一個正成長之函數,則可使用此定理求出 T(n)=Θ(?)
- 求出 nlogba 並與 f(n) 比較,分為 3 case:
- case 1:
- 若 f(n)=O(nlogba−ε), ε>0
- 則 T(n)=Θ(nlogba)
- case 2:
- 若 f(n)=Θ(nlogba)
- 則 T(n)=Θ(nlogba∗logn)
- case 3:
- 若 f(n)=Ω(nlogba+ε), ε>0
- 且 af(bn)≤cf(n), where 0<c<1
- 則 T(n)=Θ(nlogba)
Extended Master Method
- 若 T(n)=aT(bn)+f(n) 且 nlogbaf(n)=logkn, k≥1
- 則
不使用 case 3,而是使用此定理,即 T(n)=Θ(nlogba∗logk+1n)
Recursive Tree
- 分為兩種類型:
- 每一 level 之 cost 皆相同
- 則 T(n)=Θ(level cost∗logn)
- 每一 level 之 cost 皆不相同,且 ≤
level 1 之 cost
- 則 T(n)=Θ(level 1 cost)
ex:
- T(n)=T(5n)+T(54n)+n
- level 1: n
- level 2: 5n+54n=n
- 得 Θ(nlogn)
- T(n)=T(4n)+T(2n)+T(8n)+n
- level 1: n
- level 2: 4n+2n+8n=87n
- 得 Θ(n)
- T(n)=T(5n)+T(107n)+n
- level 1: n
- level 2: 5n+107n=109n
- 得 Θ(n)
特徵方程式
ex: T(n)=T(n−1)+T(n−2), T(0)=0, T(1)=1
特徵方程式: x2=x+1⇒x2−x−1=0
解出兩根為 21±5
⇒T(n)=A(21+5)+B(21−5)
帶入 T(0)=0, T(1)=1 求 A,B
得 T(n)=51(21+5)−51(21−5)
Divide-and-Conquer
- 將一個大問題
分割 (Divide) 為幾個獨立的子問題,每個子問題各自求解 (Conquer),最後合併所有子問題的解成為整個大問題之解
- 與 T(n)=aT(bn)+f(n) 之關係:
- n 為資料量
- a 代表子問題數量
- bn 代表子問題資料量
- T(bn) 代表一個子問題之時間
- f(n) 代表所有
切割及合併的成本和