Dijkstra算法求单源最短路径(一)

来源:互联网 发布:主网络和访客网络 编辑:程序博客网 时间:2024/04/30 14:56

      本文实现的Dijkstra算法是最简单的方法,就是暴力搜索,其时间复杂度为O(V^2),后面会使用优先队列的方法,修改广度优先遍历来实现Dijkstra算法,这样的算法时间复杂度上会有所改善。

代码实例:

PS:2011-6-15

修改部分:

输出了过程中dist[i]的变化

 

Dijkstra算法求单源最短路径,其实相当于是从一个源点S出发,找出从S出发可达的所有其他点的最短路径。

因此分以下几步完成:

1.dist[i]用于标记从s到i的最短路径,初始化是只有dist[s]=0,其他dist[i]=maxWeitht,表示权值无穷大

2.因为源点已经找到,还需要遍历剩余的V-1个点来找寻最短路径。

3.从dist[i]中找寻i点没有被访问且dist最小的值作为下一个顶点minnode。

4.如果dist[minnode]的值加上其可达顶点j的边上的值小于dist[j]的值,则更新dist[j],表明j的前序节点是minnode。