迪杰斯特拉算法实现
时间: 2023-10-29 07:05:25 浏览: 102
迪杰斯特拉算法
迪杰斯特拉算法是一种解决有权图中最短路径问题的算法。它从一个起点出发,通过贪心算法的策略,每次选择距离起点最近且未访问过的顶点的邻接节点进行遍历,直到扩展到终点为止。该算法能够找到起点到其他每个顶点的最短距离。
算法的实现步骤如下:
1. 创建一个辅助数组dist[],用来记录起点到每个顶点的最短距离,初始化为无穷大。
2. 将起点的最短距离dist[start]设为0,并将其它顶点的最短距离初始化为无穷大。
3. 创建一个集合visited[],用来记录已经访问过的顶点,初始为空集。
4. 重复以下步骤,直到所有顶点都被访问过:
- 从未访问过的顶点中选择dist[]值最小的顶点u,将其标记为已访问(将u加入visited集合)。
- 遍历u的所有邻接节点v,如果从起点到v的路径通过u的距离更短,则更新dist[v]的值。
5. 最终,dist[]数组中记录的就是起点到每个顶点的最短距离。
阅读全文