TD 5 TG Algorithme de Dijkstra

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 7

Cours et TD : Algorithme de Dijkstra et coloration des graphes

Chapitre 4 : Les algorithme de recherche des plus courts chemins et coloration


d’un graphe
1. Introduction
 Rappel : un graphe valué G = (V,E,f) est un graphe orienté ou non muni d’une
fonction coût f qui représente la valeur de chaque arc ou arête (avec f ( x, y)  
si f ( x, y)  E ).
 Le problème du plus court chemin consiste à trouver un chemin d’un sommet à un
autre de façon que la somme des poids des arcs de ce chemin soit minimum.
 Ce problème a de nombreuses applications comme par exemple
 Routage dans des réseaux de télécommunication
 Trouver le moyen le plus économique pour aller d’une ville à une autre ville
de la planète. Par exemple coût minimum pour aller de Tunis à Tokyo
connaissant pour chaque ligne aérienne le prix de billet d’avion.
 Optimisation des réseaux routiers ou des réseaux de chemin de fer.
 Dans un réseau non orienté, on a toujours d(x,y)=d(y,x)
 Le coût du chemin C=[x0,x1,…………..,xk] est la somme des coût des arcs ou
n
arêtes qui forment le chemin C : F (C )   f ( xi 1 , xi )
i 1

 Si C=[xi] alors le chemin est réduit à un seul sommet donc F(C)=0


 Un chemin minimum de x vers y est un chemin C tel que :
F (C )  min  f (  ) /  est un che min de x vers y
 La matrice des valeurs (ou coût) d’un graphe valué G=f(V,E,f) est une
matrice de taille nxn, n étant le nombre de sommets C=(ci,j) définie par :
0, i  j

ci , j   f ( xi , y j ), si i  j et ( xi , y j )  E

, si i  j et ( xi , y j )  E
2. Représentation matricielle des graphes valués
La matrice C associée à un graphe non orienté (ou non) valué d’ordre n est une
matrice d’ordre nxn. Elle est définie comme suit :
, s ' il n ' y a pas d ' arcs entre i et j

ci , j  coût (i, j )
0, si i  j

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.

TD N°4 : Théorie des Graphes


Algorithme de Dijkstra : Le plus court chemin entre deux sommets A et B

EXERCICE 1
Soit le graphe G suivant :
9
C
A
4
2
S
2 7
P
8
B 2
2 D

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. En appliquant l’algorithme de DIJKSTRA, trouver le plus court chemin entre le
sommet S et le sommet P.

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

Pays Italie Luxembourg Portugal Roumanie Suisse


Sommet I L P R S

5
On donne le graphe G correspondant.

1. Ce graphe est-il hamiltonien ?


2. Déterminer le degré de chaque sommet.
3. Ce graphe est il eulérien ? Semi-eulérien ? Justifier votre réponse.
4. Donner un minorant et un majorant du nombre chromatique de ce graphe.
5. En utilisant l’algorithme de coloration de Welch et Powell, déterminer le nombre
chromatique de ce graphe. En déduire une coloration de cette carte avec le
minimum de couleurs.
6. Le graphe G peut-il être biparti ?Justifier votre réponse.
Réponse
1. Ce graphe n’est pas hamiltonien car il comporte au moins un sommet de degré 1
2.
Pays x P E F B L I S A H D R A’
d(x) 1 2 6 4 3 3 4 8 2 1 2 4
3. Ce graphe n’est ni eulérien ni semi eulérien par ce qu’il a plus de deux sommets de
degrés impairs (4).
4. Le majorant du nombre chromatique est 9, car le degré max des sommets est égal
à 8 (Allemagne). Le minorant provient du fait que le sous-graphe : A,B,F,L est
complet (nombre chromatique égal à 4). En conclusion le nombre chromatique doit
être compris entre 4 et 9 avec une inégalité large.
5. Si on fait le tri par ordre décroissant des degrés
Pays x A F B S A’ L I E H R P D
d(x) 8 6 4 4 4 3 3 2 2 2 1 1

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.

Vous aimerez peut-être aussi