TD2 Complément de cours (synchrone versus asynchrone) M4102C - Algorithmique distribuée

publicité
M4102C - Algorithmique distribuée
TD2
Asynchrone ? Probabiliste ? Atomique ?
Complément de cours (synchrone versus asynchrone)
1. On parle de réseau synchrone (ou d’exécution synchrone) si les messages mettent un temps
borné à être transmis. On peut donc découper l’exécution en périodes égales, appelées rondes,
telles qu’à chaque ronde, les nœuds reçoivent les messages envoyés à la ronde précédente,
et en envoient potentiellement de nouveaux (qui seront reçus à la ronde suivante, etc.). Cette
propriété permet de faire des hypothèses très utiles, comme par exemple, la semaine dernière,
supposer qu’une ronde après être entré dans l’arbre, un nœud connait ses enfants.
2. On parle de réseau asynchrone (ou d’exécution asynchrone) si un message peut prendre un
temps arbitraire à être transmis, en supposant toutefois qu’il finira nécessairement par arriver
(on parle de temps fini).
Notez la différence entre temps fini et temps borné. Pour un temps fini, on sait juste que ça arrivera
un jour ou l’autre (on ne sait pas quand), alors que dans le second on sait que ça arrivera avant une
certaine date.
Certains algorithmes ne fonctionnent que dans les réseaux synchrones. D’autres marchent dans les
deux cas, mais parfois avec des performances différentes. En général, on étudie d’abord un problème
sous l’angle synchrone, plus facile pour réfléchir, puis on adapte.
1
Diffusion dans une grille
On considère que le réseau est une grille carrée qui comporte n nœuds (voir dessin, pour n = 25).
Chaque nœud peut identifier localement la direction de ses liens (nord, sud, est, ouest) et utiliser les
primitives correspondantes sendN(), sendS(), sendE(), sendW(). On considère un processus de
diffusion à partir du sommet le plus en haut à gauche.
E
N
E
E
W
S
N
E
N
E
E
N
W
W
S
E
E
E
N
W
E
E
E
N
W
E
E
S
N
W
S
S
N
W
S
S
N
W
S
N
W
S
E
N
W
S
W
S
N
W
S
N
W
S
E
N
E
W
S
N
W
S
N
W
S
E
N
E
W
S
N
W
S
N
E
W
S
N
W
S
1. Combien de messages seront échangés si l’on utilise l’algorithme de diffusion basique vu la
semaine dernière ? (“La première fois que je reçois le message (ou si je l’ai initialement), je
le retransmets à tous mes voisins avec sendAll().”) Le fait que le réseau soit synchrone ou
asynchrone a-t-il un impact sur ce nombre ? Si oui, lequel ?
2. On suppose maintenant que hormis le nœud initial, les nœuds ne connaissent ni leur position
dans la grille, ni la liste de leurs voisins, ni la provenance d’un message. Écrivez un algorithme
qui tient compte de la topologie en grille. Combien de messages sont maintenant envoyés ? (les
messages envoyés à des voisins qui n’existent pas comptent aussi.)
3. On suppose maintenant que les nœuds peuvent connaître la provenance d’un message msg
en utilisant msg.getOrigin() dont la réponse est parmi {N,S,E,W} et qu’ils peuvent tester
s’ils ont un voisin dans une direction donnée (ex : hasNeighbor(N) ?). Donner un algorithme
qui utilise ces informations pour n’envoyer que n − 1 messages.
Peut-on espérer faire mieux ? Et dans une autre topologie que la grille, peut-on faire mieux ?
2
Élection
2.1
Borne inférieure ?
Un collègue m’assure que dans les topologies arbitraires, aucun algorithme ne peut garantir une
élection en utilisant moins de m messages (où m est le nombre d’arêtes). Il dit que cela est vrai quel
que soit les hypothèses (anonyme ou avec identifiants, synchrone ou asynchrone, etc.).
A-t-il raison ? Si oui pourquoi ? Si non quelle idée serait moins coûteuse ?
2.2
Élection dans les arbres
On suppose maintenant que le réseau est un arbre et que chaque nœud connait la liste de ses
voisins. Les nœuds ont également des identifiants uniques. Proposez un algorithme d’élection qui
marche aussi bien en synchrone qu’en asynchrone. Combien de messages utilisez-vous ?
2.3
Élection probabiliste
On considère l’algorithme d’élection probabiliste suivant dans un graphe complet, avec exécution
synchrone. Initialement tous les sommets sont candidats. A chaque ronde, les sommets candidats
tirent à pile ou face. Ceux qui tirent pile envoient un message à tout le monde. Les autres décident
de ne plus être candidats. L’algorithme s’arrête quand il y a strictement moins de deux messages
échangés (ce qui peut être détecté par tous les nœuds). À ce moment là, si un seul nœud est candidat,
il est élu et l’algorithme a réussi. Sinon l’algorithme échoue.
1.
2.
3.
4.
3
Le temps d’exécution est-il borné ? est-il fini ? y a-t-il un risque qu’il soit infini ?
Combien de temps cela prend-t-il en moyenne (donnez juste l’ordre de grandeur) ?
Quel est la probabilité de succès si n = 2, si n = 3 ?
Que proposez-vous en cas d’échec ?
Interactions atomiques
On considère un modèle plus abstrait (donc plus simple) que les messages, qui sera l’objet du
TP d’aujourd’hui. Ici on néglige la façon dont les nœuds communiquent réellement, pour mieux
Page 2
se concentrer sur le principe général des algorithmes. Un algorithme se définit donc par des règles
d’interaction, qui spécifient directement comment l’état des nœuds doivent se transformer au cours
du temps. Par exemple, la règle r1 ci-dessous nous dit que si un nœud gris interagit avec un voisin
blanc (partie gauche), alors ce voisin devient gris lui-aussi et le lien devient épais et orienté (partie
droite). On ne considère aucun message ici, chaque interaction étant atomique.
→
r1 :
1. Éxecutez cet algorithme sur le graphe ci-dessous, en répétant la règle r1 jusqu’à ce que vous
ne puissiez plus le faire. Vous pouvez choisir arbitrairement les endroits où vous le faites.
2. Que fait cet algorithme ?
3. On considère maintenant une règle r2 plus complexe. Les accolades indiquent les exceptions
où la règle ne doit pas être appliquée. En l’occurrence, la règle dit que si un nœud u est gris
et a un parent gris, alors il prend un troisième couleur (gris avec une croix, que l’on conside
comme différente du gris). Les exceptions nous disent de faire cela seulement si u n’a pas de
voisin blanc et n’a pas non plus d’enfant gris.
r2 :
{
}
→
→ Exécutez cette règle par dessus le résultat obtenu à la question 1, en répétant la règle jusqu’à
ce que vous ne puissiez plus le faire.
4. Que fait cette règle ?
Page 3
Téléchargement