遞歸樹

遞歸樹

    遞歸樹的結點有兩個域,如下圖:

    T(size)指問題大小爲size時,函數的複雜度。nonrec.cost指問題大小爲size時的非遞歸代價。

     根結點的每個子結點都代表了這個問題分拆的一個子問題的複雜度。就這樣遞歸地分解問題。一直到達葉子結點,也就是base-case.在前面的討論中,我們沒有涉及base-case,在使用遞歸樹分析複雜度時,我們假設base-case的複雜度爲1

     舉一個例子就可以很明白的說明如何構造遞歸樹。

Example1:     由遞歸方程T(n)=2T(n/2)+n構造遞歸樹

     首先,構造根接點

它的子結點是

     ……,以此類推。所以,最後的遞歸樹爲:

遞歸樹規則:

     根結點的複雜度=所有非葉結點的非遞歸複雜度+葉子結點的複雜度。

所以,在上面的例子中,每層的非遞歸複雜度爲n,base-case出現在大約lgn(n/2^d =1;d = lgn)。由於base-case的複雜度爲1,所以T(n)nlgn,即

     遞歸樹是分析和計算遞歸方程的一個重要工具。它可以直觀地表示出遞歸函數的複雜度,並使人易於理解。

發佈了15 篇原創文章 · 獲贊 7 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章