課本源碼部分
第7章 圖 - 最短路徑算法
——《數據結構》-嚴蔚敏.吳偉民版
源碼使用說明 鏈接☛☛☛ 《數據結構-C語言版》(嚴蔚敏,吳偉民版)課本源碼+習題集解析使用說明
課本源碼合輯 鏈接☛☛☛ 《數據結構》課本源碼合輯
習題集全解析 鏈接☛☛☛ 《數據結構題集》習題解析合輯
本源碼引入的文件 鏈接☛ Status.h、MGraph.c
文檔中源碼及測試數據存放目錄:數據結構\▲課本算法實現\▲07 圖\11 ShortestPath
概述
計算最短路徑的常用算法是弗洛伊德(Floyd)算法和迪傑斯特拉(Dijkstra)算法。
解析
在有向網中,Dijkstra算法用來計算網中某一點到其它各頂點的最短路徑,Floyd算法用來計算任意一對頂點間的最短路徑。
Dijkstra算法應用了貪心算法模式,其主要特點是每次迭代時選擇的下一個頂點是標記點之外距離源點最近的頂點。由於Dijkstra算法主要計算從源點到其他所有點的最短路徑,所以算法的效率較低。
Floyd算法應用了動態規划策略,其特點是不斷對新加入的結點構成的路徑與之前的路徑做對比,看是否可以使之前找到的路徑更優。
源碼
文件一 ☛ ShortestPath.h
文件二 ☛ ShortestPath.c
文件三 ☛ ShortestPath-main.c (測試文檔)
文件四、文件五 ☛ TestData_DN_M_DIJ.txt、TestData_DN_M_Floyd.txt(最短路徑算法測試數據)
測試結果展示