• Contrairement à l’algorithme de construction d’un arbre de recouvrement en largeur d’abord, à la
réception du premier message M, un nœud ni n’envoie pas instantanément un message P.
• A la réception du premier message M, un nœud ni envoie séquentiellement des messages M à
ses autres voisins nj (on dit alors que le nœud ni explore ses voisins nj) : envoi d’un message M
au premier voisin, attente de réponse P ou R du voisin destinataire, envoi d’un message M au
second voisin, attente de réponse P ou R du voisin destinataire, etc. Rappelons que l’algorithme
de construction d’un arbre de recouvrement en largeur d’abord envoie les messages M en
parallèle (en même temps) à tous ses voisins (sauf le nœud qui lui a envoyé le premier M).
L’envoi séquentiel les messages M donne la possibilité à chaque nœud de construire un sous arbre
dont il est la racine. On se retrouve alors avec des arbres de recouvrement profonds (plusieurs
niveaux).
Un nœud arrête l’exécution de l’algorithme lorsque tous les voisins ont été explorés. Un booléen
terminé doit donc être géré comme variable locale au niveau de chaque nœud. Ce booléen est
initialisé à faux au début de l’exécution de l’algorithme, il est mis à vrai lorsque les voisins du nœud ni
sont tous explorés. L’algorithme est détaillé dans les slides du cours.
III. Algorithmes de diffusion (broadcast)
Une opération de diffusion transmet la même donnée D à tous les nœuds d’un réseau. Un algorithme
de diffusion transmet donc une donnée D à un ou plusieurs nœuds vers tous les nœuds du réseau.
III.1 Diffusion à partir d’un arbre de recouvrement (Spanning Tree)
Cet algorithme suppose que le Spanning Tree (ST) est déjà généré auparavant. Chaque nœud ni
détient les variables suivantes :
parenti : père du nœud ni,
Fi : ensemble des fils du nœud ni,
L’arbre ST est représenté par la racine nr.
Un nœud intermédiaire (différent de la racine et non feuille) reçoit la donnée D en provenance de son
père et la transmet vers ses fils. Le nœud racine envoie la donnée D vers tous ses fils. Un nœud
feuille ne fait que recevoir la donnée de son père.
Chaque arête de l’arbre ST transmet une seule fois la donnée D. Le nombre de messages transmis
est donc égal à n – 1. n étant le nombre de nœuds dans le graphe G (ou l’arbre ST). En effet, le
nombre d’arêtes de l’arbre ST est égal à n – 1.
II.2 Diffusion (broadcast) avec vague
N0 représente l’ensemble de nœuds qui disposent de la donnée D avant l’exécution de l’algorithme de
diffusion.
Le principe de cet algorithme de diffusion est le suivant : un nœud ni n’appartenant pas à N0 attend la
réception de la donnée D. Une fois la données D reçue, ni envoie D à tous ses voisins y compris le
nœud émetteur nj.
L’algorithme est le suivant :
atteinti : booléen initialisé à faux.
Si ni appartient à N0
atteinti = vrai
Envoyer D à tous les voisins directs (vi)
Finsi
A chaque réception de D
Si (atteinti =faux)
atteinti := vrai
Envoyer D à tous les voisins directs de ni