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