TD 5 TG Algorithme de Dijkstra
TD 5 TG Algorithme de Dijkstra
TD 5 TG Algorithme de Dijkstra
1
EXEMPLE
8 V2
V1
13 3
1 3
4 8
5 V4
V6
6 5
2
V5 V3
7
1 2 3 4 5 6
1 0 8 ∞ ∞ 4 ∞
2 ∞ 0 3 ∞ 8 ∞
3 ∞ ∞ 0 ∞ ∞
4 13 3 ∞ 0 ∞ 5
5 ∞ ∞ 7 5 0 ∞
6 1 ∞ ∞ ∞ 6 0
3. Recherche des plus courts chemins
3.1 Algorithme de Dijkstra
C’est un algorithme de recherche de distance et de plus court chemin entre deux
sommets du graphe, qui ne fonctionne qu’avec des valuations positives.
Il peut être appliqué sur des graphes orientés ou non orientés
Principe de l’algorithme :
A partir d’un sommet x0, on construit un ensemble M de sommets marqués. Pour
tout sommet marqué s, l’estimation d(s) est égale à d(x0,s)
A chaque itération, on sélectionne un sommet non marqué x qui a la distance
estimée d(x) minimale parmi tous les sommets non marqués.
X sera marqué (ajouté à l’ensemble M), puis on met à jour les distances estimées
des successeurs non marqués de x.
On répète, jusqu’à épuisement des sommets non marqués.
EXEMPLE
On considère le graphe G suivant. Utiliser l’algorithme de Dijkstra à partir du
sommet S pour trouver le plus court chemin de s à e.
a 1 b
4
5 1
2 2
e
S
1 2
2
c 5 d
2
s a b c d e
Etape 1 0 5-s 1-s
Etape 2 * 3-c 3-c 1-s 6-c
Etape 3 * 3-c * 4-b
Etape 4 * * * 4-b 6-d
Etape 5 * * * 6-d
Le chemin le plus court est donc s-c-b-d-e avec d(s,e)=6 qui est la distance minimale
entre s et e.
EXERCICE 1
Soit le graphe G suivant :
9
C
A
4
2
S
2 7
P
8
B 2
2 D
Solution
S A B C D P
Etape 1 0 4-s 8-s
Etape 2 * 4-s 6-a 13-a
Etape 3 * * 6-a 8-b
Etape 4 * * * 15-d 8-b 10-d
Etape 5 * * * * 10-d
Le chemin le plus court est donc s-a-b-d-p de longueur 10.
3
EXERCICE 2
On considère un réseau routier de 7 villages A,B,C,D,E,F et G. Les étiquettes sur les arêtes
représentent la distance en kilomètre entre les villages correspondants. On cherche le
plus court chemin entre le village A et le village G.
1. Donner la liste d’adjacence de ce graphe.
2. Ce graphe est il eulérien ?
3. Ce graphe est il hamiltonien ?
4. Faire le parcours de ce graphe en largeur puis en profondeur.
5. Utiliser l’algorithme de Dijkstra pour déterminer le plus court chemin entre le
village A et le village G.
3 F
B
1 2 3 4
A
D 3
G
2
3
C 2
5
4 E
Solution
A B C D E F G
Etape 1 0 1-A 2-A
Etape 2 * 1-A 3-B 4-B
Etape 3 * * 2-A 5-C 6-C
Etape 4 * * * 3-B 5-D 6-D 6-D
Etape 5 * * * * 4-B 8-F
Etape 6 * * * * 5-D * 10-E
Etape 7 * * * * * * 6-D
Solution :Le plus court chemin A-B-D-G : Il est de longueur 6 kilomètres.
EXERCICE 3
Le graphe ci-après représente les coût de câblage qui relie 12 commutateurs. L’intérêt
est de construire un réseau avec un coût minimum.
1 B 5 2
A C D
3 2 5 3 4 2
1
E 2 F 4 5 H
G
3 3
3 3 3 4 5
I 2 J 4 K 5 L
4
1. Ce graphe est il eulérien ? Dans l’affirmative donner un chemin ou un cycle eulérien.
2. Ce graphe est il hamiltonien ? Dans l’affirmative donner un chemin ou un cycle
hamiltonien.
3. Utiliser l’algorithme de Dijkstra pour déterminer le plus court chemin entre les
villages A et L.
Solution
A B C D E F G H I J K L
Etape1 0 1-A 3-A
Etape2 * 1-A 6-B 6-B 3-B
Etape3 * * 3-A 6-E
Etape4 * * * 6-I 3-B 5-I
Etape5 * * * 8-J 8-J * 5-I 9-J
Etape6 * * 6-B 8-C * 9-C 7-C * *
Etape7 * * * * 6-B 10-F * *
Etape8 * * * 11-G * * 7-C 12-G * * 11-G 10-G
Etape9 * * * 8-C * * * 10-D * *
Etape10 * * * * * * * * * 9-J 14-K
Etape11 * * * * * * * * * *
Etape12 * * * * * * * ** * * * 10-G
Conclusion : Le chemin le plus court entre A et L est : A-B-C-G-L. Il est de longueur 10.
EXERCICE N° 4 :
On considère la carte d’une partie de l’Europe (en blanc): les pays sont les sommets d’un
graphe G, désignés par la première lettre du pays comme indiqué dans le tableau ci-
dessous. Nous n’avons pas pris les îles ( qui appartiennent à ces pays) et qui ont une
frontière uniquement avec la mer. Les frontières entre les pays sont les arêtes du graphe
G.
Pays Allemagne Autriche Belgique Danemark Espagne France Hollande
Sommet A A’ B D E F H
5
On donne le graphe G correspondant.
6
Avec 4 couleurs, on peut faire en sorte que deux pays ayant une frontière n’aient
pas la même couleur, mais avec 3 c’est impossible, donc le nombre chromatique
de ce graphe est 4.
Voici un exemple de coloration possible :
6. Le graphe G n’est pas biparti tout simplement parce que son nombre chromatique
est différent de 2.