實驗1.貪心法求解單源最短路徑問題.doc

實驗1.貪心法求解單源最短路徑問題.doc

ID:48366422

大小:52.51 KB

頁數(shù):5頁

時間:2019-11-28

實驗1.貪心法求解單源最短路徑問題.doc_第1頁
實驗1.貪心法求解單源最短路徑問題.doc_第2頁
實驗1.貪心法求解單源最短路徑問題.doc_第3頁
實驗1.貪心法求解單源最短路徑問題.doc_第4頁
實驗1.貪心法求解單源最短路徑問題.doc_第5頁
資源描述:

《實驗1.貪心法求解單源最短路徑問題.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、實驗1.貪心法求解單源最短路徑問題實驗內(nèi)容本實驗要求基于算法設(shè)計與分析的一般過程(即待求解問題的描述、算法設(shè)計、算法描述、算法正確性證明、算法分析、算法實現(xiàn)與測試)。應(yīng)用貪心策略求解有向帶權(quán)圖的單源最短路徑問題。實驗?zāi)康膗通過本次實驗,掌握算法設(shè)計與分析的一般過程,以及每個步驟的基本方法。并應(yīng)用貪心法求解單源最短路徑問題。環(huán)境要求對于環(huán)境沒有特別要求。對于算法實現(xiàn),可以自由選擇C,C++,Java,甚至于其他程序設(shè)計語言。實驗步驟步驟1:理解問題,給出問題的描述。步驟2:算法設(shè)計,包括策略與數(shù)據(jù)結(jié)構(gòu)的選擇步驟3:描述算法。希望采用源代碼以外的

2、形式,如偽代碼、流程圖等;步驟4:算法的正確性證明。需要這個環(huán)節(jié),在理解的基礎(chǔ)上對算法的正確性給予證明;步驟5:算法復(fù)雜性分析,包括時間復(fù)雜性和空間復(fù)雜性;步驟6:算法實現(xiàn)與測試。附上代碼或以附件的形式提交,同時貼上算法運行結(jié)果截圖;步驟7:技術(shù)上、分析過程中等各種心得體會與備忘,需要言之有物。說明:步驟1-6在“實驗結(jié)果”一節(jié)中描述,步驟7在“實驗總結(jié)”一節(jié)中描述。實驗結(jié)果1.問題描述給定一個有向帶全圖G=(V,E),其中每條邊的權(quán)是一個非負實數(shù)。另外,給定V中的一個頂點,稱為源點。現(xiàn)在要計算源點到所有其他各個頂點的最短路徑長度,這里的路徑

3、長度是指路徑上所有經(jīng)過邊的權(quán)值之和。這個問題通常稱為單源最短路徑問題。2.(1)Dijkstra算法思想按各個結(jié)點與源點之間路徑長度的非減次序,生成源點到各個結(jié)點的最短路徑的方法。即先求出長度最短的一條路徑,再參照它求出長度次短的一條路徑。依此類推,直到從源點到其它各結(jié)點的最短路徑全部求出為止。1959年提出的,但當時并未發(fā)表。因為在那個年代,算法基本上不被當做一種科學(xué)研究的問題。(2)Dijkstra算法設(shè)計集合S與V-S的劃分:假定源點為u。集合S中的結(jié)點到源點的最短路徑的長度已經(jīng)確定,集合V-S中所包含的結(jié)點到源點的最短路徑的長度待定。

4、特殊路徑:從源點出發(fā)只經(jīng)過S中的結(jié)點到達V-S中的結(jié)點的路徑。貪心策略:選擇特殊路徑長度最短的路徑,將其相連的V-S中的結(jié)點加入到集合S中。3、描述算法Dijkstra算法的偽代碼:DIJKSTRA(G,w,s)INITIALIZE-SINGLE-SOURCE(G,s)S=ΦQ=G.V//V-S中的結(jié)點按特殊路徑長度非減排序whileQ≠Φu=EXTRACT-MIN(Q)S=S∪{u}foreachv∈G.Adj[u]RELAX(u,v,w)4、Dijkstra算法的求解步驟:步驟1:設(shè)計合適的數(shù)據(jù)結(jié)構(gòu)。帶權(quán)鄰接矩陣C記錄結(jié)點之間的權(quán)值,數(shù)組

5、dist來記錄從源點到其它頂點的最短路徑長度,數(shù)組p來記錄最短路徑。u為源點;步驟2:初始化。令集合S={u},對于集合V-S中的所有頂點x,設(shè)置dist[x]=C[u][x]。如果頂點x與源點相鄰,設(shè)置p[x]=u;否則,p[x]=-1;步驟3:貪心選擇結(jié)點。在集合V-S中依照貪心策略來尋找使得dist[x]具有最小值的頂點t,t就是集合V-S中距離源點u最近的頂點。步驟4:更新集合S和V-S。將頂點t加入集合S中,同時更新集合V-S;步驟5:判斷算法是否結(jié)束。如果集合V-S為空,算法結(jié)束。否則,轉(zhuǎn)步驟6;步驟6:對相關(guān)結(jié)點做松弛處理。對集

6、合V-S中的所有與頂點t相鄰的頂點x,如dist[x]>dist[t]+C[t][x],則dist[x]=dist[t]+C[t][x]并設(shè)置p[x]=t。轉(zhuǎn)步驟3。5、Dijkstra算法的正確性證明–貪心選擇性質(zhì):采用歸納法。當S={s,p}時,則除源結(jié)點s之外的所有結(jié)點中,結(jié)點p到源點s的距離最短。這是顯然的。假設(shè)當S={s,p1,…,pk}時,即k個結(jié)點p1,…,pk到源點s的距離最短。當S={s,p1,…,pk,pk+1}時,很顯然結(jié)點pk+1到源點s的距離是最短的。需證明:此時結(jié)點p1,…,pk到源點s的距離仍然是最短的。用反證法

7、假設(shè)當結(jié)點pk+1加入到S后,pi結(jié)點經(jīng)由結(jié)點pk+1到源點s的距離更短,即d(s,pk+1)+d(pk+1,pi)

8、tra算法采用貪心策略,按各個頂點與源點之間路徑長度遞增的次序,生成源點到各個頂點的最短路徑方法。先求出長度最短的一條路徑,在參照它求出長度次短的一條路徑,以此類推

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

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

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