1. 函數漸進的界
1.1 大 O 符號
-
定義:
設 f 和 g 是定義域爲自然數集N上的函數。若存在正數 c 和 n0 ,使得對於一切 n>n0 有 0≤f(n)≤cg(n) 成立,則稱 f(n) 的漸進上界是 g(n),記作:
f(n)=O(g(n))
自然數:自然數是指用以計量事物的件數或表示事物次序的數。即用數碼0,1,2,3,4……所表示的數。自然數由0開始,一個接一個,組成一個無窮的集體。自然數有有序性,無限性。分爲偶數和奇數,合數和質數等。
-
說明:
- f(n)=O(g(n)),f(n) 的階不高於 g(n) 的階;
- 可能存在多個正數 c ,只要指出一個即可;
- 對前面有限多個值可以不滿足不等式;
- 常數函數可以寫作 O(1)
-
栗子:
設 f(n)=n2+n,則:
- f(n)=O(n2),取 c=2,n0=1 即可;
- f(n)=O(n3),取 c=1,n0=2 即可;
1.2 大 Ω 符號
-
定義:
設 f 和 g 是定義域爲自然數集N上的函數。若存在正數 c 和 n0 ,使得對於一切 n>n0 有 0≤cg(n)≤f(n) 成立,則稱 f(n) 的漸進下界是 g(n),記作:
f(n)=Ω(g(n))
-
說明:
- f(n)=Ω(g(n)),f(n) 的階不低於 g(n) 的階;
- 可能存在多個正數 c ,只要指出一個即可;
- 對前面有限多個值可以不滿足不等式;
-
栗子:
設 f(n)=n2+n,則:
- f(n)=Ω(n2),取 c=1,n0=1 即可;
- f(n)=Ω(100n),取 c=1001,n0=1 即可;
1.3 小 o 符號
-
定義:
設 f 和 g 是定義域爲自然數集N上的函數。若對於任意正數 c 都存在 n0,使得對於一切 n>n0 有 0≤f(n)≤cg(n) 成立,則記作:
f(n)=o(g(n))
-
說明:
- f(n)=o(g(n)),f(n) 的階低於 g(n) 的階;
- 對不同的正數 c,n0 不一樣,c 越小 n0 越大;
- 對前面有限多個值可以不滿足不等式;
-
栗子:
設 f(n)=n2+n,則:f(n)=o(n3)
證:
-
當 c≥1 時顯然成立,只要取 n0=2,n2+n<cn3;
-
當 0<c<1 時,取 n0=⌈c2⌉ 即可,因爲當 n≥n0:
cn≥cn0>2
n2+n<2n2<cn3
1.4 小 ω 符號
1.5 Θ 符號
|
定義 |
說明 |
O |
設 f 和 g 是定義域爲自然數集N上的函數。若存在正數 c 和 n0 ,使得對於一切 n>n0 有 0≤f(n)≤cg(n) 成立,則稱 f(n) 的漸進上界是 g(n),記作:f(n)=O(g(n)) |
f(n)=O(g(n)),f(n) 的階不高於 g(n) 的階; 可能存在多個正數 c ,只要指出一個即可; 對前面有限多個值可以不滿足不等式; 常數函數可以寫作 O(1) |
Ω |
設 f 和 g 是定義域爲自然數集N上的函數。若存在正數 c 和 n0 ,使得對於一切 n>n0 有 0≤cg(n)≤f(n) 成立,則稱 f(n) 的漸進下界是 g(n),記作:f(n)=Ω(g(n)) |
f(n)=Ω(g(n)),f(n) 的階不低於 g(n) 的階; 可能存在多個正數 c ,只要指出一個即可; 對前面有限多個值可以不滿足不等式; |
o |
設 f 和 g 是定義域爲自然數集N上的函數。若對於任意正數 c 都存在 n0,使得對於一切 n>n0 有 0≤f(n)≤cg(n) 成立,則記作:f(n)=o(g(n)) |
f(n)=o(g(n)),f(n) 的階低於 g(n) 的階; 對不同的正數 c,n0 不一樣,c 越小 n0 越大; 對前面有限多個值可以不滿足不等式; |
ω |
設 f 和 g 是定義域爲自然數集N上的函數。若對於任意正數 c 都存在 n0,**使得對於一切 n>n0 有 $0 \le cg(n) \le f (n) ∗∗成立,則記作:f (n) = \omega(g(n))$ |
f(n)=o(g(n)),f(n) 的階高於 g(n) 的階; 對不同的正數 c,n0 不一樣,c 越小 n0 越大; 對前面有限多個值可以不滿足不等式; |
Θ |
若 f(n)=O(g(n)) 且 f(n)=Ω(g(n)),則記作:f(n)=Θ(g(n)) |
f(n) 的階與 g(n) 的階相同 對前面有限多個值可以不滿足條件; |
2. 函數漸進界的定理
2.1 定理1:Knowledge
-
定理內容:
設 f 和 g 是定義域爲自然數集合的函數。
-
如果 limn→∞g(n)f(n) 存在,並且等於某個常數 c>0 ,那麼:
f(n)=Θ(g(n))
-
如果 limn→∞g(n)f(n)=0 ,那麼:
f(n)=o(g(n))
-
如果 limn→∞g(n)f(n)=+∞ ,那麼:
f(n)=ω(g(n))
-
栗子:
設 f(n)=21n2−3n,證明 f(n)=Θ(n2)
證:因爲
limn→∞n2f(n)=limn→∞n221n2−3n=21
根據定理1,有 f(n)=Θ(n2)
-
根據定理1,得到的一些重要的結論:
- nd=o(rn),r>1,d>0 => 多項式函數的階低於指數函數的階
- lnn=o(nd),d>0 => 對數函數的階低於冪函數的階
2.2 定理2:
-
定理內容:
設 f,g,h 的定義域爲自然數集合:(函數階之間的關係具有可傳遞性)
- 如果 f=O(g),且 f=O(h),那麼 f=O(h);
- 如果 f=Ω(g),且 f=Ω(h),那麼 f=Ω(h);
- 如果 f=Θ(g),且 f=Θ(h),那麼 f=Θ(h);
2.3 定理3:
-
定理內容:
設 f 和 g 是定義域爲自然數集合的函數,若對某個其它的函數 h ,有 f=O(h) 和 g=O(h),那麼:
f+g=O(h)
=> 該性質可以推廣到有限個函數
-
算法的時間複雜度是各步操作時間之和,在常數步的情況下取最高階的函數即可。
4. 基本函數
4.1 對數函數
- 符號:
- logn=log2n
- logkn=(logn)k
- loglogn=log(logn)
- 性質:
- log2n=Θ(logln)
- logbn=o(nα),α>0
- $\alpha ^{\log_b n} = n^{\log_b \alpha} $
4.2 指數函數與階乘
4.3 取整函數
- 定義:
- ⌊x⌋ :表示小於等於x的最大整數
- ⌈x⌉ :表示大於等於x的最大整數
- 性質:
- x−1<⌊x⌋≤x≤⌈x⌉<x+1
- ⌊x+n⌋=⌊x⌋+n,⌈x+n⌉=⌈x⌉+n
- ⌈2n⌉+⌊2n⌋=n
- ⌈b⌈an⌉⌉=⌈abn⌉,⌊b⌊an⌋⌋=⌊abn⌋
4.4 按照階排序 Knowledge
22n,n!,n2n,(23)n,(logn)logn=nloglogn
n3,log(n!)=Θ(nlogn),n=2logn
log2n,logn,logn,loglogn
nlogn1=1
5. 序列求和的方法
5.1 引例
(1).k=1∑n−1k(k+1)1=k=1∑n−1(k1−k+11)=k=1∑n−1k1−k=1∑n−1k+11=k=1∑n−1k1−k=2∑nk1=1−n1
(2).t=1∑kt2t−1=t=1∑kt(2t−2t−1)=t=1∑kt2t−t=1∑kt2t−1=t=1∑kt2t−t=0∑k−1(t+1)2t=t=1∑kt2t−t=0∑k−1t2t−t=0∑k−12t=k2t−(2k−1)=(k−1)2k+1
5.2 二分檢索的平均時間複雜度 knowledge
A(n)=⌊logn⌋+21
5.3 估計和式上界的放大法 knowledge
-
兩個放大公式:
-
∑k=1nak≤namax
-
假設存在常數 r<1 ,使得對一切 k≥0 有 akak+1≤r 成立,則有如下結論:
∑k=0n≤∑k=0∞a0rk=a0∑k=0∞rk=1−ra0
-
栗子:
估計∑k=1n3kk 的上界。
解:
∑k=1n3kk=∑k=0n3kk
令 ak=3kk,ak+1=3k+1k+1,則 akak+1=(k)3k+1(k+1)3k=3kk+1≤32(k>=1)
所以,由上述第二個放大公式有:
∑k=1n3kk≤∑k=1∞31(32)k−1=311−321=1
5.4 估計和式漸進的界 Knowledge
估計∑k=1nk1 的漸進的界
-
∑k=1nk1≥∫1n+1xdx=ln(n+1)
-
∑k=1nk1=11+∑k=2nk1≤1+∫1nxdx=lnn+1
所以,∑k=1nk1=Θ(lnn)=Θ(logn)
6. 遞推方程與算法分析 Knowledge
-
主定理的應用背景:
T(n)=aT(bn)+f(n)
- a :規約後的子問題個數
- $\frac{n}{b} $ :規約後子問題的規模
- f(n) :規約過程以及組合子問題的解的工作量
二分檢索 => T(n)=T(2n)+1
二分歸併排序 => T(n)=2T(2n)+n−1
-
主定理:
設 a>1,b>1 爲常數,f(n) 爲函數,T(n) 爲非負整數,且 T(n)=aT(bn)+f(n),則:
-
若 f(n)=O(nlogba−ϵ),ϵ>0 ,那麼:
T(n)=Θ(nlogba)
-
若 f(n)=Θ(nlogba),那麼:
T(n)=Θ(nlogbalogn)
-
若 f(n)=Ω(nlogba+ϵ),ϵ>0,且對於某個常數 c<1 和充分大的 n 有 af(bn)≤cf(n),那麼:
T(n)=Θ(f(n))
-
例1:
求解遞推方程:T(n)=9T(3n)+n
解:
a=9,b=3,f(n)=n
nlogba=nlog39=n2,f(n)=O(nlog39−1)
根據主定理規則1,其中 ϵ=1:
T(n)=Θ(n2)
-
例2:
求解遞推方程:T(n)=T(32n)+1
解:
a=1,b=23,f(n)=1
nlogba=nlog231=1 ,f(n)=nlog231
根據主定理規則2:
T(n)=Θ(nlog231logn)=Θ(logn)
-
例3:
求解遞推方程:T(n)=3T(4n)+nlogn
解:
a=3,b=4,f(n)=nlogn
nlogba=nlog43≈0.793
取 ϵ=0.2,則 f(n)=nlogn=Ω(nlog43+0.2) = Ω(n0.993)
條件驗證:要使 af(bn)≤cf(n) 成立,帶入 f(n)=nlogn 得到:
3(4n)log(4n)≤cnlogn
當 c≥43 時,上述不等式可以對充分打的n成立,根據主定理規則3:
T(n)=Θ(f(n))=Θ(nlogn)
-
二分檢索:
W(n)=W(2n)+1,W(1)=1
解:
a=1,b=2,f(n)=1,nlog21=1
根據主定理規則2:
W(n)=Θ(logn)
-
二分歸併排序:
W(n)=2W(2n)+n−1,W(1)=0
解:
a=2,b=2,f(n)=n−1,nlog22=n
根據主定理規則2:
W(n)=Θ(nlogn)
-
例4: => 不能使用主定理的情形
求解遞推方程:T(n)=2T(2n)+nlogn
解:
a=2,b=2,f(n)=nlogn,nlogba=n
不存在 ϵ>0 使得:nlogn=Ω(n1+ϵ)
不存在 c<1 使 af(bn)≤cf(n) 對所有充分大的 n 成立
2(2n)log2n=n(logn−1)≤cnlogn