L3 Informatique Année 2020-2021
Algorithmique (AL5)
TD n
o3 : Parcours en profondeur
Exercice 1 : parcours en profondeur Considérer le graphe de la Figure 1 ci-dessous.
1. Appliquer à ce graphe l’algorithme de parcours en profondeur à partir du sommetq0. Dessiner la forêt du parcours. Donner les dates auxquelles chaque sommet est coloré en gris, respecti- vement en noir. Nommer pour chaque arc du graphe son type : arc “du parcours”, arc “avant”, arc “transverse” ou arc “retour”.
q8
q4
q0
q9
q5
q1
q10
q6
q2
q11
q7
q3
Figure1 – Un graphe orienté.
2. Existe-il une exécution de l’algorithme de parcours en profondeur pour le graphe de la Figure 1 tel que les types des arcs obtenus soient ceux de la Figure 2 ? Argumentez votre réponse !
q8
5−?
q4
18−?
q0
17−?
q9
?−7
q5
?−21
q1
?−24
q10
4−?
q6
2−?
q2
12−?
q11
?−16
q7
10−?
q3
?−14
(A)
(A)
(A) (A)
(T)
(T) (T)
(R) (R)
(R)
Figure 2 – Résultat possible de l’exécution du PPC?
1
L3 Informatique Année 2020-2021
3. Même question si dans la Figure 2, on ne garde que les arcs de parcours (en gras). Si la réponse est «oui», indiquer pour chaque arc son type lors d’une exécution valide de PPC et remplir les dates manquantes de coloriage en gris et en noir.
4. Existe-il une exécution de l’algorithme de parcours en profondeur pour le graphe de la Figure 1 tel que les dates de coloriages en gris et en noir soient celles indiquées par les Figures 3 et respectivement 4 ci-dessous ? Argumentez votre réponse ! Si oui, indiquer le type de chaque arc.
q8
11−14
q4
16−17
q0
15−20
q9
12−13
q5
18−19
q1
22−24
q10
7−10
q6
8−9
q2
3−4
q11
21−23
q7
1−6
q3
2−5
Figure 3 – Valeurs possibles ded etf?
q8
11−16
q4
10−17
q0
21−24
q9
12−15
q5
22−23
q1
1−18
q10
13−14
q6
8−9
q2
4−5
q11
19−20
q7
2−7
q3
3−6
Figure 4 – Valeurs possible ded etf?
Exercice 2 :
Écrire une procédure qui prend en argument un sommet s et une table Π:S → S codant une arborescence de parcours d’un graphe, et qui retourne le chemin conduisant à sdepuis l’origine de l’arbre.
Exercice 3 : cycle
Proposer un algorithme qui vérifie si un graphe orienté possède un cycle et montrer sa correction.
Exercice 4 :
L’algorithme habituel du parcours en profondeur est donné sous forme récursive. En écrire une version itérative, c’est-à-dire donner un algorithme de parcours en profondeur qui ne fait aucun appel récursif. Pour cela, il faudra veiller à bien gérer la pile.
Exercice 5 :
On dit qu’un graphe orienté G= (S, A) est uniquement connecté (singly connected) s’il y a au plus un chemin simple reliant deux sommets quelconque deG. Écrire un algorithme enO(|S|(|S|+
|A|))qui détermine si un graphe orienté est uniquement connecté, puis prouver sa correction.
2