Département Informatique
TD 3
Graphes et langages
M2201
2015–2016
Dans ce TD, nous allons étudier un algorithme qui permet de calculer tous les sommets atteignables par
un chemin à partir d’un sommet initial.
Exercice 1 : Analyse d’algorithme : parcours en profondeur d’abord dans un graphe
Dans cette section, nous allons étudier un algorithme de parcours de graphe à partir d’un sommet i0. On
dira que iest descendant de js’il existe un chemin allant de jài.
Dans cet algorithme, on utilise les notations suivantes :
p(i): cette valeur permet de savoir si le sommet ia été visité. Lorsque in’est pas visité, p(i) = 0.
Sinon, p(i)a la valeur du sommet à partir duquel on l’a atteint. Par convention, on fixe p(i0) = i0.
n(i)est le nombre de successeurs de iqui n’ont pas encore été visités à partir de i. Initialement, cette
valeur est initialisée à |N+(i)|le nombre de successeurs de i.
// initialisation de l’algorithme
pour i= 1, . . . , n faire
p(i)0;
n(i)← |N+(i)|;
fin
p(i0)i0;
ii0;
// on continue tant qu’on n’est pas revenu sur i0en visitant tous ses successeurs
tant que n(i0)>0ou i6=i0faire
// on teste si tous les successeurs de iont été vus
si n(i)6= 0 alors
sélectionner parmi les successeurs de ile sommet jvenant en position n(i);
n(i)n(i)1;
si p(j) = 0 alors
p(j)i;
ij;
fin
sinon
// on remonte d’un cran en revenant sur le sommet qui a permis d’atteindre i
// on dit qu’on ”ferme” le sommet i
ip(i)
fin
fin
Algorithme 1 : Parcours en profondeur d’abord dans un graphe
Q1 : Appliquez l’algorithme au graphe de la Figure 1, avec comme sommet initial 1.
On admettra dans un premier temps qu’on construit pas à pas une arborescence de racine i0. On rap-
portera la situation à chaque passage de la boucle tant que en utilisant les conventions suivantes :
initialement, l’arborescence ne contient que la racine ;
quand on sélectionne un sommet jtel que p(j) = 0, on ajoute un arc avec un trait plein à l’arbores-
cence ;
quand on ferme le sommet i, on met l’arc (p(i), i)en pointillé.
Q2 : Dans quelle situation est-on lorsque dans le test, on a n(i0) = 0 et i=i0?
Q3 : Montrez qu’au cours de l’algorithme, on construit une arborescence de racine i0.
Q4 : À quelle condition un sommet est-il retiré de l’arborescence ?
Q5 : Montrez que tout sommet qui est descendant de i0est atteint au cours de l’algorithme.
Q6 : Quelle est la complexité de l’algorithme si on utilise une liste de sucesseurs ?
Q7 : Même question si on utilise une matrice d’adjacence.
1
23
74
5 6
Figure 1 – Graphe 1
Exercice 2 : Modélisation : la chèvre, le loup, le chou
Un berger cherche à faire passer un chou (un gros), une chèvre, et un loup de l’autre côté de la rivière.
Il ne peut emporter qu’un seul des trois dans sa barque à la fois.
De plus, si la chèvre et le chou sont ensemble sur une rive quand le berger s’éloigne, la chèvre mange le
chou. Si le loup et la chèvre sont ensemble quand le berger s’éloigne, le loup mange la chèvre.
Q8 : Proposez une modélisation du problème sous forme de graphe.
Q9 : Appliquez la méthode de votre choix pour résoudre ce problème informatiquement.
On peut étendre le problème en ajoutant un bâton et une torche enflammée. Cette fois, le berger peut
emporter deux objets ou animaux à la fois.
Si le bâton et le loup sont ensemble quand le berger s’éloigne, le bâton bat le loup. Si le feu et le bâton
sont ensemble quand le berger s’éloigne, le feu brûle le bâton.
Q10 : Appliquez votre méthode sur ce nouveau graphe.
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !