Département Informatique
TD 2
Graphes et langages
M2201
2015–2016
Dans ce TD, nous allons étudier des algorithmes pour calculer la fermeture transitive d’un graphe.
Exercice 1 : Comptage de chemins et cycles
Q1 : Dessinez le graphe non orienté qui admet pour matrice d’adjacence la matrice Mci-dessous.
M=
0110
1010
1101
0010
Q2 : Calculez (produit non booléen) M2,M3, puis M+M2.
Q3 : Combien y a-t-il de chaînes de longueur 2 menant 1 à 2 ? 2 à 4 ? 3 à 4 ?
Q4 : Combien y a-t-il de chaînes de longueur 2menant 1 à 2 ? 2 à 4 ? 3 à 4 ?
Q5 : Combien y a-t-il de chaînes de longueur 3 menant 2 à 3 ? 2 à 1 ?
Q6 : Combien y a-t-il de cycles de longueur 3 ayant 3 comme sommet de départ ? 4 comme sommet de
départ ?
Q7 : Donnez un exemple de cycle de longueur 4. Est-il élémentaire ?
Q8 : Donnez tous les cycles de longueur 3. (Y en a t-il 1, 2, 3, ou 6 ?)
Q9 : Donnez tous les cycles élémentaires de ce graphe.
Exercice 2 : Calcul de la fermeture transitive d’un graphe
Définition et exemple
Soit G= (X, A)un graphe. On appelle fermeture transitive de Gle graphe T(G) = (X, A0)avec (x, y)A0
si et seulement si il existe un chemin entre xet ydans G.
Q10 : Calculez à la main la fermeture transitive du graphe de droite dans la figure 1.
3
1 2
54
(a)
1
2
3
4
5
(b)
1 2
3
45
(c)
Figure 1 – Graphes pour lesquels on veut calculer la fermeture transitive
Calcul matriciel et fermeture transitive
Considérons maintenant un graphe à nsommets représenté par sa matrice d’adjacence Ret soit Rle
graphe associé à cette matrice.
Q11 : Écrivez la formule de calcul d’un coefficient pour le produit booléen de deux matrices.
Q12 : Que représente l’expression Fsuivante ?
F=R∪R2. . . ∪ Rn(1)
Q13 : Déduisez un algorithme permettant de calculer la fermeture transitive de R.
Q14 : Quelle est sa complexité ?
Soient S1,S2, . . . les graphes définis de la manière suivante :
S1=R∪R2(2)
Sk=Sk1∪ S2
k1,pour k2(3)
Q15 : Déduisez une méthode plus rapide que la précédente pour calculer la fermeture transitive de R. Quelle
est sa complexité ?
Exercice 3 : Méthode de Roy-Warshall
La méthode de Roy-Warshall est la méthode la plus rapide connue pour déterminer la fermeture transitive
T(G)d’un graphe G. En voici la description :
Soit θr(G)le graphe obtenu à partir du graphe Get du sommet rde la
manière suivante :
1. θr(G)a les mêmes sommets que G. Il possède un arc du sommet
ivers le sommet jdans l’un ou l’autre des deux cas suivants :
(a) il y a un arc dans Gde ivers j
(b) il y a un arc dans Gde ivers ret un arc dans Gde rvers j
2. pour un graphe contenant nsommets calculer θ1(G),
puis θ2(θ1(G)) puis θ3(θ2(θ1(G))), jusqu’à Θ(G) =
θn(. . . (θ2(θ1(G))) . . .)).
3. Le graphe ainsi obtenu est la fermeture transitive du graphe G.
Q16 : Écrivez cette méthode sous la forme d’un algorithme.
Q17 : Quelle est la complexité de l’algorithme de Roy-Warshall ?
Q18 : Appliquez l’algorithme de Roy-Warshall aux graphes de la figure 1.
Q19 : Montrez que pour tout arc (i, j)ajouté par l’algorithme, il existe un chemin entre iet jdans G.
Q20 : Déduisez que Θ(G)T(G).
Q21 : Montrez que pour tout graphe G,θs(θr(G)) = θr(θs(G)).
Q22 : Déduisez que l’ordre d’application des θr(.)n’a pas d’importance dans l’algorithme.
Q23 : Montrez que s’il existe un chemin c= [i, . . . , j]tel que (i, j)n’est pas dans Θ(G)alors il existe un
chemin c0= [i, . . . , j0]de plus petite longueur que ct.q. (i, j0)n’est pas dans Θ(G).
Q24 : Grâce à une démonstration par l’absurde, déduisez que T(G)Θ(G).
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 l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!