算法設(shè)計與分析遞歸與分治(第二章)課件.ppt
《算法設(shè)計與分析遞歸與分治(第二章)課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《算法設(shè)計與分析遞歸與分治(第二章)課件.ppt(75頁珍藏版)》請在匯文網(wǎng)上搜索。
1、27.07.2022,計算機(jī)算法設(shè)計與分析,1,第二章遞歸與分治,27.07.2022,計算機(jī)算法設(shè)計與分析,2,遞歸的思想,遞歸(Recursion)就是通過把復(fù)雜問題分解為較簡單的同一問題來求解。遞歸求解問題的方法通常有兩步:第一步是考慮最簡單的情況下該問題如何求解。第二步是考慮該問題的較復(fù)雜情況是如何由較簡單的所構(gòu)成的。由此得出該問題求解的方法。,27.07.2022,計算機(jī)算法設(shè)計與分析,3,Hanoi塔問題,Hanoi塔問題:有A、B、C三根柱子。A上有n個圓盤,自下而上由大到小地疊在一起。,現(xiàn)要將A上的全部圓盤移到B上,并要求:(1)每次只能移動一個圓盤;(2)任何時刻都不允許將較
2、大的圓盤壓在較小的圓盤上;(3)圓盤只能在A、B、C三個柱子間移動。,如何解決此問題呢?,27.07.2022,計算機(jī)算法設(shè)計與分析,4,Hanoi塔問題,讓我們先考慮最簡單的情況:1、若沒有盤子(n = 0),自然不需要做任何事情。,2、若只有一個盤子,也很容易。直接把它移到B盤即可。,不妨設(shè)操作Move(X, Y)將X柱上的一個盤子(最頂上的)移到Y(jié)柱上。,27.07.2022,計算機(jī)算法設(shè)計與分析,5,Hanoi塔問題,讓我們先考慮最簡單的情況:1、若沒有盤子(n=0),自然不需要做任何事情。,2、若只有一個盤子,也很容易。直接把它移到B盤即可。,不妨設(shè)操作Move(X, Y)將X柱上的
3、一個盤子(最頂上的)移到Y(jié)柱上。,即通過操作Move(A, B)即可實現(xiàn)。,27.07.2022,計算機(jī)算法設(shè)計與分析,6,Hanoi塔問題,現(xiàn)在來考慮復(fù)雜的情況,即n 1的情況。,怎樣將它變成A柱上只有一個盤子,即n = 1,呢?,顯然應(yīng)該先將A柱上的n 1個盤子,移到C柱上去。,27.07.2022,計算機(jī)算法設(shè)計與分析,7,Hanoi塔問題,于是我們有了解決n 1的的策略:,27.07.2022,計算機(jī)算法設(shè)計與分析,8,Hanoi塔問題,于是我們有了解決n 1的的策略:,(1)先將A上面n1個盤子移至C。,27.07.2022,計算機(jī)算法設(shè)計與分析,9,Hanoi塔問題,于是我們有了解
4、決n 1的的策略:,(1)先將A上面n1個盤子移至C。,(2)再將A上面的1個盤子移至B。,27.07.2022,計算機(jī)算法設(shè)計與分析,10,Hanoi塔問題,于是我們有了解決n 1的的策略:,(1)先將A上面n1個盤子移至C。,(2)再將A上面的1個盤子移至B。,(3)最后將C上面n1個盤子移至B。,27.07.2022,計算機(jī)算法設(shè)計與分析,11,Hanoi塔問題,我們用Fr、To和As分別表示源柱、目標(biāo)柱和輔助柱,解Hanoi塔可以描寫為這樣的遞歸過程:1、若n = 0,什么也不做;,最簡單的情況,2、若n 0,則用Hanoi的方法將Fr柱上的 n 1個盤子移到As柱上,用To柱做輔助柱
5、;將剩下的一個盤子從Fr移到To;用Hanoi的方法將As柱上的 n 1個盤子移到To柱上,用Fr柱做輔助柱。,27.07.2022,計算機(jī)算法設(shè)計與分析,12,Hanoi塔問題,若寫成java語言,解Hanoi塔可以描寫為這樣的遞歸過程:void Hanoi(int n, int Fr, int To, int As) if (n 0) Hanoi(n1, Fr, As, To); Move(Fr, To); Hanoi(n1, As, To, Fr); ,當(dāng)n 0時,遞歸終止。,27.07.2022,計算機(jī)算法設(shè)計與分析,13,Hanoi塔問題,Hanoi(3, A, B, C), Han
6、oi(2, A, C, B); Move(A, B); Hanoi(2, C, B, A),Hanoi(1, A, B, C);Move(A, C);Hanoi(1, B, C, A),Move(A, B);,Move(B, C);,Hanoi(1, C, A, B);Move(C, B);Hanoi(1, A, B, C),Move(C, A);,Move(A, B);,Move(A, C);,Move(A, B);,Move(C, B);,27.07.2022,計算機(jī)算法設(shè)計與分析,14,Hanoi塔問題的時間復(fù)雜性,不難證明Hanoi塔問題的時間復(fù)雜性為O(2n)。證明:對n歸納證明移動
7、次數(shù)move(n) = 2n 1。歸納基礎(chǔ):當(dāng)n = 1, move(1) = 1 = 21 1。歸納假設(shè):當(dāng)n k, move(n) = 2n 1。歸納步驟:當(dāng)n = k + 1,移動次數(shù)為move(k+1) = 2(move(k) + 1 = 2(2k 1) + 1 = 2k+1 1 由歸納法可知對任意的n有move(n) = 2n 1。,27.07.2022,計算機(jī)算法設(shè)計與分析,15,遞歸元,遞歸思想是將對較大規(guī)模的對象的操作歸結(jié)為對較小規(guī)模的對象實施同樣的操作。這種規(guī)模的變化體現(xiàn)在遞歸的參數(shù)表中的一類(一個或幾個)變元上,這類變元被稱之為遞歸元。在遞歸定義中遞歸元的變化應(yīng)導(dǎo)致遞歸計算
8、終止,即逐步變化為最簡單規(guī)模的計算。在遞歸算法的設(shè)計中遞歸元是非常重要的。,27.07.2022,計算機(jī)算法設(shè)計與分析,16,常見的遞歸形式,除基本的遞歸形式外,其它常見的遞歸形式有四種,它們是:,多變元遞歸;多步遞歸;嵌套遞歸;聯(lián)立遞歸,27.07.2022,計算機(jī)算法設(shè)計與分析,17,多變元遞歸,多變元遞歸就是遞歸元多于一個的遞歸。例如,求最大公約數(shù)的輾轉(zhuǎn)相除法:,其中x和y都是遞歸元。,最簡單的情況有兩種,27.07.2022,計算機(jī)算法設(shè)計與分析,18,多步遞歸,若遞歸函數(shù)f(x, y),其中y是遞歸元,不僅與f(x, y1)有關(guān),而且與f(x, y2),乃至f(x, 0)有關(guān),則稱為
- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
20 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 算法 設(shè)計 分析 遞歸 分治 第二 課件