標籤:資料結構 演算法 最短路徑 拓撲序列
本文是針對[資料結構基礎系列(7):圖]的第2組實踐常式。
(程式中graph.h是圖儲存結構的“演算法庫”中的標頭檔,詳情請單擊連結…)
0710 產生樹的概念
0711 最小產生樹的普裡姆演算法
0712 最小產生樹的克魯斯卡爾演算法
0713 從一個頂點到其餘各頂點的最短路徑
0714 每對頂點之間的最短路徑
0715 拓撲排序
0716 AOE網與關鍵路徑
紙上談兵:“知原理”檢驗題目
1、針對下面的圖1:
(圖1)
(1)寫出圖的鄰接矩陣;
(2)按照Prim演算法的思想,構造出最小產生樹;
(3)對照Prim演算法的實現,以作為參數g的值,用“畫一畫”的路線,走一遍演算法,畫出lowest[]和closest[]兩個輔助數組的變化過程,“觀察”演算法執行的過程,從而達到掌握演算法的目的;
(4)按照Kruskal演算法的思想,構造出最小產生樹;
(5)對照Kruskal演算法的實現,以作為參數g的值,用“畫一畫”的路線,走一遍演算法,畫出E[]和vest[]兩個輔助數組的變化過程,“觀察”演算法執行的過程,達到掌握演算法的目的;
2、針對下面的圖2
(圖2)
(1)寫出圖的鄰接矩陣;
(2)按照Dijkstra演算法的步驟,求出從頂點0到其餘所有頂點的最短路徑;
3、某鄉有A、B、C、D四個村莊,圖3中標識了各村之間的距離。現在要在某村莊修建中心俱樂部,請採用Floyd演算法
(圖3)
(1)求出各村莊之間的最短路徑;
(2)俱樂部的選址,應該使各村到俱樂部的距離之和最小,該選哪個村?
(3)寫出各村到中心俱樂部的路徑和路徑長度。
4、針對下面的圖4,儘可能多地寫出其拓撲序列
(圖4)
課後上機實踐
【項目 - 驗證演算法】運行並本周視頻中所講過的演算法,觀察結果並領會演算法。
(1)Prim演算法的驗證(使用圖1作為測試案例)
(2)Kruskal演算法的驗證(使用圖1作為測試案例)
(圖1)
[參考解答: (1) (2)]
(3)Dijkstra演算法的驗證(使用圖2作為測試案例)
(圖2)
[參考解答 ]
(4)Floyd演算法驗證(使用圖3作為測試案例)
(圖3)
[參考解答 ]
(5)拓撲排序演算法驗證(使用圖4作為測試案例)
(圖4)
[參考解答 ]
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
資料結構實踐項目——最短路徑和拓撲序列