码迷,mamicode.com
首页 > 其他好文 > 详细

Dijkstra理解

时间:2015-09-17 23:25:52      阅读:414      评论:0      收藏:0      [点我收藏+]

标签:

  Dijkstra算法是一个用于计算单源最短路径的算法,也即加权有向图中,找出某一个节点到其他各个节点的最短距离。

  1、在n个节点的有向图中,假如要计算A节点到其他所有节点的最短路径,那么我们可以找出A节点能直接到达且权最小的一个节点B,那么该路径即为A节点到B节点的最短路

径。原因在于:如果A到B有更短的路径,那么A一定需要通过第三方的节点来到达B,比如A需要通过C节点,然后通过C节点到达B节点。显然这里是不存在这样的路径了,因为A经过

任何节点到达B节点的路径长度都会大于A直接到达B节点的路径长度(-_-上面都说过了,B节点是A节点能直接到达的最短路径的节点)。

  2、上面我们找到了A节点到B节点的最短路径,接下来我们继续寻找A到剩余节点的最短路径。根据上面的思路,我们可以在剩余节点中找出一个A能直接到达企且权最小节点D,A

到D的路径是不是就是A到D的最短路径你呢,显然这里是不确定的,因为这里A到D的最短路径可能会经过B节点,既然这样,那就干脆将B也考虑进来好了,计算出A->B->D的路径

的长度,然后与A->D的路径长度进行比较,如果A-B->D确实小于A->D的路径长度,那么久A->B->D当做为A->D的路径长度,其他从B能直接到达的节点也作同样的处理。

  3、那么我们现在再从除B节点外找一个到节点最短路径的节点E,A到E节点的路径长度是不是A到E节点的最短路径呢,答案是肯定的,因为这里再也找不出一个第三方节点能使A

到E节点更短了,理由同3。

            语言表达能力不行,自己都被自己说晕了!!!!!

Dijkstra理解

标签:

原文地址:http://www.cnblogs.com/fangwencai/p/4817875.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!