zoukankan      html  css  js  c++  java
  • Dijkstra算法求单源最短路径(一)

          本文实现的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。

    作者:xwdreamer
    欢迎任何形式的转载,但请务必注明出处。
    分享到:
  • 相关阅读:
    js 能实现监听F5页面刷新子iframe 而父页面不刷新
    Thinkpad X201 Gobi2000 上电信3G网络
    【M30】代理类
    C++数组
    【M27】要求或者禁止对象产生于heap之中
    C++ delete operator做了什么事
    【M33】将非尾端类设计为抽象类
    【M32】在未来时态下发展程序
    【M34】如何在同一个程序中结合C++和C
    【M25】将构造方法和非成员方法虚化
  • 原文地址:https://www.cnblogs.com/xwdreamer/p/2297004.html
Copyright © 2011-2022 走看看