Dijkstra算法[小结]

Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。Dijkstra一般的表述通常有两种方式,一种用永久和临时标号方式,一种是用OPEN, CLOSE表的方式,这里均采用永久和临时标号的方式。注意该算法要求图中不存在负权边。

算法步骤如下:

  1. 初使时令 S={V0},T={其余顶点},T中顶点对应的距离值

  若存在<V0,Vi>,d(V0,Vi)为<V0,Vi>弧上的权值

  若不存在<V0,Vi>,d(V0,Vi)为∝

  2. 从T中选取一个其距离值为最小的顶点W且不在S中,加入S

  3. 对其余T中顶点的距离值进行修改:若加进W作中间顶点,从V0到Vi的

  距离值缩短,则修改此距离值

  重复上述步骤2、3,直到S中包含所有顶点,即W=Vi为止

 

红色部分是重点。

主要利用了这是适用于无负权重边的图中。

由于每次从T中取出来的顶点距离起始点的距离不小于前次取出来的顶点距离起始点的距离。

所以不可能存在经由这次取出来的点到以前取出来的点的最小路径。

posted on 2012-11-29 14:37  DerDeath  阅读(327)  评论(0编辑  收藏  举报

导航

"); }); },1000); });