日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

算法分析基础——迭代法求解递推方程

發布時間:2023/12/13 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 算法分析基础——迭代法求解递推方程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

迭代法的步驟:

迭代用遞推方程的右部替換左部
出現初始值時,迭代停止
用數學歸納法驗證解的正確性

例如,Hanoi塔問題是一個可以遞歸求解的經典問題。我們便可以用迭代法求解其時間復雜度的遞推方程。首先看一下Hanoi塔問題的算法偽碼:

算法1 Hanoi(A, C, n)//將A柱上n個盤子按照要求移到C柱上

1. if n=1 then move (A, C) //將A柱上1個盤子移到C柱上

2. else Hanoi(A, B, n-1)

3. move (A, C)

4. Hanoi(B, C, n-1)

設移動n個盤子的所需要的移動次數為T(n),由算法的偽碼得到遞推方程T(n) = 2 * T(n-1) + 1 = 2 * [T(n-2) + 1] + 1 = ... = 2n-1 * T(1) + 2n-2 + ... + 2 + 1,其中T(1) = 1。于是得到T(n) = 2n - 1。再用數學歸納法帶入驗證結果:T(n) = 2 * T(n - 1) + 1 = 2 * (2n - 1 - 1) + 1 = 2n - 1。

隨著n的增大,算法的時間復雜度呈指數級別增長,解Hanoi問題需要的時間之漫長將令人難以接受。事實上,Hanoi塔問題屬于NP-Hard問題,即不存在多項式級別時間復雜度的解法,是不可解的。

有時,當直接只用迭代法解遞歸方程比較復雜時,可以采用換元迭代的方法,其執行步驟總結如下:

將對n的遞推式換成對其它變元k的遞推式
對k直接迭代
將解(關于k的函數)轉換成關于n的函數

例如,考慮歸并排序的時間復雜度。設待排序數組A的長度為n。首先看一下偽碼:

算法2 MergeSort(A, p, r)

輸入: 數組A[p...r], 1 ≤ p ≤ r ≤ n

輸出: 從A[p]到A[r]按照遞增順序排好的數組A

1. if p < r

2. then q←floor((p+r)/2)

3. MergeSort(A, p, q)

4. MergeSort(A, q+1, r)

5. Merge(A, p, q, r)

設W(n)為對長度為n的數組排序需要的比較次數。由偽碼得到時間復雜度的遞推表達式W(n) = 2 * W(n / 2) + n - 1, W(1) = 0。

直接迭代求解比較困難,可以令n = 2k,則k = log2n。帶入遞推關系式后,用迭代法解得W(2k) = (k - 1) * 2k + 1。再將k = log2n代入就可以得到W(n) = nlog2n - n + 1。

需要指出的是,迭代方法一般適用于一階的遞推方程。對于二階以上的情況,直接迭代將導致求和公式變得過于復雜,因此需要運用差消法,先化簡方程再進行迭代。適用差消法的例子將在后續博文中介紹。

總結

以上是生活随笔為你收集整理的算法分析基础——迭代法求解递推方程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。