迪杰斯特拉算法解析
Posted xulu_258
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迪杰斯特拉算法解析相关的知识,希望对你有一定的参考价值。
迪杰斯特拉算法是解决单源最短路径(从图中的某个顶点到其余顶点的最短路径)的一种常用算法,是一种按照路径长度递增的次序分别产生到各顶点最短路径的贪心算法,
算法思想:
1.初始时,集合s仅包含源点v0,集合v-s中包含除了v0以外的所有顶点,v0到v-s中各顶点的路径长度或者为某个权值(如果他们之间有弧相连),或者为oo(没有弧相连)。
2.按照最短路径长度递增的次序,从集合v-s中选出到顶点v0路径长度最短的顶点Vk加入到集合s中。
3.加入Vk之后,为了寻找下一个最短路径,必须修改从v0到集合v-s中剩余顶点Vi的最短路径,若在路径Vk加上之后,使得v0到Vi的路径长度比原来没有加入Vk时的路径长度短,则修正v0到Vi的路径长度为其中较短的一条距离。
4.重复以上步骤,直到集合v-s中的顶点全部加入到集合s中为止。
对于以下图:
具体分析过程如下:
以上是关于迪杰斯特拉算法解析的主要内容,如果未能解决你的问题,请参考以下文章
图(最短路径算法————迪杰斯特拉算法和弗洛伊德算法).RP