Dijkstra算法:单源最短路径
1、问题:
2、算法分析:
3、算法设计
Collected数组用来判断顶点是否被收录,dist用来保存最短路径,path保存上一个连接的顶点
s为原点
先初始化数组:
Collected=0
Dist[v]=Graph->G[s][v];v:0->Graph->nv-1
Path[v]=s;
/*/收录s原点:
Dist[s]=0;
Collected[s]=1;
Path[s]=-1;
While(1){
V=/未收录顶点中最小权值的点/
如果v==-1 break;
/更新dist/
如果w未收录且与v连通
如果Graph->G[v][w]<0return flase
如果Dist[v]+Graph->G[v][w]<dist[w]
更新dist[w]
}
Return true
}
4、源码:
源码地址:https://github.com/ACynj/Dijkstra.git