月度归档:2022年04月

Dijkstra最短路径算法

戴克斯特拉算法(英语:Dijkstra’s algorithm),又译迪杰斯特拉算法,是由荷兰计算机科学家艾兹赫尔·戴克斯特拉在1956年发明的算法。戴克斯特拉算法使用类似广度优先搜索的方法解决赋权图的单源最短路径问题。

算法主要思路如下:

  1. minDist[]记录各节点到A的最短路径,初始化值为整数最大值M=Integer.MAX_VALUE。
  2. visited[]记录各节点的访问情况。
  3. 每次循环选取minDist中路径值最小且未被访问过的节点作为起点,路径值记为min,如果(min+该点到各节点的距离)<minDist记录的最短路径值则更新minDist记录值。
  4. 直到所有节点都被计算完,最终得到A点到各点的最短路径值并返回。

分步骤图示如下:

本文使用二维数组表示图,一维索引表示边的起点,0至5表示A至F节点。二维索引表示边的终点,0至5表示A至F节点。值表示边的长度,无法到达用M最大距离表示。

Java代码实现如下:

点击至Github查看代码