Dijkstra算法
Dijkstra算法是一种单源最短路径搜索算法。
算法步骤:
开始的结构我们称为初始节点。Y距离为Y点到初始节点的距离。Dijkstra算法会给定Y距离的初始值。并且一步步的优化他
1.给定每个节点一个不可靠的值(需要被跟新的。或者可能被跟新的),初始节点为0.其他节点为无穷大。
2.设置一个数组标志每个节点不可见(除了初始节点)。设置初始节点为当前节点。
3.考虑当前节点的所有不可见邻节点、并且计算它们的实验值。如果当前节点标志的距离是6,并且有一邻节点B的距离是2,所以距离B(通过A)就是6+2=8.
如果这个值小于以前记录的不可靠数值。那么就更新他。
4.当我们考虑了所有该节点的邻节点后。设置当前节点为可见的,重不可见数组中移除。可见节点不会重新计算。
5.如果目的节点已经可见。或者所有所有不可见节点都为无穷大。算法结束。
6.选择当前节点不可见的最短的节点。设置为当前节点,重复步骤3.
看算法比较麻烦不好懂。下面实例分析下,大家就应该懂了。let us go。
这是我们的有向图。
算法过程
第一步:设置不可靠的值。
s为可见的节点。设置好所有的初始值。因为初始一栏里面最小的是10.所以选择2节点为当前节点。2节点邻节点只有3.10+30 < maxint,更新他。到达第二栏。
再选择最小的节点是30(当前节点已经在可见里面了,不需要再算)也就是节点4.设置节点4为当前节点。节点4到3为30 + 20 < 50 更新。节点4到5 30 + 60 < 100,更新为90.就这样一直算下去。
算到最后所有的节点都是可见的就结束。
实例2: 实例3.
代码就不上了。