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−1messages.
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 mmessages (où mest 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. Le temps d’exécution est-il borné ? est-il fini ? y a-t-il un risque qu’il soit infini ?
2. Combien de temps cela prend-t-il en moyenne (donnez juste l’ordre de grandeur) ?
3. Quel est la probabilité de succès si n= 2, si n= 3 ?
4. Que proposez-vous en cas d’échec ?
3 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