亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

遞歸算法與動態規劃算法是計算機程序設計、數據結構中常見算法。有些書籍教材中對遞歸算法與動態規劃算法比較時,總是指出動態規劃算法優于遞歸算法,在問題較為復雜時不建議使用遞歸算法。本文主要以在實際問題解決過程中對遞歸算法與動態規劃算法進行比較,判斷其時間復雜度。

遞歸與動態規劃算法時間復雜度的簡單理解計算機程序算法分析

1、問題

假設某人爬樓梯,一次只能攀爬1臺階或者2臺階,某樓梯共有N階,請計算該人爬上N階樓梯一共有多少種方法?

2、遞歸算法

該問題與斐波那契數列十分類似,是一道地地道道的遞歸題目,因此可以直接使用遞歸算法實現問題求解。編寫函數如下:

遞歸與動態規劃算法時間復雜度的簡單理解

爬樓梯問題遞歸算法

3、動態規劃算法

解決爬樓梯問題采用動態規劃算法則可以從1層開始,計算到N層每層能夠到達的方法,設計a,b兩變量時刻表示到達每一層K前的兩層,a是到達k-2層的方法,b是到達k-1層的方法。則可編寫函數實現問題求解。函數定義如下:

遞歸與動態規劃算法時間復雜度的簡單理解

爬樓梯問題動態規劃算法求解


以上給出爬樓梯問題動態規劃與遞歸算法求解函數,其中f(n)是用遞歸實現, v(n)是用動態規劃實現。以臺階數為10,調用函數執行,可獲取以下結果。

遞歸與動態規劃算法時間復雜度的簡單理解

計算結果

如上圖結果所示,當樓梯數量為10時,分別計算方法總數為89.為研究兩種算法時間復雜度,我們在函數外部分別定義全局函數 count1和count2,為計數器,在兩個函數內部執行++運算。如圖:

遞歸與動態規劃算法時間復雜度的簡單理解

 

設置計數變量之后,繼續調用兩函數計算爬樓方法,當N=20時可以獲取以下結果:

遞歸與動態規劃算法時間復雜度的簡單理解

函數調用執行次數

由此可見,使用動態規劃與遞歸算法執行問題求解過程N=20時,兩函數調用次數差距較大,其中動態規劃執行18次,遞歸算法執行了13529次。有興趣讀者可以自己嘗試一下當N=50時可能遞歸算法將會導致瀏覽器卡死。因此在解決這個問題方面動態規劃時間復雜度較低,僅為O(n),遞歸算法時間復雜度為O(2^n).
 

分享到:
標簽:算法
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定