Advertisement

将Dijkstra算法用C语言实现为图的最短路径计算工具

阅读量:

Dijkstra算法基于动态规划的原理,其核心思想是按照路径长度由小到大的顺序逐步生成最短路径。

该算法中涉及三个关键数组,其中final[w]用于标识下标为w的节点是否已经确定了最短路径,当其值为1时,表示该节点的最短路径已计算完成。

D[w]则记录了下标为w的节点对应的最短路径的权重总和。

P[w]用于存储下标为w的节点在最短路径中的前驱节点的索引信息。

当算法执行完毕后,通过返回D和P两个数组,即可获取从起始节点v0到图中任意节点的最短路径序列及其对应的距离值。

在实现过程中,所采用的数据结构为图的邻接矩阵形式。

上述代码已在DEV C++环境中成功运行并通过验证。

复制代码
 #include <stdio.h>  
    
                                          
    
 #define INFINITY 65535
    
  
    
 typedef int VertexType;   //顶点是字符型
    
 typedef int EdgeType;   //边是整型
    
 typedef struct    //图的邻接矩阵存储结构
    
 {  
    
  
    
     VertexType vexs[9];  //顶点向量  
    

全部评论 (0)

还没有任何评论哟~