Algorithmique distribuée – Examen Calcul du nombre de

publicité
Algorithmique distribuée – Examen
RICM4, PolyTech’Grenoble
Tous documents autorisés
Temps imparti : 2 heures
Barème indicatif sur 20 points
Calcul du nombre de feuilles dans un arbre anonyme
Le but global de ce sujet est de découvrir un algorithme distribué permettant de calculer le nombre de
feuilles dans le réseau anonyme en arbre. Le sujet est néanmoins découpé en trois exercices que vous pouvez
traiter indépendamment les uns des autres. Il s’agit dans le premier exercice d’initialiser le calcul au niveau
des feuilles, puis de faire calculer le nombre de feuilles par certains nœuds particularisés par l’algorithme et
enfin de propager cette information à travers tout le réseau.
Les hypothèses que nous utilisons pour les trois exercices sont les suivantes. Nous supposons que les
processus et les canaux sont asynchrones. Les canaux sont FIFO. La topologie du réseau est un arbre avec
au moins deux nœuds. Les nœuds ne portent pas d’identité. Par contre chaque nœud, p, porte un étiquetage
local de ses canaux : on note δp le degré du nœud p et on suppose que ses canaux sont étiquetés de 1 à δp .
Voir l’illustration ci-dessous.
A noter : δp est une information connue du nœud et qui pourra être utilisée dans les algorithmes.
2
1
1
1
2
1
3
1
2
3
1
1
3
2
4
1
2
1
1
1
1
Éveiller les feuilles
Dans cet exercice, on suppose en plus que certains nœuds vont être activés par une autre application ; on
les appelle les nœuds initiateurs pour lesquels la variable booléenne Init sera vraie. On supposera que l’arbre
contient au moins un initiateur au début du calcul.
On suppose aussi que chaque nœud possède une fonction réveil().
Question 1 (4 points) On veut élaborer un algorithme où chaque feuille exécute la fonction réveil()
exactement une fois, en temps fini. Votre solution ne devra pas échanger plus de 2(n − 1) messages où n est
le nombre de nœuds du réseau.
(a) Écrire un tel algorithme et expliquer son fonctionnement.
(b) Justifier la complexité en messages de votre solution.
(c) Pourquoi ne peut-on améliorer cette complexité ?
2
Compter les feuilles
On suppose maintenant en plus que tous les nœuds sont munis d’un booléen Feuille qui vaut vrai si
et seulement si le nœud est une feuille de l’arbre. L’algorithme suivant oriente l’arbre et permet à certains
RICM4, PolyTech’Grenoble — 2014 – 2015
APD — 1
nœuds de calculer le nombre de feuilles de l’arbre.
Variables pour tout processus p
1: fils ⊆ {1, ..., δp } ensemble de numéros de canaux
2: père, frère ∈ {1, ..., δp } ∪ {⊥}
3: NF entier naturel
Algorithme pour tout processus p
4: fils ← ∅, père ← ⊥, frère ← ⊥, NF ← 0
5: Si Feuille alors
6:
père ← 1, NF ← 1
7:
Envoyer hCPT, NFi à père
8: Fin Si
9: Pour toujours
10:
Réceptionner hCPT, f i de q
11:
fils ← fils ∪ {q}
12:
NF ← NF + f
13:
Si |fils| = δp alors
14:
frère ← père, père ← ⊥
15:
decide(NF)
16:
Sinon
17:
Si |fils| = δp − 1 ∧ père = ⊥ alors
18:
père ← {1, ..., δp } \ fils
19:
Envoyer hCPT, NFi à père
20:
Fin Si
21:
Fin Si
22: Fin Pour toujours
Question 2
(1 point) Exécuter l’algorithme sur l’exemple de l’arbre donné en introduction.
(a) Que représente NF ?
(b) Combien de nœuds exécutent-ils la fonction decide ? et pour quelle valeur de paramètre ?
(c) Comment ces nœuds sont ils positionnés dans l’arbre ?
(d) Que représentent les variables père, frère et fils ?
On cherche à prouver le bon fonctionnement de cet algorithme.
Question 3 (1.5 point) Tout nœud envoie au plus un message CPT. Prouver cette propriété en raisonnant directement sur le code.
On cherche à montrer que tout nœud envoie exactement un message CPT. Pour cela, on a besoin d’introduire une nouvelle mesure sur l’arbre qui s’appelle l’excentricité d’un nœud : e(p) représente l’excentricité
du nœud p, c’est-à-dire la distance maximum entre p et n’importe quel autre nœud.
Question 4 (1 point) Recopier l’arbre donné en illustration et calculer dessus l’excentricité pour chacun
des nœuds. Remarquer que
(a) Quand l’excentricité est maximum pour un nœud donné, ce nœud est une feuille. Donner un exemple.
(b) La réciproque est fausse. Justifier.
(c) Pour un processus p donné, p admet au plus un voisin q tel que e(q) ≤ e(p). Donner deux exemples.
Ces propriétés sont vraies en général et même si elles se démontrent facilement, nous les admettons dans ce
sujet. Vous pourrez les utiliser dans les raisonnements qui viennent.
RICM4, PolyTech’Grenoble — 2014 – 2015
APD — 2
Question 5 (4 points) Tout nœud envoie au moins un message CPT. La démonstration va se faire en
raisonnant par récurrence sur l’excentricité des nœuds.
(a) Cas de base : prouver la proposition pour un processus p tel que e(p) est maximum.
(b) Pas de récurrence : on suppose que la propriété est vérifiée pour tout processus q tel que e(q) ≥ k
(pour k donné > 0) et on considère un processus p d’excentricité e(p) = k − 1.
(i) Que dire si p est une feuille ?
(ii) Dans le cas où p n’est pas une feuille, montrer que p a au moins δp − 1 voisins qui ont envoyé un
message à leur père.
(iii) Terminer la démonstration du pas de récurrence. Vous pourrez raisonner par l’absurde.
On peut déduire de cette question que tout nœud a en temps fini un père ou un frère et δp − 1 fils
différents de son père ou de son frère. Il est aussi très facile de constater que les liens vers le père constituent
le chaı̂nage inverse des liens induits par les fils. Autrement dit, pour deux nœuds voisins p et q, en temps
fini, si p est père de q alors q est fils de p.
Question 6 (2 points) Exactement deux processus exécutent decide(NF). Montrer cette proposition en
comptant le nombre de messages reçus.
Indication : utiliser que la somme des degrés d’un graphe est égale à deux fois le nombre d’arêtes.
Question 7 (1.5 point) Les deux processus qui exécutent decide(NF) sont voisins. Montrer cette proposition en comptant le nombre de messages envoyés.
Question 8 (2 points) Vous venez de montrer que deux processus voisins exécutent decide(NF) en
temps fini. Que vaut alors le paramètre NF ? Expliquez pourquoi.
3
Propager le nombre de feuilles
On cherche maintenant à écrire un algorithme qui, une fois l’algorithme précédent terminé, va propager
le nombre de feuilles calculé à tous les nœuds de l’arbre.
On se place sous les mêmes hypothèses que précédemment. En supplément, les nœuds sont munis des
variables père, fils, frère, NF qui ont les mêmes types et signification que précédemment. On suppose que les
variables sont positionnées de la façon suivante :
— Pour exactement deux nœuds voisins, A et B, la variable père vaut ⊥, la variable frère de A vaut B
et vice versa, la variable NF contient le nombre de feuilles de l’arbre.
— Pour les autres nœuds (différents de A et de B), la variable frère vaut ⊥, les variables père et fils
constituent une orientation des arêtes de l’arbre avec pour racine A ou B selon les cas.
Question 9 (3 points) Écrire un algorithme qui propage la valeur NF de A et B à tous les nœuds de
l’arbre. Combien de messages l’algorithme utilise-t-il ?
RICM4, PolyTech’Grenoble — 2014 – 2015
APD — 3
Téléchargement