對於網圖:最短路徑是指兩頂點之間經過的邊上權值之和最小的路徑
對於非網圖:最短路徑是指兩頂點之間邊數最小的路徑,因為邊的權值都為1
演算法思想:
1 首先定義兩個陣列pathmatirx[i] , shortpathtable[k]。
pathmatirx陣列它的序號 i 代表頂點序號,而對應的元素則是最短路徑上,它的前繼頂點的序號
shortpathtable陣列它的序號 k 依然是代表頂點序號,而元素則代表當前所找到的最短路徑的權值和。
2 定義乙個臨時陣列final[k],它的序號代表頂點序號,如果它對應元素為1,則代表該頂點已經找到最小陣列了,否則,反之。
3 初始化定義的三個陣列,shortpathtable陣列直接賦值第乙個頂點的鄰接矩陣行值,其它兩個均賦值0.shortpathtable[0]需賦值0(自己跟自己路徑為0),final[0]也是賦值0(預設找到自己到自己的最短路徑)
4 開始大迴圈,除去起始頂點,剩餘n-1個頂點,故迴圈從一開始。大迴圈迴圈一次,就能找到起始頂點到某乙個頂點的最短路徑。大迴圈裡面有兩個小迴圈。
5 第乙個小迴圈負責找到與當前頂點相連,未被訪問的下乙個頂點的最小路徑,並且記錄下這個頂點序號和路徑最小值。
6 第二個迴圈,根據上面找到的頂點和最小值,看看這個頂點下一步連哪個頂點最短,並且檢查從這裡連線是不是比原來更短,並記錄前繼頂點。
**如下:
typedef
int pathmatirx[maxvex]
;typedef
int shortpathtable[maxvex]
;void
shortestpath_dijkstra
(grph g,
int v0,pathmatirx *p,shortpathtable *d)
final[0]
=1;(
*d)[v0]=0
;for
(i =
1; i < g.numvertexes; i++)}
final[k]=1
;for
(j =
1; j < g.numvertexes; j++)}
}}
「抽象」《大話資料結構》第七章 關鍵路徑
aoe網 在乙個表示工程的帶權有向圖中,用頂點表示事件 比如 發動機造好啦 用有向邊表示活動 比如 我正在造發動機 用邊上的權值表示活動的持續時間 比如 造發動機需要3天 這種有向圖的邊表示的活動的往,就是aoe網。這個網有乙個源點和乙個匯點,源點到匯點的最長路徑稱作關鍵路徑,關鍵路徑上的活動稱為關...
「抽象」《大話資料結構》第七章 拓撲排序
拓撲序列 設g v,e 是乙個具有n個頂點的有向圖,v中的頂點序列 v1,v2,v3,vn,滿足若從頂點vi到vj有一條路徑,則在頂點序列中頂點vi比在頂點vj之前。我們稱這樣的頂點序列為乙個拓撲序列。拓撲排序 就是對乙個有向圖構造拓撲序列的過程。演算法的實現是基於鄰接表的儲存結構。思想 1 定義乙...
資料結構第七章
平衡二叉樹 基本思想 在構造二叉排序樹的過程中,每插入乙個 結點時,首先檢查是否因插入而破壞了樹的平衡性,若是,則找出最小不平衡子樹,在保持二叉排序樹特 性的前提下,調整最小不平衡子樹中各結點之間的鏈 接關係,進行相應的旋轉,使之成為新的平衡子樹 平衡二叉樹 或者是一棵空的二叉排序樹,或者是具 有下...