第五講:易解問題與難解問題_第1頁
第五講:易解問題與難解問題_第2頁
第五講:易解問題與難解問題_第3頁
第五講:易解問題與難解問題_第4頁
第五講:易解問題與難解問題_第5頁
已閱讀5頁,還剩28頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、2021/8/61 本章首先介紹一個對問題進行抽象的典型實例哥尼斯堡七橋問題。然后,通過“梵天塔”問題和“停機問題”分別介紹學科中的可計算問題和不可計算問題。從“梵天塔”問題再引出算法復雜性中的難解性問題、P類問題和NP類問題,證比求易算法,PNP是否成立的問題。2021/8/621 哥尼斯堡七橋問題17世紀的東普魯士有一座哥尼斯堡城,城中有一座奈佛夫島,普雷格爾河的兩條支流環繞其旁,并將整個城市分成北區、東區、南區和島區4個區域,全城共有7座橋將4個城區相連起來。通過這7座橋到各城區游玩,問題:尋找走遍這7座橋的路徑,要求過每座橋只許走一次,最后又回到原出發點。2021/8/63問題的抽象1

2、736年,大數學家列昂納德歐拉(L.Euler)發表了關于“哥尼斯堡七橋問題”的論文。他抽象出問題最本質的東西,忽視問題非本質的東西(如橋的長度等),從而將哥尼斯堡七橋問題抽象為一個數學問題,即經過圖中每邊一次且僅一次的回路問題了。 D C B A 2021/8/64歐拉回路歐拉給出了哥尼斯堡七橋問題 的證明,還用數學方法給出了三條判定規則(判定每座橋恰好走過一次,不一定回到原點, 即對歐拉路徑的判定):如果通奇數座橋的地方不止兩個,滿足要求的路線是找不到的。如果只有兩個地方通奇數座橋,可以從這兩個地方之一出發,找到所要求的路線。如果沒有一個地方是通奇數座橋的,則無論從哪里出發,所要求的路線都

3、能實現。根據第3點,可以得出,任一連通圖存在歐拉回路的充分必要條件是所有頂點均有偶數度.2021/8/65哈密爾頓回路問題問題:在某個圖G中,能不能找到這樣的路徑,即從一點出發不重復地走過所有的結點,最后又回到原出發點。“哈密爾頓回路問題”與“歐拉回路問題”的不同點“哈密爾頓回路問題”是訪問每個結點一次,而“歐拉回路問題”是訪問每條邊一次。對圖G是否存在“歐拉回路”前面已給出充分必要條件,而對圖G是否存在“哈密爾頓回路”至今仍未找到滿足該問題的充分必要條件。2021/8/66圖論的形成和發展歐拉的論文為圖論的形成奠定了基礎。圖論已廣泛地應用于計算學科運籌學信息論控制論等學科圖論已成為我們對現實

4、問題進行抽象的一個強有力的數學工具。圖論在計算學科中的作用越來越大,圖論本身也得到了充分的發展。2021/8/672 可計算問題與不可計算問題 計算學科的問題,無非就是計算問題,從大的方面來說,分可計算問題與不可計算問題。可計算問題是存在算法可解的問題,不可計算問題是不存在算法可解的問題。 為便于理解,下面,分別以梵天塔(Hanoi,又譯為漢諾)問題和停機問題來介紹可計算問題與不可計算問題。2021/8/682.1排序問題隨機給出n個數,要求對它們進行排序。比如:8,2,7,6,4,12對于排序問題,有多種算法。一種選擇排序算法是:從n個數中挑出最小的數,再從n-1個數中挑出第二小的數.那么,

5、在這些眾多的算法中,如何來比較誰的速度更快?事后分析:機器的運行時間?事前分析:與問題規模有關的表達式,表示算法中基本操作的執行次數。2021/8/69一種選擇排序算法是:從n個數中挑出最小的數,再從n-1個數中挑出第二小的數.時間復雜性與n有關,大概是n+(n-1)+1=1/2(n(n+1),忽略常數項,取最大的指數,記為O(n2)。最快的算法是快速排序算法,時間復雜度為O(nlogn)。2021/8/6102.2 梵天塔問題相傳印度教的天神梵天在創造地球這一世界時,建了一座神廟,神廟里豎有三根寶石柱子,柱子由一個銅座支撐。梵天將64個直徑大小不一的金盤子,按照從大到小的順序依次套放在第一根

6、柱子上,形成一座金塔(如圖2.3所示),即所謂的梵天塔(又稱漢諾塔)。天神讓廟里的僧侶們將第一根柱子上的64個盤子借助第二根柱子全部移到第三根柱子上,即將整個塔遷移,同時定下3條規則:2021/8/611每次只能移動一個盤子;盤子只能在三根柱子上來回移動,不能放在他處;在移動過程中,三根柱子上的盤子必須始終保持大盤在下,小盤在上。2021/8/612遞歸算法(重點掌握)遞歸是一種特別有用的工具,不僅在數學中廣泛應用,在日常生活中也常常遇到。以下使用遞歸算法來解決梵塔問題。2021/8/613遞歸算法在數學中幾個熟知的數學定義:在數學中幾個熟知的數學定義:1)!1(01!) 1 (nnnnn(2

7、) (2) 若若t1,t2t1,t2是樹,則是樹,則 也是樹也是樹1101) 3(111nCCnmnCnmnmnm2021/8/614遞歸遞歸算法包括遞歸算法包括遞推遞推和和回歸回歸兩部分:兩部分:遞推遞推就是為了得到問題的解就是為了得到問題的解, ,將它推到比原問題更簡單的問題求解。將它推到比原問題更簡單的問題求解。例如:例如:n!=f(n),n!=f(n),為了計算為了計算f(n),f(n),將它推到比原問題更簡單的問題將它推到比原問題更簡單的問題f(n-f(n-1),1),即即f(n)=f(n-1)f(n)=f(n-1)* *n,n,而計算而計算f(n-1)f(n-1)比計算比計算f(n

8、)f(n)簡單簡單, ,因為因為f(n-1)f(n-1)比比f(n)f(n)更加接近已知解更加接近已知解0!=10!=1使用遞推要注意使用遞推要注意(1 1)遞推應有終止之時)遞推應有終止之時, ,例如當例如當n=0n=0時時,0!=1,0!=1為遞推終止條件為遞推終止條件, ,所謂終所謂終止條件就是指在此條件下問題的解時明確的止條件就是指在此條件下問題的解時明確的, ,缺少終止條件會使算法缺少終止條件會使算法失敗。失敗。(2 2)簡單問題表示離遞推終止條件更接近的問題。簡單的問題與原)簡單問題表示離遞推終止條件更接近的問題。簡單的問題與原問題其解的算法是一致的問題其解的算法是一致的, ,其差

9、別主要反映在參數上其差別主要反映在參數上, ,例如例如,f(n-1),f(n-1)比比計算計算f(n)f(n)更簡單更簡單, ,因為因為f(n-1)f(n-1)比比f(n)f(n)參數少參數少1 1。參數變化使問題遞推。參數變化使問題遞推到有明確解。到有明確解。2021/8/615遞歸算法回歸回歸指當簡單問題得到解后指當簡單問題得到解后, ,回歸到原問題的解上來。例如回歸到原問題的解上來。例如, ,當計算完當計算完(n-1)!(n-1)!后后, ,回歸計算回歸計算n n* *(n-1)!,(n-1)!,即得到即得到n!n!的值。的值。使用回歸要注意使用回歸要注意(1 1)當回歸到原問題的解時)

10、當回歸到原問題的解時, ,算法中所涉及的處理對象算法中所涉及的處理對象是關于當前問題的是關于當前問題的, ,即遞歸算法所涉及的參數與局部處即遞歸算法所涉及的參數與局部處理對象是有層次的。當解一問題的時候理對象是有層次的。當解一問題的時候, ,有它的一套參有它的一套參數與局部處理對象。當遞推進入一個數與局部處理對象。當遞推進入一個 簡單問題簡單問題 的時候。的時候。這套參數與局部對象便隱藏起來這套參數與局部對象便隱藏起來, ,在解簡單問題的時候在解簡單問題的時候又有它自己的一套。當回歸時又有它自己的一套。當回歸時, ,原問題的一套參數與局原問題的一套參數與局部處理對象又活躍起來了。部處理對象又活

11、躍起來了。(2 2)回歸到原問題已經得到問題的解)回歸到原問題已經得到問題的解, ,回歸并不引起其回歸并不引起其他動作。他動作。2021/8/616遞歸的例子計算n!根據公式 n!=1 當n=0 =n*(n-1)! 當n!=0函數參數為nint f(int n) if (!n) return 1; else return (n*f(n-1); 2021/8/617遞歸的例子斐波那契數列(fibonacci)f(0)=0f(1)=1f(n)=f(n-1)+f(n-2) (n=2)int f(int n) if (!n) return 0; elseif (n=1) return 1 ; else

12、 return(f(n-1)+f(n-2);2021/8/618梵塔問題算法分析:算法分析:用用A A、B B、C C分別表示三根針分別表示三根針將將n n個盤由個盤由A A移到移到C C上的操作步驟為:上的操作步驟為:(1 1)將)將A A上的上的n-1n-1個盤借助個盤借助C C移到移到B B上上(2 2)把)把A A上剩下的一個盤由上剩下的一個盤由A A移到移到C C上上(3 3)將)將B B上的上的n-1n-1個盤借助個盤借助A A移到移到C C上上這樣處理后這樣處理后, ,問題的規模減少問題的規模減少1 1。當。當n=1n=1的的時候,就可以直接處理了。時候,就可以直接處理了。202

13、1/8/619窮舉演算n = 3A B CA B CA B CA B C( 1 )( 2 ) A TO C( 3 ) A TO B(4) C TO B2021/8/620窮舉演算(續) A B C( 5 ) A TO C A B CA B CA B C( 6 ) B TO A (7 ) B TO C (8 ) A TO C 2021/8/621梵塔問題:子程序/* 程序HANOI.C: 梵塔問題-*/#include #define N 3void move(int from, int to) printf(From %c to %cn, from, to);void hanoi(int n,

14、 int p1, int p2, int p3) if(n=1) move(p1, p3); else hanoi(n-1, p1, p3, p2); move(p1, p3); hanoi(n-1, p2, p1, p3); /* 測試用主函數 */ main() hanoi(N, A, B, C);2021/8/622當n=64時,移動次數=?花費時間=? h(n)=2h(n-1)+1 = 2(2h(n-2)+1)+1=22h(n-2)+2+1 = 23h(n-3)+22+2+1 =2nh(0)+2n-1+22+2+1 = 2n-1+22+2+1=2n-1需要移動盤子的次數為: 264-1

15、=184467440737095516152021/8/623假定每秒移動一次,一年有31536000秒,則僧侶們一刻不停地來回搬動,也需要花費大約5849億年的時間。假定計算機以每秒1000萬個盤子的速度進行搬遷,則需要花費大約58490年的時間。這樣的問題也稱為難解問題,雖然理論上可以解決,但是在n值比較大的情況下,計算時間太大。對于此類問題,人類也一直在尋找是否有更快的計算算法。2021/8/6242.3 算法復雜性中的難解性問題、P類問題和NP類問題 算法復雜性包括算法的空間以及時間兩方面的復雜性問題,梵天塔問題主要講的是算法的時間復雜性。2021/8/625 關于梵天塔問題算法的時間

16、復雜度,可以用一個指數函數O(2n)來表示,顯然,當n很大(如10000)時,計算機是無法處理的。相反,當算法的時間復雜度的表示函數是一個多項式,如O(n2)時,則可以處理。因此,一個問題求解算法的時間復雜度大于多項式(如指數函數)時,算法的執行時間將隨n的增加而急劇增長,以致即使是中等規模的問題也不能求解出來,于是在計算復雜性中,將這一類問題稱為難解性問題。人工智能領域中的狀態圖搜索問題(解空間的表示或狀態空間搜索問題)就是一類典型的難解性問題。2021/8/626 在計算復雜性理論中,將所有可以在多項式時間內求解的問題稱為P類問題,而將所有在多項式時間內可以驗證的問題稱為NP類問題。由于P

17、類問題采用的是確定性算法,NP類問題采用的是非確定性算法,而確定性算法是非確定性算法的一種特例,因此,可以斷定PNP。2021/8/6272.4 證比求易算法 為了更好地理解計算復雜性的有關概念,我國學者洪加威曾經講了一個被人稱為“證比求易算法”的童話,用來幫助讀者理解計算復雜性的有關概念,大致內容如下。 從前,有一個酷愛數學的年輕國王艾述向鄰國一位聰明美麗的公主秋碧貞楠求婚。公主出了這樣一道題:求出48 770 428 433 377 171的一個真因子。若國王能在一天之內求出答案,公主便接受他的求婚。2021/8/628 國王回去后立即開始逐個數地進行計算,他從早到晚,共算了三萬多個數,最

18、終還是沒有結果。國王向公主求情,公主將答案相告:223 092 827是它的一個真因子。國王很快就驗證了這個數確能除盡48 770 428 433 377 171。公主說:“我再給你一次機會,如果還求不出,將來你只好做我的證婚人了。”2021/8/629 國王立即回國,并向時任宰相的大數學家孔喚石求教,大數學家在仔細地思考后認為這個數為17位,則最小的一個真因子不會超過9位,他給國王出了一個主意:按自然數的順序給全國的老百姓每人編一個號發下去,等公主給出數目后,立即將它們通報全國,讓每個老百姓用自己的編號去除這個數,除盡了立即上報,賞金萬兩。2021/8/630順序算法和并行算法國王最先使用的是一種順序算法,其復雜性表現在時間方面,后面由宰相提出的是一種并行算法,其復雜性表現在空間方面。直覺上,我們認為順序算法解決不了的問題完全可以用并行算法來解決,甚至會想,并行計算機系統求解問題的速度將隨著處理器數目的不斷增加而不斷提高,從而解決難解性問題,其實

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論