分散式基本计算-Shavit-Fracez检测终止性

当算法达到终止配置时,分布式算法的计算终止,即配置中不存在进一步可应用的算法步,每个进程处于允许接收的状态,且所有信道为空,即消息终止,则这个配置是终止的。

1、分散式基本计算是指在一个初始配置中,有多个活动进程。

1、算法将Dijkstra-Scholten算法推广,动态地维持图F=(VF,EF)

1)或者T为空,或者F是若干个以初始进程为根的有向树组成的森林。

2)集合VT包括 所有活动进程,以及传输中的所有基本消息。

图变空时,终止检测。

2、算法

var statep:(active,passive) init if p=p0 then active else passive;

       scp:integer init 0;

        fatherp:P init if p=p0 then p else udef;

        emptyp:boolean init if p is initiator then false else true;

Sp: {statep=active}

      begin send <mes,p>;scp:=scp+1 end

Rp:{A message <mes,q> has arrived at p}

      begin receive <mes,q>;statep:=active;

                if fatherp=udef then fatherp:=q else send <sig,q> toq

      end

Ip:{statep=active}

    begin statep:=passive;

              if scp=0 then

                    begin if fatherp=p

                                 then emptyp:=true

                                 else send <sig,fatherp> to fatherp;

                            fatherp=udef;

                     end

 

Ap:{<sig,p> arrivates at p}

     begin receive <sig,p>;scp=scp-1;

              if scp=0 and statep=passive then

                 begin if fatherp=p(*就是当前的树只有根节点P了*)

                             then emptyp:=true

                             else send <sig,fatherp> to fatherp;

                         fatherp:=udef

                end

     end

进程并发执行波动算法,其中,仅当emptyp为true时,p发送或判定,decide调用annouce

你可能感兴趣的:(算法,F#,活动)