class graph
;template
void graph::creat_graph()
template
void graph:: show_shortestpath()
template
void graph::shortestpath_dij()
d[v0]=0; final[v0]=true;
for(i=1;i<=vexnum;i++)
if(i==v0) continue;
min=int_max;
for(w=1;w<=vexnum;w++)
if(!final[w])
if(d[w]final[v]=true;
for(w=1;w<=vexnum;w++)
if(!final[w]&&(min+arcs[v][w]
d[w]=min+arcs[v][w];
for(j=0;j<=vexnum;j++)
path[w][j]=path[v][j];
path[w][w]=++path[w][0];
}int main()
4.除錯分析:
。經分析後將t賦值為char,當使用者輸入的r的元素為int時,我們可以將其轉化為char在進行後續操作,從而實現對使用者輸入的關係r中元素的無限制。
在類graph的模板外定義成員函 g.creat_graph()﹑g.shortestpath_dij()﹑
g.shortestpath_dij()時,由於成員函式中有型別引數存在,則需要在函式外進行模組宣告,並且在函式名字首上「類名《型別引數》∷」。
5.執行結果:
下圖為有向圖g的帶權鄰接矩陣,運用dijkstra演算法計算從a到其餘各頂點的最短路徑以及其長度。
a b c d e f
分析可知:
a10 ∞ 30 100從a到c的最短路徑為:ac,其長度為10;
b5從a到e的最短路徑為:a->e,其長度為30;
c50從a到d的最短路徑為:ae->d,其長度為50;
d10從a到f的最短路徑為:ae->d->f,其長度為60;
e20 ∞ 60而從a無法到達b。
f易知:執行結果完全正確。
Dijkstra最短路徑演算法實習報告
1.引言 交通誘導系統的乙個核心技術是最優路徑的選擇技術。根據交通網路模型中各頂點和頂點之間的長度 時間或費用等屬性權值,通過dijkstra最短路徑演算法,解決有向圖即交通網路模型中源點到其他頂點的最短路徑問題。2.建立交信道路網路模型 交信道路網是路徑誘導的基礎和物件,首先需要建立交信道路網路模...
最短路徑演算法 三種演算法簡介
dijkstra演算法,a 演算法和d 演算法 dijkstra演算法是典型最短路演算法,用於計算乙個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。dijkstra演算法能得出最短路徑的最優解,但由於它遍歷計算的節點很多,所以效率低。dijkstra...
最短路徑問題 專題
初中數學中最短路徑問題雖然只是乙個課題學習,但它在中學數學中的地位很重要,是大考 小考 競賽中經常涉及的乙個考點。所以我們要對它有足夠的重視。初中最短路徑問題主要針對軸對稱圖形考慮的。那麼只要涉及軸對稱圖形就有可能產生最短路徑問題。在此之前,我們接觸過的最短距離問題是 1 兩點間直線段最短 2 點到...