迪杰斯特拉算法解析

       迪杰斯特拉算法是解决单源最短路径(从图中的某个顶点到其余顶点的最短路径)的一种常用算法,是一种按照路径长度递增的次序分别产生到各顶点最短路径的贪心算法,

       算法思想:

     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中为止。

 对于以下图:

       迪杰斯特拉算法解析_第1张图片

具体分析过程如下:
迪杰斯特拉算法解析_第2张图片



你可能感兴趣的:(数据结构,算法,图)