最短路徑問題的幾個算法.doc

最短路徑問題的幾個算法.doc

ID:62040951

大?。?06.00 KB

頁數(shù):16頁

時間:2021-04-16

最短路徑問題的幾個算法.doc_第1頁
最短路徑問題的幾個算法.doc_第2頁
最短路徑問題的幾個算法.doc_第3頁
最短路徑問題的幾個算法.doc_第4頁
最短路徑問題的幾個算法.doc_第5頁
資源描述:

《最短路徑問題的幾個算法.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、個人收集整理勿做商業(yè)用途      最短路徑問題)r+g ?。?[5p) W)J 最短路徑問題是一個非常能聯(lián)系實際的問題,某人想從城市A出發(fā)游覽各城市一遍,而所用費用最少。試編程序輸出結(jié)果。?/c+r2x8 S7j!N4z  解這類題時同學(xué)們往往不得要領(lǐng),不少同學(xué)采用窮舉法把所有可能的情況全部列出,再找出其中最短的那條路徑;或是采用遞歸或深度搜索,找出所有路徑,再找出最短的那條。這兩種方法可見都是費時非常多的解法,如果城市數(shù)目多的話則很可能要超時了。?/ N%M0K*[&X2 A&U4l.}/f實際上我們知道,遞歸、深度搜索

2、等算法一般用于求所有解問題(例如求A出發(fā)每個城市走一遍一共有哪幾種走法),而這幾種算法對于求最短路徑這類最優(yōu)解問題顯然是不合適的,以下介紹的幾種算法就要優(yōu)越很多。:V7 @)v"g3\ 首先,對于這類圖我們都應(yīng)該先建立一個鄰接矩陣來存放任意兩點間的距離數(shù)據(jù),以便在程序中方便調(diào)用,如下:?(?。?b.x+V/e3Z%Y;yconstdis:array[1..5,1..5]ofinteger=((?。埃? 3,10,15),0 u; Y0Oi2L/i" ?            (?。? 0,5,13,12),?% U5D#

3、I&L/ F([)y( j9x6 o          (3,5, 0, 5,10),8I- f" E:D1 J?            (10,13,5, 0,11),$W"P1}8T,}+ px. S- Z!a           (15,12,10,11,?。?);#p!L4 

4、+ b;c)V 以下是幾種解法:3G3 c#u'e-I7y?一、寬度優(yōu)先搜索%O9O4 G3W,L9?。?Q9O?  寬度優(yōu)先搜索并不是一種很優(yōu)秀的算法,只里只是簡單介紹一下它的算法。$Q"s5d,b$N/c3V,?+Z具體方法是:2 c d6

5、Y)/ t9h3c/i1、從A點開始依次展開得到AB、AC、AD、AE四個新結(jié)點(第二層結(jié)點),當(dāng)然每個新結(jié)點要記錄下其距離;?1?1g,G.

6、'n#D*O) ^8 A  2、個人收集整理勿做商業(yè)用途再次以AB展開得到ABC、ABD、ABE三個新結(jié)點(第三層結(jié)點),而由AC結(jié)點可展開得到ACB、ACD、ACE三個新結(jié)點,自然AD可以展開得到ADB、ADC、ADE,AE可以展開得到AEB、AEC、AED等新結(jié)點,對于每個結(jié)點也須記錄下其距離;5n.?。? ^"B5`7A;v 3、 再把第三層結(jié)點全部展開,得到所有的第四層結(jié)點

7、:ABCD、ABCE、ABDC、ABDE、BEC、ABED……AEDB、AEDC,每個結(jié)點也需記錄下其距離;?$u) ]%i;V8m0 ~0m6p  4、再把第四層結(jié)點全部展開,得到所有的第五層結(jié)點:ABCDE、ABCED、……、AE 1\5 {2`0?。? IV*h?DBC、AEDCB,每個結(jié)點也需記錄下其距離;"@;v2Y/ T.[(]1r9Y  5、到此,所有可能的結(jié)點均已展開,而第五層結(jié)點中最小的那個就是題目的解了。?2w3R4 O"Q. c+q;R+R7q3]  由上可見,這種算法也是把所有的可能路徑都列出來再找最

8、短的那條,顯而易見這也是一種很費時的算法。)p.?+X5 c:?。拢? u4 j7O 二、A*算法#K4e4

9、-I$x+O1y#@8 }A*算法是在寬度優(yōu)先搜索算法的基礎(chǔ)上,每次并不是把所有可展的結(jié)點展開,而是對所有沒有展開的結(jié)點,利用一個自己確定的估價函數(shù)對所有沒展開的結(jié)點進(jìn)行估價,從而找出最應(yīng)該被展開的結(jié)點(也就是說我們要找的答案最有可能是從該結(jié)點展開),而把該結(jié)點展開,直到找到目標(biāo)結(jié)點為止。2_0Z.d;G* A(?。? [&W9V* [?這種算法最關(guān)鍵的問題就是如何確定估價函數(shù),估價函數(shù)越準(zhǔn)則越快找到答案。A*算法

10、實現(xiàn)起來并不難,只不過難在找準(zhǔn)估價函數(shù),大家可以自已找資料看看。/ D1T7 [1u+ E8b 三、等代價搜索法  0J3J$W(z%c/m5?:lk)?。?K個人收集整理勿做商業(yè)用途 等代價搜索法也是基于寬度優(yōu)先搜索上進(jìn)行了部分優(yōu)化的一種算法,它與A*算法的相似之處都是每次只展開某一個結(jié)點(不是展開所有結(jié)點),不同之處在于:它不需要去另找專門的估價函數(shù),而是以該結(jié)點到A點的距離作為估價值,也就是說,等代價搜索法是A*算法的一種簡化版本。它的大體思路是:?:}E! kO p  1、從A點開始依次展開得到AB(7)、AC(3)

11、、AD(10)、AE(15)四個新結(jié)點,把第一層結(jié)點A標(biāo)記為已展開,并且每個新結(jié)點要記錄下其距離(括號中的數(shù)字);0 z G0p3V(K"X? 2、把未展開過的AB、AC、AD、AE四個結(jié)點中距離最小的一個展開,即展開AC(3)結(jié)點,得到ACB(8)、ACD(16)、ACE(13)三個結(jié)點

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。