dijkstra算法学习

xiaoxiao2025-05-26  42

记录一下:

使用dijkstra算法来解决不带负权的图求最短路径(大作业)

算法实现:

将图初始化为邻接矩阵map[][](map[i][j], map[j][i]值为两点之间边的权值),初始化dis数组(起始节点到其他所有节点的边的权值,无边到达则为最大值,自身为0),初始化visited数组(记录该节点是否被访问过),初始化prev数组(记录前驱结点,以此记录路径),遍历dis数组,获得最小值min = dis[i],将visited[i]数组置为true,再次遍历dis数组,比较每个节点距离dis[j]与min + map[j][i]的大小,若大于,则将dis[j]修改为min+map[j][i],此时记录前驱结点,prev[j] = i;循环操作,直到访问玩所有节点,dis数组即为起始节点到其他所有节点的最短距离,递归打印prev数组,即为最短路径
转载请注明原文地址: https://www.6miu.com/read-5030725.html

最新回复(0)