Soit l'algorithme d'élection suivant :
Hypothèses :
- Anneau bidirectionnel virtuel fiable.
- Chaque processus a un numéro et tous les numéros sont différents.
- Tous les processus lancent la procédure d'élection.
- Chaque processus peut communiquer avec ses deux voisins : gauche et droit.
- Chaque site contient un seul processus.
Les variables associées à chaque processus Pi sont :
- MonNum : entier (identité du site)
- Max : entier
Lancer l'élection / phase 0 **/
Envoyer Election(MonNum, 0, 1) aux voisins gauche et droit;
Fin
Lors de la réception du message Election(Num, NumPhase, Distance) du voisin gauche (droit) Faire
Si ((Num > MonNum) et (Distance < 2^{NumPhase})) alors
Envoyer Election(Num, NumPhase, Distance + 1) au voisin droit (gauche);
FinSi
Si ((Num > MonNum) et (Distance == 2^{NumPhase})) alors
Envoyer Réponse(Num, NumPhase) au voisin gauche (droit);
FinSi
Si (MonNum == Num) alors
Max = MonNum;
Envoyer (Elu(Num)) au voisin gauche (droit);
FinSi
Fin
Décrire le déroulement de cet algorithme sur un exemple de 5 processus. Montrer que cet algorithme se termine et analyser sa complexité en messages.