课本源码部分
第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(最短路径算法测试数据)
测试结果展示