Aix-Marseille Université
Master Informatique
Algorithmique Distribuée
2014
ALGORITHMIQUE DISTRIBUÉE
Devoir à la maison
Date de diffusion : 5 mars 2014
Date Limite pour la soumission : 16 avril 2014
1 Élection dans les anneaux
On considère un anneau bidirectionnel avec n3sommets. Le réseau est asynchrone et chaque processus
a un identifiant unique (UID). Chaque processus connaît parmi les deux liens incidents, lequel va à gauche
et lequel va vers la droite. On va utiliser un algorithme appelé “ALTERNER" pour résoudre le problème
d’Election :
Au départ, tous les sommets sont des candidats. L’algorithme fonctionne en plusieurs étapes :
Dans les étapes impaires (1,3,5, . . . ) chaque candidat envoie son UID vers la gauche.
Dans les étapes paires (2,4,6, . . . ) chaque candidat envoie son UID vers la droite.
Après chaque étape, un candidat compare son UID avec celui qu’il a reçu, et si son UID est plus grand, il
devient passif. Un sommet passif n’est plus un candidat pour la prochaine étape (il n’enverra pas son UID).
Pendant le reste de l’algorithme, si un sommet passif reçoit un message, il le renvoie dans la direction opposée
de celle par laquelle il l’a reçu. Quand un candidat reçoit son propre UID, il devient élu. Le pseudocode de
l’algorithme est le suivant.
Algorithme ALTERNER
état := candidat
i:= 0
Tant que état = candidat faire
Si iest pair alors
Envoyer < UID > à droite
Attendre pour un message <x>depuis la gauche
Sinon
Envoyer < UID > à gauche
Attendre pour un message <x>depuis la droite
Si UID > x alors
état := passif
Si UID =xalors
état := élu
i:= i+ 1
Tant que état = passif faire
A la réception d’un message <x>depuis la droite (depuis la gauche)
Envoyer <x>à gauche (à droite)
A. Donner la complexité de l’algorithme ALTERNER en termes de nombre de messages transmis, dans le
pire des cas. Expliquer votre réponse.
B. Pour cet algorithme, donner un exemple d’un anneau (avec 16 sommets et leurs UID), dans lequel
l’algorithme a la pire complexité (en termes de nombre de messages transmis).
1
C. Considérons un anneau de nsommets qui ont les UID suivants
(1,2,3,4, . . . n/2, n, n 1, n 2, n 3, . . . , n/2 + 1)
dans cet ordre. Quel est le nombre de messages transmis pendant l’exécution de l’algorithme ALTERNER
sur cet anneau.
D. On suppose maintenant que tous les identifiants des sommets ne sont pas uniques. Un identifiant donné
peut être sur deux nœuds différents. Supposons qu’un identifiant iexiste sur deux nœuds différents de
l’anneau et tous les autres nœuds ont des identifiants distincts et différents de i.
Donner un algorithme d’élection correct sous ces hypothèses.
2 Les Réseaux Synchrones
On considère une grille non-orientée h×l(avec h×l=nsommets). Dans grille non-orientée, les arêtes
incidentes à un sommet sont numérotées de manière quelconque de 1 jusqu’au degré du sommet (voir la
figure 1). On suppose que le réseau est Synchrone et que tous les processus commencent en même temps.
1
2
1
2
3
3
1
2
2
1
1
32
2
13
1
32
3
21
21
1
2
2
1
34
2
1
34
2
1
34
2
4
31
2
4
13
1
4
23
1
23
1
2
3
2
1
3
2
1
3
Figure 1 – Grille non-orientée avec h= 4 et l= 5
A. Donner un algorithme efficace (en temps) pour la construction d’un arbre couvrant du réseau. Quelle est
la complexité en temps de votre algorithme ?
B. Donner un algorithme efficace, en terme de nombre du bits transmis, pour la construction d’un arbre
couvrant du réseau. Quelle est la complexité en bits de votre algorithme ?
C. Supposons que chaque processus du réseau contient une valeur initiale entre 1et p(où pest beaucoup
plus grand que n). Décrire un algorithme pour calculer la moyenne de toutes les valeurs dans le réseau.
Donner la complexité en bits de votre algorithme.
D. On a un grand ensemble Dde données (taille |D|= 100n) qui est partagé entre les nprocessus de
ce réseau, et donc chaque processus contient 100 valeurs de données (sous forme d’entiers). Les valeurs
ne sont pas triées. Donner un algorithme efficace en temps pour trouver les 5 plus petites valeurs dans
l’ensemble D. Si chaque valeur dans l’ensemble Dprend O(log n)bits de mémoire, quelle est la complexité
en bits de votre algorithme ?
3 Tolérance aux Pannes
Considérons un réseau synchrone avec la topologie d’un graphe complet,Knavec n > 5sommets (donc
entre chaque deux sommets, il y a un lien). Les processus du réseau n’ont pas de UID (identifiants uniques).
Au début, chaque processus a une valeur initiale (soit 0, soit 1).
A. S’il n’y a aucune défaillance, donner un algorithme qui résout le problème du consensus. Prouver le
correction de votre algorithme et donner la complexité en temps de votre algorithme.
2
B. On suppose que jusqu’à (n/21) liens du réseau peuvent tomber en panne permanente. C’est-à-dire
qu’un adversaire cherchant à empêcher le consensus a coupé de manière permanente ces (n/21) liens du
réseau. Est-il possible de résoudre le problème du consensus, dans ce cas ? Si oui, décrire un algorithme
qui résout le problème du consensus et donner sa complexité exacte, en temps.
C. On suppose qu’il peut se produire jusqu’à n/2omissions (de messages) à chaque ronde au cours de
l’algorithme. C’est-à-dire qu’un adversaire peut faire disparaître jusqu’à n/2messages parmi ceux envoyés
à chaque ronde. Donner un algorithme efficace en temps pour le consensus. Donner la complexité de votre
algorithme en nombre de rondes, et en nombre de messages transmis.
D. On suppose qu’il peut se produire jusqu’à n/2omissions et jusqu’à ncorruptions de messages à chaque
ronde au cours de l’algorithme. C’est-à-dire qu’un adversaire peut faire disparaître jusqu’à n/2messages
parmi ceux envoyés à chaque ronde et changer le contenu de nautres messages. Donner un algorithme
efficace en temps pour le consensus. Donner la complexité de votre algorithme en nombre de rondes, et
en nombre de messages transmis.
4 Rendez-vous d’agents mobiles avec jeton
On considère deux agents mobiles dans un anneau. La position relative des agents est donc définie par
deux entiers det d0représentant le nombre d’arêtes que chaque agent doit traverser dans le sens des aiguilles
d’une montre pour arriver à la position de départ de l’autre agent (voir figure 2). Les agents sont anonymes
et le réseau est anonyme. Le système est synchrone et les deux agents commencent l’algorithme à la même
étape. Les agents possèdent chacun un jeton qu’ils peuvent poser à tout moment sur le nœud sur lequel ils
sont. Une fois posé le jeton ne peut plus être déplacé. Un agent passant sur un nœud ayant un jeton sait
qu’il y a jeton sur le nœud mais ne peut pas déterminer si c’est son jeton ou celui de l’autre agent (les jetons
sont visibles par tous les agents mais ils sont anonymes).
111
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
222
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
d= 4
d0= 16
Figure 2 – Anneau orienté de 20 sommets avec d= 4 et d0= 16
3
A. On considère que l’anneau est orienté (les numéros de port 1 correspondent aux sens des aiguilles d’une
port alors que les numéros de port 2 correspondent aux sens inverse). Donner un algorithme de rendez-
vous dans le cas ou d6=d0. Quelle est la complexité en temps (nombre de rondes) de votre algorithme ?
B. On considère que l’anneau est orienté. Montrer que si d=d0alors le rendez-vous déterministe des deux
agents n’est pas possible.
C. On considère que l’anneau est non-orienté (la numérotation des ports est quelconque) et qu’il a un nombre
impair de nœuds. Donner un algorithme de rendezvous. Quelle est la complexité en temps (nombre de
rondes) de votre algorithme ?
D. On considère que l’anneau est non-orienté. Donner un exemple d’anneau de taille 4 avec la position des
agents telles que d6=d0et de sorte à ce que le rendez-vous déterministe des deux agents soit impossible.
Généraliser votre exemple à toutes les tailles paires d’anneau.
4
1 / 4 100%