数据结构——最短路径之Dijkstra算法(与最小生成树的prime算法很像,建议一起看)

最短路径之Dijkstra算法
(一)Dijkstra算法

单源最短路径:就是从某一个顶点出发,到图中任意顶点之间的最短路径;

【算法概述】:Dijkstra算法适用于解决单源最短路径的问题。即:从源点到任意指定顶点之间的最短距离的问题;但Dijkstra算法要求所有边的权值非负。看过Prime算法的同学都知道,Dijkstra算法与Prime算法很相似,不同的就是dis数组的更新方式。Dijkstra算法用邻接矩阵存图比较方便。

【算法思想】:先用一个数组记录从源点到图中个顶点直接相连的距离,如果不直接连,就记录为无穷大,然后通过对该数组的更新,使得dis[x]表示从源点到x的最短路径;

1.1 初始化

用邻接矩阵来存图,先进行初始化,自己到自己的距离初始化为0,到另外的顶点的距离初始化为无穷大。并将标记数组都置为0,表示所有顶点都未访问;

void init(){
   
    
    
	for(i

猜你喜欢

转载自blog.csdn.net/qq_50675813/article/details/121048779