「抽象」《大話資料結構》第七章 最短路徑

2021-10-06 20:32:59 字數 1173 閱讀 9714

對於網圖:最短路徑是指兩頂點之間經過的邊上權值之和最小的路徑

對於非網圖:最短路徑是指兩頂點之間邊數最小的路徑,因為邊的權值都為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 定義乙...

資料結構第七章

平衡二叉樹 基本思想 在構造二叉排序樹的過程中,每插入乙個 結點時,首先檢查是否因插入而破壞了樹的平衡性,若是,則找出最小不平衡子樹,在保持二叉排序樹特 性的前提下,調整最小不平衡子樹中各結點之間的鏈 接關係,進行相應的旋轉,使之成為新的平衡子樹 平衡二叉樹 或者是一棵空的二叉排序樹,或者是具 有下...