路由算法-Chandy-Mistra算法

计算同一目的节点所有最短路径算法,利用了扩散计算。即一种分布式计算,由一个节点初始化,其他节点一接到消息后就加入。

       要计算所有节点到节点V0的距离,每一节点u从Du[v0]=∞开始并等候接收消息。节点V0将消息<mydist,v0,0>发送到所有近邻中。当节点u接近到近邻w的消息<mydist,V0m,0>发送到所有近邻中。当节点u接到近邻w的消息<mydist,v0,d>时,其中d+Wuw<Dc[v0]时,u将d+Wuw赋给Du[v0]。并向所有近邻发送消息<mydist,v0,Du[v0]>。

      算法如下:

     var Du[v0]:weight  init ∞;

           Nbu[v0]:node init udef;

    For node v0 only:

          begin Dv0[v0]=0;

                    forall w∈Neighv0 do send <mydist,v0,0> to w

          end

   Processing a <mydist,v0,d> message from neighbor w by u;

         {<mydist,v0,d>∈Mwu}

          begin receive <mydist,v0,d> from w;

                    if d+Wuw<Du[v0] then

                          begin Du[v0]:=d+Wuw;Nbu[v0]:=w;

                                    forall x∈Neighu do send <mydist,v0,Du[v0]> to x

                          end

          end

你可能感兴趣的:(算法)