TP-3 : Election randomisés dans un anneau anonyme 1 Algorithmes

publicité
Aix-Marseille Université
Master Informatique
Algorithmique Distribuée
2015
TP-3 : Election randomisés dans un anneau anonyme
1
Algorithmes randomisés pour l'Election
On va simuler les algorithmes suivants pour l'élection dans les anneaux anonymes. Nous supposons que
chaque sommet connait
n,
la taille de l'anneau.
Algorithm 1 :
Chaque noeud sélectionne un nombre aléatoire entre
1 et n. Chaque n÷ud envoie sa valeur autour de l'anneau.
Les n÷uds avec la valeur maximale deviennent candidats et tous les autres n÷uds deviennent passifs. S'il y
a un seul candidat, il devient
Elu.
Sinon, il y a plusieurs candidats, donc l'algorithme va écrire "Echec de
l'Election".
Algorithm 2 :
L'algorithme se déroule en plusieurs phases. Au début, tous les n÷uds sont candidats.
Dans chaque phase, chaque candidat sélectionne soit
choisissent
0,
0
ou
1
avec une probabilité égale. Si tous les candidats
tous restent candidats pour la prochaine phase. Sinon, il y a un moins un qui a choisi
les sommets qui choisissent
0
1,
donc
vont devenir passifs et les autres restent candidats pour la prochaine phase.
Quand il y a un seul candidat, il devient
Elu et l'algorithme se termine.
Exercice
JBotSim pour simuler les algorithmes randomisés sur l'anneau. (Documentation dishttp://jbotsim.sourceforge.net/. Il faut télécharger le chier jar http:
//jbotsim.sourceforge.net/jbotsim-0.9.2.jar )
1. On va utiliser
ponible à l'adresse :
Télécharger le chier "TP3code.zip" à l'adresse suivant :
http://pageperso.lif.univ-mrs.fr/~shantanu.das/M1algodist/TP/TP3code.zip
Il contient un programme qui construit un anneau anonyme d'une taille donnée. Compiler les chiers
Java et exécuter le programme en utilisant
JBotSim
sur votre ordinateur.
java − cp. : jbotsim.jar RingMain < size − of − ring >
2. Modier le programme écrit dans RingNode.java" pour réaliser l'algorithme randomisé pour l'élection.
Chaque n÷ud a deux liens
left et right pour communiquer avec son voisin sur la gauche ou la droite.
En chaque phase, colorer les candidats vert ("green"), et à la n de l'élection, changer la couleur du
élu au rouge ("red").
Utilisez la classe java
java.util.Random
et le fonction
Random.nextInt(n)
pour générer des nombres
aléatoires.
3. Exécuter le programme sur des anneaux de tailles diérentes. Pour Algorithme-1, exécuter le programme 20 fois et vériez combien de fois l'algorithme termine avec succès. Pour Algorithme-2, compter
le nombre de phases nécessaire pour la réussite de l'élection.
1
Téléchargement