演算法設計與分析 11 遞迴樹

2021-09-27 03:28:31 字數 974 閱讀 7039

當前面所學習的迭代法、差消法等不太好解決的問題,可以使用遞迴樹,來很方便的解決。

2. 遞迴樹的生成規則

3. 總結

如果遞迴樹上某節點記為:w(m),則:

舉個例子,二分歸併排序的時間複雜度的遞推式子對應的遞迴樹為:

將函式項葉節點的迭代式w(m)表示成二層子樹

用該子樹替換該葉節點

下面還是以二分歸併的例子來說明遞迴樹的生成過程:

最終形成遞迴樹:

這與前面求得的結果一樣。

求解:它的遞迴樹為:

觀察上面的遞迴樹,每一行的和都是n。但是因為左邊子樹短一些,右邊子樹長一些,所以最終的極限末尾處,左邊已經沒有節點,但是右邊還有節點,但是此時右邊的節點和不會超過n,所以取其極限o(n).

然後對上面的式子進行求和:

可以看出利用遞迴樹,可以很容易的求出上述的結果,但是利用迭代就比較麻煩。

演算法設計與分析 遞迴

遞迴是一種技術手段,並不嚴格算是一種演算法,是指程式直接間接呼叫自身的程式設計技巧。遞迴需要有邊界條件,遞迴前進段和遞迴返回段。1 當邊界條件不滿足時,遞迴前進 2 當邊界條件滿足時,遞迴返回。ps 在使用遞迴策略時,必須有乙個明確的遞迴結束條件,成為遞迴出口,否則將無限進行下去 遞迴的缺點 遞迴演...

演算法分析與設計 遞迴與尾遞迴

什麼是遞迴?遞迴最恰當的比喻,就是查詞典。我們使用的詞典,本身就是遞迴,為了解釋乙個詞,需要使用更多的詞。當你查乙個詞,發現這個詞的解釋中某個詞仍然不懂,於是你開始查這第二個詞,可惜,第二個詞裡仍然有不懂的詞,於是查第三個詞,這樣查下去,直到有乙個詞的解釋是你完全能看懂的,那麼遞迴走到了盡頭,然後你...

演算法分析與設計3 遞迴

任何乙個可以用計算機求解的問題所需的計算時間都與其規模n有關。問題的規模越小,越容易直接求解,解題所需的計算時間也越少。分治法的設計思想是,將乙個難以直接解決的大問題,分割成一些規模較小的相同問題,以便各個擊破,分而治之。如果原問題可分割成k個子問題 1 k n 且這些子問題都可解,並可利用這些子問...