Académique Documents
Professionnel Documents
Culture Documents
A B C
D E
On veut savoir s’il est possible, en partant de l’un des cinq pays, de visiter tous les autres
pays en franchissant toutes les frontières avec la seule contrainte de ne jamais franchir deux
fois la même frontière.
Répondez à cette question en utilisant un graphe. Que faut-il chercher dans le graphe
que vous utilisez pour répondre à la question posée ?
1
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. Utiliser la matrice P pour repérer un chemin du sommet 1 au sommet 4. Expliquez
votre méthode.
Solution :
En exécutant l’algorithme de Roy-Warshall, on obtient les 2 matrices suivantes :
1 1 1 1 1 1 1 1
0 1 1 1 0 0 1 1
0 1 1 1 0 0 1 1
0 1 1 1 0 0 1 1
(8]
R =
0 1 1 1 1 0 1 1
0 1 1 1 1 1 1 1
0 1 1 1 0 0 1 1
0 1 1 1 0 0 1 1
1 1 8 3 1 1 2 7
0 2 8 3 0 0 2 7
0 3 3 3 0 0 3 7
0 3 8 4 0 0 0 4
P (8) =
0 5 8 3 5 0 2 7
0 5 8 3 6 6 6 6
0 3 8 3 0 0 7 7
0 3 8 3 0 0 3 8
On obtient le chemin de 1 vers 4 en utilisant la première ligne de la matrice P (8) :
(1, 2, 7, 8, 3, 4)
1. Soit G le graphe orienté dont ensemble des sommets est S = {1, . . . , 5} et l’ensemble
d’arcs est A = {(1, 2), (2, 1), (2, 4), (3, 5), (4, 1), (4, 3), (4, 5)}. Après avoir numéroté les arcs
de G avec les entiers de 1 à 7, donnez l’ensemble des sommets et l’ensemble des arcs du
graphe dual H de G.
2. Soit N la matrice de taille 5 × 5 définie par N [i, j] =nombre de l’arc (i, j) de G. Donnez
la matrice N .
Soit GrapheMD la structure des données suivante, qui permet de représenter un graphe
2
par sa matrice d’adjacence en mémorisant son nombre de sommets et son nombre d’arcs.
3. Écrire une procédure Numarcs qui prend en entrée un graphe orienté G de type GrapheMD
et donne en sortie la matrice N de dimension G.n × G.n définie par N [i, j] =nombre de l’arc
(i, j) de G.
4. Écrire une procédure CalculDual qui prend en entrée un graphe orienté G de type
GrapheMD et qui donne en sortie le graphe dual H de G de type GrapheMD.
Solution :
1. H = (S, A) où S = {1, cdots, 7}, A = {(1, 2), (1, 3), (2, 1), (3, 5), (3, 6), (3, 7), (5, 1), (6, 4)}
2.
0 1 0 0 0
2 0 0 3 0
N = 0 0 0 0 4
5 0 0 6 7
0 0 0 0 0
3.
Procédure Numarcs(G : GrapheMD; var N : Tableau[1 . . . n] d’Entier);
Var i, j, k : Entier;
Début
k ← 1;
Pour i de 1 à G.n faire
Début
Si G.M [i, j] alors
Début
N [i, k] ← k;
k ← k + 1;
Finsi
Sinon
N [i, k] ← 0;
Finprocédure
4.
Procédure GrapheDual(G : GrapheMD; var H : GrapheMD);
Var i, j, k, l : Entier; N : Tableau[1 . . . n] d’Entier;
Début
Numarcs(G, N );
N.n ← G.m;
Pour i de 1 à H.n faire
Pour j de 1 à H.n faire
H.M [i, j] ← 0;
k ← 0;
Pour i de 1 à G.n faire
Pour j de 1 à G.n faire
3
Si G.M [i, j] alors
Pour l de 1 à G.n faire
Si G.M [j, l] alors
Début
H.M [N [i, j], N [j, l], k] ← k;
k ← k + 1;
Finsi
H.m ← k;
Finprocédure
Exécutez l’algorithme de Dijkstra sur le graphe G, en déroulant toutes les étapes, à partir du
sommet 1. Vous donnerez, à chaque étape de l’algorithme, le sommet choisi (sauf pour l’étape
d’initialisation), et pour chaque sommet x, la valeur de l’attribut d[x], le prédécesseur π(x)
sur un plus court chemin de 1 vers x et les valeurs O(x), F (x) qui indiquent respectivement
si le sommet x est ouvert et s’il est fermé, sous la forme suivante :
Sommet choisi:
1 2 3 4 5 6 7 8
d
π
O
F
En exécutant l’agorithme de Dijkstra dans toutes ses étapes, on obtient les tableaux suivants
:
1 2 3 4 5 6 7 8
d 0 3 4 15 8 8 11 ∞
π 0 1 1 5 3 2 6 ∞
O V V V V V V V F
F V V V V V V V F