zoukankan      html  css  js  c++  java
  • 单源最短路径——Dijkstra算法学习

      每次都以为自己理解了Dijkstra这个算法,但是过没多久又忘记了,这应该是第4、5次重温这个算法了。

      这次是看的胡鹏的《地理信息系统》,看完之后突然意识到用数学公式表示算法流程是如此的好理解,堪称完美。

    内容摘抄如下:

      网络中的最短路径是一条简单路径,即是一条不与自身相交的路径,最短路径搜索的依据:若从S点到T点有一条最短路径,则该路径上的任何点到S的距离都是最短的。

    Dijkstra算法搜索步骤:

    1.对起始点作标记S,且对所有顶点令D(X)=∞,Y=S;

    2.对所有未做标记的点按以下公式计算距离

    D(X)=min{D(X),d(Y,X)+D(Y)},其中Y是最后一个做标识的点。

    取具有最小值的D(X),并对XWT标记,令Y=X。

    若最小值的D(X)=∞,则说明S到所有未标识的点都没有路,算法终止;否则继续。

    3.如果Y=T,则已经找到了S到T的最短路径,算法终止。否则转到步骤2。

     

    最短路径算法:Dijkstra算法和Floyd算法

    图论

    走一步:由起点StartNode A遍历一条边,选择最短的一条边链接到节点B,记距离dAB

    走两步:由B遍历相连的边,选择最短的一条边,记临时距离dtemp,此时距离dAB+dtemp

    和A走一步第二短距离比较,短的距离作为走两步的距离。

    基本就是“一步一比,两步一回头”,保证得到这样的效果,每走一步都是最短路径。

     参考:《插件式GIS应用框架的设计与实现:基于C#和AE 9.2》

  • 相关阅读:
    hdu 1269 迷宫城堡 (并查集)
    hdu 1272 小希的迷宫 (深搜)
    hdu 1026 Ignatius and the Princess I (深搜)
    hdu 1099 Lottery
    hdu 1068 Girls and Boys (二分匹配)
    几个基础数位DP(hdu 2089,hdu 3555,uestc 1307 windy 数)
    hdu 1072 Nightmare (广搜)
    hdu 1398 Square Coins (母函数)
    hdu 1253 胜利大逃亡 (深搜)
    hdu 1115 Lifting the Stone (求重心)
  • 原文地址:https://www.cnblogs.com/yhlx125/p/2579537.html
Copyright © 2011-2022 走看看