本文是針對[資料結構基礎系列(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 ...