算法導論 第4章 分治策略(2)
代入法求解遞歸式
代入法求解遞歸式的步驟:
- 猜測解的形式
- 用數學歸納法求出解中的常數,並證明解正確
如對遞歸式:
猜測其解爲T(n)=O(nlgn),代入法要求證明恰當選擇常數c>0,可有T(n)<=cnlgn。假定此上屆對所有m < n成立,代入得到:
其中只要c>=1,最後一步即成立。注意到對n=1,邊界條件T(1)<=c1lg1=0與T(1)=1矛盾,對於這種情況可以修改歸納證明中的基本情況,換爲T(2)或T(3)即可。
遞歸樹方法求解遞歸式
對於代入法,有時想到一個好的猜測比較困難。在遞歸樹方法中,遞歸樹的每個節點表示一個單一子問題的代價,將樹中的代價求和即可得到遞歸調用的總代價,適合用來生成好的猜測,並用代入法驗證。
對於遞歸式:
構造遞歸樹:
整個遞歸樹共有log4n+1層,其中第i層由3<i個節點,每個節點的代價爲c(n/4i)2,所以整棵樹代價之和爲:
計算過程中利用了一定程度的不精確,推導出一個猜測T(n)=O(n2)。接下來即可利用代入法證明猜測正確:
當d>=(16/13)c時推導成立。
主方法求解遞歸式
主方法專門用於求解這種形式的遞歸式:
主定理:令a>=1和b>1是常數,對於定義在非負整數的函數T(n)=aT(n/b)+f(n),T(n)由如下漸近界:
如對於遞歸式:
a=9,b=3,f(n)=n,nlogba=Θ(n2),有f(n)=O(nlog39-ε),ε=1,對應情況1,得到解T(n)=Θ(n2)。