資料結構實踐專案 最短路徑和拓撲序列

2021-07-07 05:10:27 字數 1500 閱讀 2049

本文是針對[資料結構基礎系列(7):圖]的第2組實踐例程。

(程式中graph.h是圖儲存結構的「演算法庫」中的標頭檔案,詳情請單擊鏈結…)

0710 生成樹的概念

0711 最小生成樹的普里姆演算法

0712 最小生成樹的克魯斯卡爾演算法

0713 從乙個頂點到其餘各頂點的最短路徑

0714 每對頂點之間的最短路徑

0715 拓撲排序

0716 aoe網與關鍵路徑

1、針對下面的圖1:

(1)寫出圖的鄰接矩陣;

(2)按照prim演算法的思想,構造出最小生成樹;

(3)對照prim演算法的實現,以上圖作為引數g的值,用「畫一畫」的路線,走一遍演算法,畫出lowest和closest兩個輔助陣列的變化過程,「觀察」演算法執行的過程,從而達到掌握演算法的目的;

(4)按照kruskal演算法的思想,構造出最小生成樹;

(5)對照kruskal演算法的實現,以上圖作為引數g的值,用「畫一畫」的路線,走一遍演算法,畫出e和vest兩個輔助陣列的變化過程,「觀察」演算法執行的過程,達到掌握演算法的目的;

2、針對下面的圖2

(1)寫出圖的鄰接矩陣;

(2)按照dijkstra演算法的步驟,求出從頂點0到其餘所有頂點的最短路徑;

3、某鄉有a、b、c、d四個村莊,圖3中標識了各村之間的距離。現在要在某村莊修建中心俱樂部,請採用floyd演算法

(1)求出各村莊之間的最短路徑;

(2)俱樂部的選址,應該使各村到俱樂部的距離之和最小,該選哪個村?

(3)寫出各村到中心俱樂部的路徑和路徑長度。

4、針對下面的圖4,盡可能多地寫出其拓撲序列

(3)dijkstra演算法的驗證(使用圖2作為測試用例)

[參考解答 ]

(4)floyd演算法驗證(使用圖3作為測試用例)

[參考解答 ]

(5)拓撲排序演算法驗證(使用圖4作為測試用例)

[參考解答 ]

資料結構實踐專案 最短路徑和拓撲序列

本文是針對 資料結構基礎系列 7 圖 的第2組實踐例程。程式中graph.h是圖儲存結構的 演算法庫 中的標頭檔案,詳情請單擊鏈結 0710 生成樹的概念 0711 最小生成樹的普里姆演算法 0712 最小生成樹的克魯斯卡爾演算法 0713 從乙個頂點到其餘各頂點的最短路徑 0714 每對頂點之間的...

資料結構和演算法 最短路徑

dijstra 演算法 void shortestpath dij mgraph g,int v0,bool path maxvertexnum maxvertexnum int pathlen pathlen v0 0 final v0 true 將 v0加 頂點集合 s 開始主迴圈,每次求得 v...

資料結構 最短路徑 Dijkstra

include stdio.h include stdlib.h include io.h include math.h include time.h define ok 1 define error 0 define true 1 define false 0 define maxedge 20 ...