记录一下:
- 使用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数组,即为最短路径