Constructions distribuées d’arbres couvrants "1 Algorithmique répartie! M1 Université d’Evry! Lélia Blin Lélia Blin Arbre propriétés (rappel) ❖ Soit T=(V,E) un graphe à n sommets ces propriétés sont équivalentes! ❖ T est un arbre! ❖ T est connexe et sans cycle! ❖ T est connexe et admet n-1 arêtes! ❖ T est sans cycle et admet n-1 arêtes! ❖ T est connexe et si on supprime une arête quelconque, il ne l’est plus ! ❖ T est sans cycle et en ajoutant une arête on crée un cycle et 1 seul "2 Lélia Blin Arbre remarques ❖ Un arbre n’a pas toujours de racine! ❖ Feuille: ! ❖ ❖ noeud qui a un seul voisin! Noeud interne:! ❖ noeud qui a plusieurs voisins "3 Lélia Blin Arbre enraciné ❖ Un arbre enraciné est un arbre qui a une racine! ❖ La notion de feuille et de noeud interne reste la même! ❖ Parent:! ❖ ❖ r voisin sur l’unique chemin entre le noeud est la racine! Enfant(s):! ❖ voisin(s) qui n’est pas parent si il existe "4 Lélia Blin Graphe partiel ❖ Soit G=(V,E) un graphe! ❖ V l’ensemble des sommets! ❖ E l’ensemble des arrêtes! ❖ Un graphe partiel G’ de G est un graphe qui a les mêmes sommets que G et dont l’ensemble des arêtes est inclus dans G! ❖ G’=(V,E’) avec E’⊂E "5 Lélia Blin Arbre couvrant ❖ Soit G=(V,E) un graphe! ❖ Un arbre couvrant de G est! ❖ Un graphe partiel acyclique "6 Lélia Blin Algorithme distribué uniformité ❖ ❖ Soit un réseau G(V,E)! ❖ V est l’ensemble des processeurs de G! ❖ E est l’ensemble des liens bidirectionnels de communication! Si l’ensemble des processeurs ont le même algorithme! ❖ ❖ l’algorithme distribué est dit uniforme! Si un ou plusieurs processeurs ont des algorithmes dédiés! ❖ L’algorithme distribué est dit semi-uniforme "7 Lélia Blin Algorithmes distribués semi-uniforme de construction d’arbre couvrant "8 Lélia Blin Arbre couvrant enraciné ❖ ❖ ❖ Soit un graphe G(V,E) quelconque! ❖ V est l’ensemble des noeud de G! ❖ E est l’ensemble des liens bidirectionnels de communication! Le réseau est asynchrone! On distingue un noeud r de V! ❖ r sera considéré comme la racine de l’arbre couvrant! ❖ Chaque noeud i connait l’ensemble de ces voisins Ni! ❖ On veut construire un arbre couvrant enraciné en r! ❖ Algorithme semi-uniforme "9 Lélia Blin Principe ❖ Chaque noeud est endormi! ❖ La racine r déclenche l’algorithme! ❖ Chaque fois qu’un noeud reçoit un message pour la première fois! ❖ Il se réveille! ❖ Il considère comme parent le voisin qui la réveillé "10 Lélia Blin Pseudo code ❖ ❖ Initialisation de i • parenti := nil; Réveil de la racine r • enfantsr := ∅; • • msgAttendur := |Nr|; Envoyé <Go> à Nr "11 Lélia Blin Pseudo code ❖ Lors de la reception de <Go> envoyé par j: • si parenti = nil alors • parenti := j ; enfantsi := ∅ ; msgAttendui := |Ni|-1 ; Envoyé <Go> à Ni -j • sinon • msgAttendui := msgAttendui -1 • si msgAttendui = 0 • envoyé <Back> à parenti Lors de la reception de <Back> envoyé par j • msgAttendui := msgAttendui -1 • enfantsi := enfantsi ⋃ {j} • ❖ • si msgAttendui = 0 • envoyé <Back> à parenti "12 Lélia Blin Exemple "13 Lélia Blin Complexité ❖ Nombre de messages! ❖ 2 messages par lien ! ❖ Graphe contenant le plus de liens: ! ❖ ❖ graphe complet: ⋍n2 liens! ❖ Total ⋍2n2! ❖ Ordre de grandeur: O(n2) messages! Taille des messages! ❖ messages: Go et Back! ❖ Chaines de caractère! ❖ Ordre de grandeur: O(1) "14 Lélia Blin Terminaison ❖ Terminaison locale:! ❖ ❖ Quand un noeud u envoie le message <Back>! Terminaison globale:! ❖ Quand la racine reçois le dernier message! ❖ ❖ msgAttendui = 0! rm: la racine n’a pas de parent, elle n’enverra pas de message <Back> "15 Lélia Blin Question ❖ La relation parent-enfants est elle toujours la même?! ❖ Cette relation dépend de l’asynchronisme du réseaux! ❖ Réseaux synchrone! ❖ ❖ Toujours le même arbre couvrant! Réseaux asynchrone! ❖ Arbres couvrants différents "16 Lélia Blin Exemple synchrone "17 Lélia Blin Arbre couvrant en largeur ❖ ❖ ❖ Soit un graphe G(V,E) quelconque! ❖ V est l’ensemble des noeud de G! ❖ E est l’ensemble des liens bidirectionnels de communication! Le réseau est asynchrone! On distingue un noeud r de V! ❖ r sera considéré comme la racine de l’arbre couvrant! ❖ Chaque noeud i connait l’ensemble de ces voisins Ni! ❖ On veut construire un arbre en profondeur couvrant ayant comme racine r! ❖ Algorithme semi-uniforme "18 Lélia Blin Principe ❖ Chaque noeud est endormi! ❖ La racine r déclenche l’algorithme par l’envoie d’une distance! ❖ Un noeud choisit comme parent! ❖ celui qui a la plus petite distance à la racine "19 Lélia Blin Pseudo code ❖ Initialisation de i • parenti := nil; • ❖ ❖ distancer := ∞ Réveil de la racine r • distancer := 0 • Envoyé <Go,0> à Nr Lors de la reception de <Go,d> envoyé par j: • si d+1< distancei alors • parenti := j ; distancei := d+1 • envoyé <Go,d+1> à Ni-{j} "20 Lélia Blin Exemple "21 Lélia Blin Complexité ❖ Nombre de messages! ❖ O(n) messages par lien ! ❖ Graphe contenant le plus de liens: ! ❖ ❖ ❖ graphe complet: ⋍n2 liens! Ordre de grandeur: O(n3) messages! Taille des messages! ❖ messages: <Go,distance> ! ❖ Distance la plus longue: chaîne -> n-1! ❖ Ordre de grandeur: O(log n) "22 Lélia Blin Construction d’un pire des cas pour le nombre de messages "23 Lélia Blin Terminaison ❖ Terminaison locale:! ❖ ❖ non connue! Terminaison globale:! ❖ non connue "24 Lélia Blin Question ❖ La relation parent-enfants est elle toujours la même?! ❖ Cette relation dépend de l’asynchronisme du réseaux! ❖ Réseaux synchrone! ❖ ❖ Toujours le même arbre couvrant! Réseaux asynchrone! ❖ Arbres couvrants différents mes distance égales "25 Lélia Blin Exemples 0 1 0 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 4 3 4 "26 Lélia Blin Question ❖ Comment construire un BFS ayant toujours la même relation parent enfants?! ! ❖ Réponse: Rajouter l’identifiant "27 Lélia Blin Pseudo code ❖ Initialisation de i • parenti := nil; • ❖ ❖ distancer := ∞ Réveil de la racine r • distancer := 0 • Envoyé <Go,0> à Nr Lors de la reception de <Go,d> envoyé par j: • si (d+1<distancei)ou (d+1=distancei et parenti> j) alors • parenti := j ; distancei := d+1 • envoyé <Go,d+1> à Ni-{j} "28 Lélia Blin Exemple A C B F D G I E H K J "29 Lélia Blin Complexité ❖ La complexité en nombre de message reste inchangée "30