版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
迪杰斯特拉算法實現(xiàn)第九組11123529-羅凱耀11123575-王鳴迪杰斯特拉--算法思想按從某頂點到其它頂點的路徑長度遞增的方式,逐漸求到各頂點的最短路徑。設(shè)給定源點為Vs,S為已求得最短路徑的終點集,開始時令S={Vs}。當(dāng)求得第一條最短路徑(Vs,Vi)后,S為{Vs,Vi}。根據(jù)以下結(jié)論可求下一條最短路徑。設(shè)下一條最短路徑終點為Vj,那么Vj只有:◆源點到終點有直接的弧<Vs,Vj>;◆從Vs出發(fā)到Vj的這條最短路徑所經(jīng)過的所有中間頂點必定在S中。即只有這條最短路徑的最后一條弧才是從S內(nèi)某個頂點連接到S外的頂點Vj。假設(shè)定義一個數(shù)組dist[n],其每個dist[i]分量保存從Vs出發(fā)中間只經(jīng)過集合S中的頂點而到達(dá)Vi的所有路徑中長度最小的路徑長度值,那么下一條最短路徑的終點Vj必定是不在S中且值最小的頂點,即:dist[i]=Min{dist[k]|Vk∈V-S}利用上述公式就可以依次找出下一條最短路徑。迪杰斯特拉-算法思想源迪杰斯特拉算法
--數(shù)據(jù)組織源有n個結(jié)點的網(wǎng)絡(luò)數(shù)據(jù)源已確定結(jié)點集S待選結(jié)點集V-S結(jié)點臨時最短路徑長度結(jié)點臨時最短路徑迪杰斯特拉算法—步驟①令S={Vs},用帶權(quán)的鄰接矩陣表示有向圖,對圖中每個頂點Vi按以下原那么置初值:②選擇一個頂點Vj,使得:Distance[j]=Min{Distance[k]|Vk∈V-S}Vj就是求得的下一條最短路徑終點,將Vj并入到S中,即S=S∪{Vj}。③對V-S中的每個頂點Vk,修改dist[k],方法是:假設(shè)Distance[j]+Wjk<Distance[k],那么修改為:Distance[k]=Distance[j]+Wjk(Vk∈V-S)④重復(fù)②,③,直到S=V為止。Wsii≠s且<vs,vi>∈E,wsi為弧上的權(quán)值∞i≠s且<vs,vi>不屬于Edist[i]=0i=s迪杰斯特拉算法—實現(xiàn)voidDijkstra(MGraphg,intstart,intend){intdist[MAXV],path[MAXV];ints[MAXV];intmindis,i,j,u;for(i=0;i<g.n;i++){dist[i]=g.edges[start][i];//dist數(shù)組初始化s[i]=0;if(g.edges[start][i]<INF) path[i]=start;else path[i]=-1;//path數(shù)組初始化}s[start]=1;//頂點start參加頂點集合s path[start]=0;for(i=0;i<g.n;i++)//選擇不在集合s中且具有最短路徑的頂點{mindis=INF;for(j=0;j<g.n;j++){if(s[j]==0&&dist[j]<mindis){u=j;mindis=dist[j];}}s[u]=1;//將頂點u參加集合for(j=0;j<g.n;j++)//修改dist和path{if(s[j]==0){ if((g.edges[u][j]<INF)&&(dist[u]+g.edges[u][j]<dist[j])){dist[j]=dist[u]+g.edges[u][j];path[j]=u;}}}}Dispath(g,dist,path,s,g.n,start,end);}EFDBCA8253018107154úúúúúúúú?ùêêêêêêêê?饥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥0181004070158023050BACDEFBACDEF運(yùn)算過程表鄰接矩陣圖數(shù)據(jù)源——鄰接矩陣已確定結(jié)點集S待選結(jié)點集V-S結(jié)點臨時最短路徑長度——Distance數(shù)組結(jié)點臨時最短路徑——Path數(shù)組Dijkstra算法--數(shù)據(jù)組織運(yùn)算過程表Dijkstra算法—例子EFDBCA8253018107154úúúúúúúú?ùêêêêêêêê?饥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥0181004070158023050BACDEFBACDEF鄰接矩陣圖例:計算從A點出發(fā)的單源最短路徑運(yùn)算過程表Dijkstra算法—例子EFDBCA8253018107154úúúúúúúú?ùêêêêêêêê?饥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥0181004070158023050BACDEFBACDEF鄰接矩陣圖例:計算從A點出發(fā)的單源最短路徑運(yùn)算過程表Dijkstra算法—例子EFDBCA8253018107154úúúúúúúú?ùêêêêêêêê?饥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥0181004070158023050BACDEFBACDEF鄰接矩陣圖例:計算從A點出發(fā)的單源最短路徑運(yùn)算過程表Dijkstra算法—例子EFDBCA8253018107154úúúúúúúú?ùêêêêêêêê?饥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥0181004070158023050BACDEFBACDEF鄰接矩陣圖例:計算從A點出發(fā)的單源最短路徑運(yùn)算過程表Dijkstra算法—例子EFDBCA8253018107154úúúúúúúú?ùêêêêêêêê?饥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥0181004070158023050BACDEFBACDEF鄰接矩陣圖例:計算從A點出發(fā)的單源最短路徑運(yùn)算結(jié)果Dijkstra算法—例子úúúúúúúú?ùêêêêêêêê?饥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥0181004070158023050BACDEFBACDEF鄰接矩陣圖EFDBCA8510715通過Distance數(shù)組得到最短路徑長度:D:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年醫(yī)療、外科、牙科或獸醫(yī)用家具投資申請報告
- 2024年非甾體抗炎藥物投資申請報告
- 云計算導(dǎo)論(微課版) 課件 項目2 初探虛擬化
- 2024年秋一年級上冊1秋天 公開課一等獎創(chuàng)新教案
- 《守株待兔》公開課一等獎創(chuàng)新教案
- 19-《一顆小桃樹》公開課一等獎創(chuàng)新教學(xué)設(shè)計
- 識字3 口耳目手足 同步分層作業(yè)-2024-2025學(xué)年語文一年級上冊(統(tǒng)編版·2024秋)
- 考研數(shù)學(xué)二分類模擬249
- 考研數(shù)學(xué)二分類模擬196
- 藥理學(xué)智慧樹知到答案2024年臨沂大學(xué)
- 反滲透進(jìn)水水質(zhì)分析報告
- 長沙烘焙行業(yè)前景分析
- 《航拍應(yīng)用》課件
- 人工智能技術(shù)在智能農(nóng)業(yè)中的應(yīng)用研究
- 脾胃的知識講座
- 人工智能訓(xùn)練師的工作內(nèi)容
- 醫(yī)藥經(jīng)理的銷售管理技巧
- 提高患者胰島素注射的規(guī)范率課件
- 《五軸編程教程》課件
- 2024年度中學(xué)生交通安全教育
- 制糖業(yè)風(fēng)險防控策略研究報告
評論
0/150
提交評論