Dijkstra算法示例
Dijkstra算法
我们想找到A与E(下图)之间的最佳路由。可以看到A与E之间有六条可能路径(ABE、ACE、ABDE、ACDE、ABDCE、ACDBE),很明显ABDE是最佳路由,因为它的权值最小。但是实际情况并非总是如此简单,有很多复杂的情形需要使用算法来找到最佳路由。
1.如下图所示,源节点(A)被选为T节点,所以它的标号是永久(我们将永久性节点以
实圈标注,T节点以-->符号标注)。
2.在这一步中,直接链接到T节点的暂时性节点(B, C)的状态记录集已经被修改。同
时,由于B有更小的权值,所以它被选作T节点,其标号被改为永久(如下图所示)。
3.与步骤2类似,在这一步中,直接链接到T节点的暂时性节点(D, E)的状态记录集
已经被修改。同时,由于D有更小的权值,所以它被选作T节点,其标号被改为永
久(如下图所示)。
4.在这一步中,已经没有任何暂时性节点,所以我们仅仅需要确认下一个T节点。因
为E有最小权值,所以它被选作T节点。
5.E是目的节点,所以我们在这里停止。
我们已经到达了终点!现在,我们需要确定路由。E的前序节点是D,D的前序节点是B,B 的前序节点是A。所以最佳路由是ABDE。在这个案例中,权值和为4(1+2+1)。
相关主题