第二十七節(jié)-遞歸樹

什么是遞歸樹

遞歸的思想,就是將大問題分解為小問題,再將小問題分解為小小問題。這樣一層一層分解,直到問題的數(shù)據(jù)規(guī)模被分解得足夠小,不用繼續(xù)分解為止。

如果我們把這個一層一層分解的過程畫成圖,它其實就是一棵樹。我們給這棵樹起一個名字,叫做遞歸樹

遞歸樹

用遞歸樹來分析遞歸算法的時間復(fù)雜度

以遞推公式 f(n) = f(n-1) + f(n-2) 為例,它的時間復(fù)雜度遞推公式為 T(n) = T(n-1) + T(n-2) + c

從出發(fā)到葉子節(jié)點,最短路徑是一直走 n-2 這條遞歸路線,長度是 n/2;最長路徑是一直走 n-1這條遞歸路線,長度是 n。

每次分解需要做一次加法運算,我們把這次加法運算的時間復(fù)雜度記為常數(shù) 1。那么第一層需要消耗時間 1,第二層需要消耗時間 2,第三層需要消耗時間 2^2=4 ……。依次類推,第 k 層需要消耗 2^(k-1) 的時間。從第一層累加到第 k 層, 總共需要消耗 1 + 2 + 4 + …… + 2^(k-1) = 2^k -1 的時間。

然后回頭看遞歸樹的圖,如果遞歸時都走 n-2,那么路徑長度就是 2/n,如果整棵樹的所有路徑長度都是 n/2,那么整個算法的時間復(fù)雜度就是 O(2^(n/2) - 1) 。同理如果都是最長路徑 n ,那么整個算法的時間復(fù)雜度就是 O(2^n -1)。當(dāng)我們從圖中可以看到,整個遞歸樹是介于全部都是最短路徑和全部都是最長路徑之間的情況,所以時間復(fù)雜度也是在兩者之間,但是我們可以看到兩者 O(2^(n/2) - 1) 和 O(2^n -1) 都是指數(shù)級別的時間復(fù)雜度。故最后整個算法是指數(shù)級別的時間復(fù)雜度。

概況分析方法

  1. 畫出遞歸樹,遞推公式。
  2. 分析每層需要消耗的時間
  3. 計算邊界時間復(fù)雜度(都是最長路徑、都是最短路徑)
  4. 總復(fù)雜度就在邊界復(fù)雜度之間。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 很快,張飛便否定了自己的想法,自己也上了十幾年學(xué)了,明明知道這世上并沒有輪回再生之說,但還是忍不住這樣想了...
    清靈之空閱讀 347評論 0 1
  • 黃配藍(lán),原色的搭配。總會讓一些小伙伴感覺過于鮮艷,不敢去穿。其實黃配藍(lán)近些年非常流行。 撞色搭配,可以使過時的單品...
    濰坊谷德DD李玉蘋閱讀 773評論 3 1
  • 烏云下,我并不想回家 沒辦法,就在大馬路邊的書吧 喝杯咖啡吧 想起那一年,站在雨中說怕 親愛的,那些記憶呢 是不是...
    人生請多逗留閱讀 515評論 0 1
  • 1. 救援隊找到我的時候,我已經(jīng)遍體鱗傷,大概算的上是奄奄一息了,左邊的鎖骨連著肩膀三角肌的地方已經(jīng)血肉模糊。兩條...
    子風(fēng)藤閱讀 2,717評論 127 116

友情鏈接更多精彩內(nèi)容