Echo Algorithm

From CasGroup
Revision as of 14:56, 2 October 2008 by Jfromm (talk | contribs) (New page: A typical example for a total algorithm is the echo algorithm, which has been discovered by Ernest J.H. Chang in 1982. == Echo Algorithm == The echo algorithms consis...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

A typical example for a total algorithm is the echo algorithm, which has been discovered by Ernest J.H. Chang in 1982.

Echo Algorithm

The echo algorithms consists of two phases or waves: a forward wave of explorer messages which spread through a net, and a backward wave of echo messsages which is created if the explorer wave front hits the border of the net. The explorer wave travels from the initiator to the border of the distributed system and can be used to disseminate information, the echo wave travels from the border of system back to the initiator and can be used to collect information from the system. During the propagation of the first explorer wave, a spanning tree is constructed which consists of all the predecessor nodes stored in the parameter "pred" at each node. The echo wave travels back along this spanning tree to the initiator. If it reaches the initiator, the algorithm is terminated.

All nodes or processes are initiated with

Initiator = false;
Engaged = false;
N = 0;

The parameter "Engaged" shows if the explorer wave has already visited the node, and the echo counter N contains the number of echos the node has received. The initiator starts like this

Initiator = true;
Engaged = true;
Send Explorer-Msg to all Neighbors;

If a process receives a Message from process p it reacts like the following piece of code: each node which is visited for the first time by an explorer message will propagate itself explorer messages to all its neighbors and waits for responses ("echos") from the neightbors. If all neighbors have responded, the node sends itself an echo-message to its predecessor.

IF NOT Engaged THEN
  Engaged = TRUE;
  N = 0;
  Pred = p;
  Send Explorer-Msg to all Neighbors except p;
N = N + 1;
IF N == #Neighbors THEN
  Engaged = FALSE;
  IF NOT Initiator
    THEN Send Echo-Msg to Pred
    ELSE finished;

The message extinction principle says that if two explorer messages hit each other on a single link, then both extinguish each other. They are received, but have no effect, because both sender nodes are already marked as "engaged".

Articles

Ernest J.H. Chang, Echo Algorithms: Depth Parallel Operations on General Graphs, IEEE Transactions on Software Engineering, Vol. 8, No. 4, July 1982