Dijkstra理解

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

  一、在n个节点的有向图中,假如要计算A节点到其余全部节点的最短路径,那么咱们能够找出A节点能直接到达且权最小的一个节点B,那么该路径即为A节点到B节点的最短路语言

径。缘由在于:若是A到B有更短的路径,那么A必定须要经过第三方的节点来到达B,好比A须要经过C节点,而后经过C节点到达B节点。显然这里是不存在这样的路径了,由于A通过

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

  二、上面咱们找到了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能直接到达的节点也做一样的处理。

  三、那么咱们如今再从除B节点外找一个到节点最短路径的节点E,A到E节点的路径长度是否是A到E节点的最短路径呢,答案是确定的,由于这里再也找不出一个第三方节点能使A

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

            语言表达能力不行,本身都被本身说晕了!!!!!

相关文章
相关标签/搜索