關於<<算法導論>>上的主定理(Master Theorem)的證實

以前學習《算法導論》關於主定理一章,它的證實是很概略的,網上關於主定理證實的材料很多,可是不少都只侷限於在b的冪上的證實,將證實擴展到全體整數的論述至關少。本人查找了很多資料後在這裏找到了一篇相對完整的證實(點擊這裏),但細細讀下來卻發現它仍是有一些瑕疵,所以打算本身補完整個證實,但願能對之後學習算法導論的同窗有所幫助。因爲本人數學水平不行,若是發現證實有錯誤或有地方須要補充,歡迎聯繫我youth7@163.comhtml

 

1,證實的整體思路算法

首先,求出遞歸式的非遞歸形式,即用多個多項式的和將遞歸式表示出來編輯器

接着,分析這個多項式的和,而後證實之。(證實內部又要分開兩個階段進行)ide

總之,求出遞歸式的和式,是證實的開始的基礎,全部後續的證實,都要基於這個和式展開的。學習

 

2,遞歸式的和google

首先畫出遞歸樹spa




這裏介紹一下幾個變量是怎麼來的orm

1)樹的高度hhtm

這裏須要重點理解的是,從這個和式咱們能夠直觀地感覺到,若是兩個部分中誰的階數較高,則誰決定和式的上界。所以接着的具體證實就是圍繞着這兩部分的大小關係展開的。咱們有如下幾種狀況:遞歸

(留意f(n)是劃分當前問題的代價,也是非葉子節點的代價。 是全部葉子節點的代價,即基本狀況的代價的和)

1)若是第一部分比第二部分的階數要高,這意味着遞歸樹的總代價由葉子的代價決定

2)若是兩部分相等,這意味着遞歸樹的總代價分佈均勻,由葉子節點和其它節點共同決定

3)若是第二部分階數比第一部分要高,這意味着遞歸樹的總代價由內層葉子決定,也便是說,劃分問題的代價決定遞歸樹的總代價

理解三種情形的現實意義很重要,它能幫助咱們清晰體會到遞歸式的本質


3,證實的第1階段

第一階段的證實並非在全體天然數上進行的,而是將n定義在b的冪上面,即 ,如下是證實過程

一階段狀況1




一階段狀況2



一階段狀況3



綜合上述,第一階段證實完畢


4,證實的第2階段

第二階段是在第一階段的基礎上,將主定理的定義域由 擴展到從全體天然數上,可是有兩點必須注意:


二階段狀況1

二階段狀況2



二階段狀況3


5,擴展

咱們能夠看到,其實主定理是不能覆蓋全部狀況的,主定理的本質是遞歸式,遞歸式的求解有很長曆史,算法導論的本章註記中談到了Akra-Bazzi方法(我的認爲是一種關於遞歸式的廣泛性解法),有興趣能夠參考一下附錄參考資料228,這種方法可以解決任何遞歸問題。

Tom Leighton. Notes on better master theorems for divide-and-conquer recurrences. Class notes. Available at http://citeseer.ist.psu.edu/252350.html, October 1996.

因爲網頁編輯器不支持公式,只能貼圖片,完整高清版已經上傳新浪資料,有須要能夠自行搜索下載,但願這個證實不會誤導各位朋友。

最近發現新浪資料已經暫時關閉了,悲劇啊,上傳百度文檔的話又不能識別公式,有推薦的地方嗎?

相關文章
相關標籤/搜索