天堂国产午夜亚洲专区-少妇人妻综合久久蜜臀-国产成人户外露出视频在线-国产91传媒一区二区三区

dijkstra算法原理_dijkstra算法演示_Dijkstra(迪杰斯特拉)算法分析與實現(xiàn)(C/C++)

發(fā)布時間:2016-07-10 21:02

  本文關(guān)鍵詞:dijkstra算法,由筆耕文化傳播整理發(fā)布。


最短路徑算法—Dijkstra(迪杰斯特拉)算法分析與實現(xiàn)(C/C++)

接上一篇:最短路徑算法—Bellman-Ford(貝爾曼-福特)算法分析與實現(xiàn)(C/C++)

 

Dijkstra(迪杰斯特拉)算法是典型的最短路徑路由算法,用于計算一個節(jié)點到其他所有節(jié)點的最短路徑。主要特點是以起始點為中心向外層層擴展,直到擴展到終點為止。dijkstra算法能得出最短路徑的最優(yōu)解,但由于它遍歷計算的節(jié)點很多,所以效率低。

  dijkstra算法是很有代表性的最短路算法,在很多專業(yè)課程中都作為基本內(nèi)容有詳細的介紹,如數(shù)據(jù)結(jié)構(gòu),,圖論,運籌學(xué)等等。

其基本思想是,設(shè)置頂點集合S并不斷地作貪心選擇來擴充這個集合。一個頂點屬于集合S當且僅當從源到該頂點的最短路徑長度已知。

初始時,S中僅含有源。設(shè)u是G的某一個頂點,把從源到u且中間只經(jīng)過S中頂點的路稱為從源到u的特殊路徑,并用數(shù)組dist記錄當前每個頂點所對應(yīng)的最短特殊路徑長度。dijkstra算法每次從V-S中取出具有最短特殊路長度的頂點u,將u添加到S中,同時對數(shù)組dist作必要的修改。一旦S包含了所有V中頂點,dist就記錄了從源到所有其它頂點之間的最短路徑長度。

例如,對下圖中的有向圖,應(yīng)用dijkstra算法計算從源頂點1到其它頂點間最短路徑的過程列在下表中。

dijkstra算法原理_dijkstra算法演示_Dijkstra(迪杰斯特拉)算法分析與實現(xiàn)(C/C++)

 

dijkstra算法的迭代過程:

dijkstra算法原理_dijkstra算法演示_Dijkstra(迪杰斯特拉)算法分析與實現(xiàn)(C/C++)

主題好好理解上圖!

以下是具體的實現(xiàn)(C/C++):

 

 

 

 

輸入數(shù)據(jù):
5
7
1 2 10
1 4 30
1 5 100
2 3 50
3 5 10
4 3 20
4 5 60
輸出數(shù)據(jù):
999999 10 999999 30 100
10 999999 50 999999 999999
999999 50 999999 20 10
30 999999 20 999999 60
100 999999 10 60 999999
源點到最后一個頂點的最短路徑長度: 60
源點到最后一個頂點的路徑為: 1 -> 4 -> 3 -> 5

最后給出兩道題目練手,都是直接套用模版就OK的:
1.HDOJ 1874 暢通工程續(xù)
?p=1894

2.HDOJ 2544 最短路
?p=1892

 

posted on


  本文關(guān)鍵詞:dijkstra算法,由筆耕文化傳播整理發(fā)布。



本文編號:68702

資料下載
論文發(fā)表

本文鏈接:http://sikaile.net/wenshubaike/shangbiaozhuanli/68702.html


Copyright(c)文論論文網(wǎng)All Rights Reserved | 網(wǎng)站地圖 |

版權(quán)申明:資料由用戶57c63***提供,本站僅收錄摘要或目錄,作者需要刪除請E-mail郵箱bigeng88@qq.com