dijkstra算法例題_dijkstra算法原理_Dijkstra算法
本文關(guān)鍵詞:dijkstra算法,由筆耕文化傳播整理發(fā)布。
Dijkstra(迪杰斯特拉)算法是典型的最短路徑路由算法,用于計算一個節(jié)點(diǎn)到其他所有節(jié)點(diǎn)的最短路徑。主要特點(diǎn)是以起始點(diǎn)為中心向外層層擴(kuò)展,直到擴(kuò)展到終點(diǎn)為止。dijkstra算法能得出最短路徑的最優(yōu)解,但由于它遍歷計算的節(jié)點(diǎn)很多,所以效率低。
dijkstra算法是很有代表性的最短路算法,在很多專業(yè)課程中都作為基本內(nèi)容有詳細(xì)的介紹,如數(shù)據(jù)結(jié)構(gòu),圖論,運(yùn)籌學(xué)等等。
其基本思想是,設(shè)置頂點(diǎn)集合S并不斷地作貪心選擇來擴(kuò)充這個集合。一個頂點(diǎn)屬于集合S當(dāng)且僅當(dāng)從源到該頂點(diǎn)的最短路徑長度已知。
初始時,S中僅含有源。設(shè)u是G的某一個頂點(diǎn),把從源到u且中間只經(jīng)過S中頂點(diǎn)的路稱為從源到u的特殊路徑,并用數(shù)組dist記錄當(dāng)前每個頂點(diǎn)所對應(yīng)的最短特殊路徑長度。dijkstra算法每次從V-S中取出具有最短特殊路長度的頂點(diǎn)u,將u添加到S中,同時對數(shù)組dist作必要的修改。一旦S包含了所有V中頂點(diǎn),,dist就記錄了從源到所有其它頂點(diǎn)之間的最短路徑長度。
例如,對下圖中的有向圖,應(yīng)用dijkstra算法計算從源頂點(diǎn)1到其它頂點(diǎn)間最短路徑的過程列在下表中。
dijkstra算法的迭代過程:
主題好好理解上圖!
以下是具體的實現(xiàn)(C/C++):
#include
本文關(guān)鍵詞:dijkstra算法,由筆耕文化傳播整理發(fā)布。
本文編號:68701
本文鏈接:http://sikaile.net/wenshubaike/shangbiaozhuanli/68701.html