→Créez une classe DiffusionAlgorithm qui hérite de Algorithm. Implémentez les trois
méthodes abstraites de sorte à réaliser l’algorithme 1 ci-dessous. On utilisera des couleurs à la
place des états Iet N. Vous pouvez récupérer les nœuds de part et d’autre d’une arête donnée
en utilisant link.endpoint(0) et link.endpoint(1). Pensez à tester les deux sens pos-
sibles (côté 0 informé et 1 non-informé ou l’inverse).
→Faites le lien entre l’ordonnanceur et l’algorithme, par exemple, vous pouvez créer l’algo-
rithme dans votre main() et le passer au constructeur de votre ordonnanceur (en modifiant
les paramètres).
Algorithm 1 Diffusion d’une information dans le réseau
Etats initiaux : I(informé) pour le sommet sélectionné ; N(non-informé) pour tous les autres.
Règle d’interaction : I N I I
4 Algorithmes de comptage
On veut maintenant faire du comptage. On s’intéressera d’abord au cas où un nœud distingué
se charge de compter ceux qu’il rencontre directement, puis on s’intéressera à d’autres variantes où
l’initialisation est uniforme.
→Comprenez la logique de l’algorithme de comptage suivant, notamment à quoi correspondent les
trois lettres et l’entier. Puis implémentez cet algorithme dans une nouvelle classe.
Algorithm 2 Comptage du nombre de sommets (avec compteur sélectionné)
Etats initiaux : C,1 pour le nœud compteur (sélectionné) ; Npour tous les autres.
Règle d’interaction : C, i NC, i + 1 F
Astuce : utilisez trois couleurs pour les états C, N, F ! Et utilisez setState() et getState()
pour stoquer l’entier sur le nœud compteur.
→Quelle forme doit avoir la topologie pour que l’Algorithme 2 réussisse à compter tout le
monde ? Vous répondrez pour les deux cas où 1) on peut choisir le compteur qu’on veut et 2) c’est un
adversaire qui choisit le compteur.
→Comprenez la logique de l’algorithme de comptage suivant, en particulier le fait qu’il utilise une
initialisation uniforme (tous les nœuds ont le même état initial). Puis implémentez cet algorithme dans
une nouvelle classe.
Algorithm 3 Comptage du nombre de sommets (version uniforme avec compteurs fusionnants)
Etats initiaux : 1pour tous les sommets.
Règle d’interaction : i6= 0 j6= 0 i+j0
→Quelle forme doit avoir la topologie pour que l’Algorithme 3 réussisse à compter tout le
monde ? Vous répondrez pour les deux cas où 1) le compteur qui survit après chaque interaction
est celui qui nous arrange et 2) c’est un adversaire qui choisit le compteur qui survit.
→Comprenez la logique de l’algorithme de comptage suivant, en particulier le fait qu’il utilise plu-
sieurs règles d’interaction. Puis implémentez cet algorithme dans une nouvelle classe.
Page 2