一、遍历算法
1、每次计算只有一个初始进程,只发送一条消息开始执行算法。
2、进程一接到消息,就发送一条消息,或者进行判定。
3、算法在初始进程终止,当这种情况发生时,每个进程至少已经发送一次消息。
二、遍历团
var recp:integer init o;
for the initiator:
begin while recp<#Neighp do
begin send <tok> to qrecp+1;
receive <tok>;recp:=recp+1
end;
decide
end
for non-initiators:
begin receive <tok> from q;send <tok> to q end
三、圆环
n*n的圆环图是图G=(V,E),其中
V=Zn*Zn={(i,j):0<=i,j<n}
且
E={(i,j)(i',j'):(i=i'∧j=j'±1)∨(i=i'±1∧j=j')}
圆环进行UP、DOWN、LEFT、RIGHT方向的移动。圆环是哈密尔顿图,在任意大小的圆环中存在哈密尔顿回路。
n|k表示n整除k。
for the initiator,execute once:
send <num,1> to UP
for each process,upon receipt of the token <num,k>:
begin if k=n^2 then decide
else if n|k then send <num,k+1> to Up
else send <num,k+1> to right