求图(邻接矩阵存储)最短路径的狄克斯特拉算法
时间: 2023-03-16 12:50:20 浏览: 310
狄克斯特拉算法
狄克斯特拉算法是一种求解图中最短路径的算法,它基于贪心策略,每次选择当前距离起点最近的节点作为中间节点,更新起点到其他节点的距离。在邻接矩阵存储的图中,可以使用一个一维数组dist来记录起点到每个节点的距离,另一个一维数组visited来记录每个节点是否已经被访问过。具体步骤如下:
1. 初始化dist数组,将起点到自身的距离设为,其他节点的距离设为无穷大(表示不可达)。
2. 初始化visited数组,将起点标记为已访问。
3. 对于起点相邻的节点,更新其距离dist值,将其标记为已访问。
4. 从未访问的节点中选择距离起点最近的节点作为中间节点,更新其相邻节点的dist值,将其标记为已访问。
5. 重复步骤4,直到所有节点都被访问过或者没有可达节点。
6. 最终dist数组中记录的就是起点到每个节点的最短距离。
需要注意的是,狄克斯特拉算法只适用于没有负权边的图,否则可能会出现无限循环的情况。如果图中存在负权边,可以使用Bellman-Ford算法来求解最短路径。
阅读全文