Algorithmes Fondamentaux 3 - Laboratoire d`Informatique

publicité
Université de Provence
distribué le 5 avril 2007
M ASTER I NFORMATIQUE
Programmation Parallèle
et Distribuée
2006-2007
Problèmes et Algorithmes Fondamentaux III
Dans ce qui suit on suppose donné un graphe G = (V, E) qui modélise un réseau
d’interconnexions. Les sommets du graphe modélisent les entités de calculs. Les arêtes
du graphe modélisent les liens de communication directe entre deux entités de calculs.
A
Calculs locaux Dans cette exercice on suppose que chaque sommet (resp.
chaque arête) du graphe possède une étiquette qui code son état. On suppose qu’initialement, un sommet distingué du graphe est dans un état actif que l’on code avec
l’étiquette A. Les autres sommets sont dans un état neutre codé avec l’étiquette N . Les
arêtes ont toutes la même étiquette initiale 0. Soit la règle suivante :
R1 : “Si un sommet dont l’étiquette est A possède un voisin dont l’étiquette est N
alors l’étiquette de ce dernier est remplacée par A. L’étiquette de l’arête reliant les
deux sommets devient 1.”
1.1 Donner une représentation schématique de la règle R1 .
1.2 Appliquer (séquentiellement) la règle R1 sur un grille rectangulaire 3 × 3 avec différents
emplacements pour le sommet étiqueté A.
1.3 Que code la règle R1 ? Prouvez le ?
1.4 Rappeler les différents type de terminaison. De quelle terminaison s’agit-il ici ? Ajouter des
règles pour obtenir les autres terminaisons.
1.5 Peut-on se passer des étiquettes sur les arêtes ?
B
Algorithmes de calcul d’arbres BFS
un arbre BFS de la façon suivante :
(Parcours en largeur) On définit
Définition : Un arbre BFS d’un graphe G respectivement à un sommet racine r est
un arbre recouvrant T de G telque : ∀v ∈ V, dT (v, r) = dG (v, r).
2.0 Construire un arbre BFS d’un grille rectangulaire avec une racine dans un coin, puis au
centre de la grille. À quoi pourrait servir ce type de structures ?
Algorithme de Dijkstra
L’idée de l’algorithme est de construire l’arbre à partir de la racine en rajoutant une
couche entière à chaque étape.
2.1 Proposer un algorithme distribué dans le modèle synchrone avec échange de messages pour
implémenter cette idée ?
2.2 Quelle est la complexité de votre algorithme en nombre de messages et en temps ?
2.3 Proposer un algorithme dans le cas asynchrone. Quelle est sa complexité ?
Algorithme de Bellman-Ford
L’algorithme est donnée de façon shématique dans la figure 1.
B. Derbel, E. Godard
1
distribué le 5 avril 2007
– Initialement, la racine choisit L(r) := 0 et tous les autres sommets v 6= r choisissent
L(v) := ∞.
– La racine envoie le message Layer(0) à tous ses voisins.
– Chaque sommet v réagit aux messages qu’il reçoit de la façon suivante :
– À la réception d’un message Layer(d) d’un sommet w voisin Faire :
– Si d + 1 < L(v) Alors Faire :
– parent(v) := w ;
– L(v) := d + 1 ;
– Envoyer Layer(d + 1) à tous les voisins à l’exception de w.
F IG . 1 – Algorithme BFS (Bellman-Ford)
2.4 Éxécuter l’algorithme de Bellman-Ford sur un anneau bidirectionnel.
2.5 Étudier la correction ainsi que la complexité de l’algorithme de Bellman-Ford dans le modèle
synchrone avec échange de messages.K
2.6 Même question mais dans le cas asynchrone.
B. Derbel, E. Godard
2
Téléchargement