一.集合、關係和函數
當分析算法時,我們認爲它的輸入是從某個特定範圍內(如整數集合)取出的一個集合。可以認爲算法是一個函數,它是一個受約束的關係,它映射每一個可能的輸入到一個特定的輸出,這樣,集合和函數就都處於算法分析的核心中。
集合用來指任何一批對象,它們成爲集合的成員或者元素。集合分爲有限集合和無限集合,如果一個無限集合的元素能被一個一個列舉出來,則稱之爲可數的,如整數集,否則不可數的,如實數集。
令A和B是兩個集合,A和B的笛卡爾積是所有有序對(a,b)的集合,a∈A,b∈B,笛卡爾積記爲AxB,用集合符號表示爲AxB={(a,b)|a∈A且b∈B}。
如果集合A上的關係R是自反的、對稱的和傳遞的,則稱它是等價的。
二.證明方法
1.直接證明
要證明“PQ”,可以先假設P是真的,然後P爲真推出Q真。
2.間接證明
蘊含式“PQ”邏輯等價於逆反命題“¬Q¬P”,有時,證明“如果非Q那麼非P”比直接證明原命題容易得多。
3.反證法
證明命題“PQ”爲真,先假定P爲真,但Q爲假,從而得到P爲假。
4.反例證明法
通常用來證明一個命題在很多時候是正確的,但並不永遠正確的情況。但面對一個需要證明其正確或錯誤的斷言時,可以從嘗試用反例來證明其不正確的開始。
5.數學歸納法
假設要證明某一性質P(n)對於爲真,它的正確性來自性質P(n-1)對於所有爲真。首先證明該性質對於成立,這稱爲基本步,然後證明只要這個性質對於爲真,那麼必有對於n這個性質爲真,這稱爲歸納步,於是可得到結論,對於所有的n≥的值,該性質都成立。
簡單來說,證明P(n)成立,先證明n=1時成立;當n≥2,假設P(n-1)成立是否可以推出P(n)成立,若能,則P(n)成立。(要注重推理的嚴謹性)。
有趣的小例子:證明所有的馬都是相同的顏色
1)n=1時,一匹馬本身顏色就和自己一樣,成立;
2)假設n=k時,命題成立,即k匹馬的顏色都相同,當n=k時,從馬羣中挑出k匹馬{1,2,...k},由假設可知k匹馬顏色一致,放回再取k匹馬{2,3,...k,k+1},由假設可知這k匹馬也顏色一致,兩個集合有共同的部分,則兩個集合的馬顏色一致,k+1匹馬顏色一致,得n=k+1時成立,原命題成立。
嚴謹性:其實這裏k在最開始就不成立,當k=1時,無法推出n=2成立,因爲此時得兩個集合爲{1}和{2},沒有交集,故不成立。
三.基礎公式
1.對數
,即
2.底函數和頂函數
令x是實數,用來表示x得底函數,它被定義爲不超過x的最大整數;x的頂函數用,它被定義爲大於等於x的最小整數。
;;;
定理:f(x)是單調遞增函數,使得若f(x)是整數,則x是整數,那麼且。
3.階乘
0!=1;如果n≥1,則n!=n(n-1)!;
對n!的一個有用的近似式是Stirling公式:;
。
4.二項式係數
,記爲;
; ,雙計數解釋見下圖;
設x爲正整數,那麼;
當x=1,有;當x=-1,有。
5.鴿巢原理(抽屜原理)
如果把n個球分別放在m個盒子中,那麼:
1)存在一個盒子,必定至少裝個球;
2)存在一個盒子,必定至少裝個球。
舉例:
1)令G=(V,E)是一個連通的無向圖,有m個頂點,令p是G中訪問n>m個頂點的一條路徑,那麼p必定包含一條迴路;
2)求a/b的每一位小數結果,這裏a<b,且均爲正整數
n <- 0 while (a>0) and (n<b+1) 輸出a/b a=(a%b)*10 n <- n+1 endwhile
輸入3/8依次輸出0,3,7,5;n<b+1的意義在於如果存在無限循環,在b+1步終止循環,因爲a%b可能值有0,1,2...b-1,最多做b+1次循環,則必出現重複的餘數。
6.和式
;
算術級數:,平方和:;
幾何級數:......(1);如果c=2,則有;如果c=1/2,則有;在(1)等式兩邊求導後再乘以c,得到,c≠1;當|c|<1且和式是無限的,......(2);令上式中c=1/2,得到;對(2)兩邊求導再乘以c,得到,|c|<1。
求和的積分近似
如果f(x)是遞減的,那麼有;
如果f(x)是遞增的,那麼有
求和式上下界舉例:
1)求的上下界,k≥1,,即,則可得;
2)分部積分:;
求出級數的上下界;求上界時,爲了方便結果與logn比較,防止出現log(n+1),把logn放出來,即;求下界時,。綜上可得,。
7.遞推關係
遞歸公式是用它自身來定義的一個公式;
常係數線性齊次遞推式:,則f(n)稱爲k次的。
線性齊次遞推式的求解:
1)一階線性齊次遞推關係式:;
2)二階線性齊次遞推關係式:,其特徵方程爲,二次方程求根,如果,則遞推的解爲;如果,則遞推的解爲,c1,c2可根據初始條件求得。
非齊次遞推關係的解:
1);
2);
3),令,代入得g(n)g(n-1)...g(1)p(n)=g(n)...g(1)p(n-1)p(n-1),化簡得,p(n)代回f(n)。
分治遞推關係的解:
一般形式:
1)展開遞推式
定理1:設b和d是非負常數,n是2的冪,的解爲;
定理2:設a和c是非負整數,b,d,x是非負常數,並且對於某個非負整數k,令,那麼的解是。
2)代入法
定理1:設b,d爲非負常數,,則;
定理2:,的解是。
3)更換變元
8.主定理(Master Theorem)
設a≥1,b≥1爲常數,f(n)爲一函數,T(n)由遞歸式T(n)=aT(n/c)+f(n)定義,其中n/c指或者,可以證明,略去上下取整不會對結果造成影響,那麼可能有如下漸進界:
1)若,即,則;
2)若,則;
3)若,即,且對與所有足夠大的n,有,則。
舉例:
1)T(n)=9T(n/3)+n,其中a=9,c=3,f(n)=n,,當,,滿足上述定理1)則;
2)T(n)=T(2n/3)+1,其中a=1,c=3,f(n)=1,,滿足上述定理2),則;
3)T(n)=3T(n/4)+nlogn,其中a=3,c=4,f(n)=nlogn,,當時,,可見滿足定理3)前一半條件滿足;af(n/c)=3(n/4)log(n/4)≤3/4nlogn,可知k=3/4<1,後半條件也滿足,則;