选举-基于树算法的选举

1、如果网络的拓扑结构是树,或者网络的生成树可用,可以使用树算法进行选举。在树算法中,要求至少所有叶子节点是算法的初始进程。想要开始选举的进程将消息<wakeup>扩散到所有进程中。布尔变量ws用于使每个进程至多发送一次消息。变量wr用于对接收的消息<wakeup>计数。当进程通过每个信道接收到消息<wakeup>,使其进行最小标识的计算。当进程进行判定时,就知道了领导人的标识。如果该标识与进程标识相等,它就称为领导人,否则就成为失败进程。

2、算法

var wsp :boolean  init false;

      wrp  :integer  init 0;

      recp[q]:boolean for each qNeighp init false;

     vp:P    init p;

     statep:(sleep,leader,lost) init sleep;

 

begin if p is initiator then

            begin wsp:=true;

                     forall q∈Neighp do send <wakeup> to q

           end;

         while wrp<#Neighp do

                  begin receive <wakeup>;wrp=wrp+1;

                           if not wsp then

                              begin wsp:=true;

                                        forall q∈Neighp do send <wakeup> to q

                             end

                 end;

        

         while   #{q:┐recp[q]}>1 do

              begin receive <tok,r> from q;recp[q]:=true;

                        vp:=min(vp,r)

              end;

        send <tok,vp> to q0 with recp[q0];

        receive <tok,r> from q0;

        vp:=min(vp,r); (*decide with answer vp*)

        if vp=p then statep:=leader else statep:=lost;

        forall q∈Neighp,q≠q0 do send <tok,vp> to q

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值