Vous êtes sur la page 1sur 3

Université de Rouen

L3 Informatique et Sciences des données


Algorithmique des graphes

Fiche de travaux dirigés n. 4

Accessibilité : l’algorithme de Roy-Warshall.Plus court chemin : l’algorithme de


Floyd-Warshall. Tri et numérotation topologique.

1 Algorithme de Roy-Warshall
Exercice 1 Soit G = ⟨S, A⟩ le graphe orienté à 6 sommets donné par sa matrice
d’adjacence :  
0 1 0 0 0 0
 0 0 0 1 0 0 
 
 0 0 0 0 0 1 
M =  0 0 1 0


 0 0 
 1 0 1 0 0 0 
0 0 0 1 0 0
1. Exécutez l’algorithme de Roy-Warshall, en déroulant toutes les étapes, pour
calculer la matrice d’accessibilité AC et la matrice P des prédécesseurs de G.

2. Ecrivez une procédure qui prend en entrée un graphe orienté, donné par sa
matrice d’adjacence, et deux sommets i, j de ce graphe et qui donne en sortie,
un chemin du graphe de i vers j, si un tel chemin existe. Définissez la struc-
ture de données que vous utiliserez pour représenter un chemin. Calculez la
complexité de votre algorithme.

3. Appliquez votre algorithme pour repérer un chemin dans G du sommet 5 au


sommet 4.

2 Algorithme de Floyd-Warshall
Exercice 2 Soit G le graphe orienté et valué dont l’ensemble des sommets est S =
{1, . . . , 5}, donné par sa matrice des poids :
 
+∞ 4 +∞ −3 +∞
 +∞ 2 1 2 +∞ 
 

D =  +∞ +∞ +∞ +∞ 2 

 +∞ +∞ −3 +∞ 5 
7 +∞ +∞ +∞ +∞

1. Exécutez l’algorithme de Floyd-Warshall en déroulant toutes les étapes, pour


calculer la matrice des plus courtes distances.
2. La réponse donnée par l’algorithme de Floyd-Warshall est partielle. Il fournit
seulement la plus courte distance entre deux sommets x et y. Nous voudrions
aussi repérer dans le graphe un chemin de x vers y dont le poids est la plus
courte distance entre x et y. Modifier l’algorithme de Floyd-Warshall pour
obtenir un algorithme permettant la construction d’un plus court chemin.

3. Modifier l’algorithme de Floyd-Warshall pour qu’il detecte aussi la présence de


circuits absorbants. Exécutez votre algorithme sur le graphe orienté et valué
donné par sa matrice des poids :
 
+∞ 4 +∞ −3 +∞
 +∞ 2 1 2 +∞ 
 
D =  +∞ +∞ +∞ +∞ −2 


 +∞ +∞ −3 +∞ 5 
−7 +∞ +∞ +∞ +∞

Exercice 3 Les algorithmes de Roy-Warshall et Floyd-Warshall s’appliquent aussi


aux les graphes non orientés. Calculez les plus courts chemins, à partir du sommet
5, du graphe non orienté et valué G dont l’ensemble des arêtes est :
{{1, 2, 4}, {2, 3, 3}, {2, 5, 2}, {2, 7, 6}, {3, 5, 4}, {3, 6, 1}, {4, 5, 4}, {4, 6, 2}, {4, 8, 4},
{5, 6, 5}, {7, 8, 1}}. La notation {x, y, z} signifie une arête {x, y} de poids z.

3 Tri topologique
Un tri topologique pour un graphe orienté G = ⟨S, A⟩ est une permutation de
l’ensemble de ses sommets r : S −→ S telle que si (x, y) ∈ A alors r(x) < r(y).
Soit G = ⟨S, A⟩ un graphe orienté et soit r un tri topologique pour G. Les sommets
de G sont numérotés de manière topologique par rapport à r, si tout sommet x est
nommé y où y est tel que r(x) = y.

Exercice 4 Soit G le graphe orienté suivant donné par sa matrice d’adjacence :


 
0 0 0 1 0 0 0
 1 0 0 0 1 0 1 
 
 1 1 0 0 0 1 0 
 
M =  0 0 0 0 0 0 0  
 0 0 0 1 0 0 0 
 
 0 0 0 0 0 0 0 
0 0 0 0 0 0 0

1. Trouvez un tri topologique r pour G.

2. Trouvez une numérotation topologique par rapport à r des sommets de G.

3. Donnez la matrice d’adjacence Mr de G avec ses sommets numérotés de


manière topologique par rapport à r.

2
4. Ecrivez une procédure qui permet, étant donné la matrice d’adjacence M d’un
graphe orienté G et un tri topologique r des ses sommets, d’obtenir la matrice
d’adjacence Mr de G avec ses sommets numérotés de manière topologique par
rapport à r.

Exercice 5 Montrez que un graphe orienté G est sans circuits si et seulement si


il existe un tri topologique des sommets de G. Déduisez de la preuve de cette
proposition un algorithme qui permet de tester si un graphe orienté possède de
circuits.

Vous aimerez peut-être aussi