Définitions et concepts fondamentaux de la théorie des graphes

publicité
Chapitre 1
Définitions et concepts
fondamentaux de la théorie des
graphes
1
Chapitre 2
Les plus courts Chemins :
algorithme de Dijkstra
2.1
Rappels théoriques
En théorie des graphes, l’algorithme de Dijkstra sert à résoudre le problème du plus
court chemin, c’est-à-dire, trouver le chemin le plus court entre deux sommets d’un
graphe. Il permet, par exemple, de déterminer le plus court chemin pour se rendre d’une
ville à une autre connaissant le réseau routier d’une région. Il s’applique à un graphe
connexe. De plus, cet algorithme est souvent réalisé à l’aide d’un tableau dans lequel
chaque étape correspond à une ligne.
Afin de résoudre les exercices, nous allons définir les notions suivantes :
– Le poids associé à l’arête e est un nombre réel noté w(e). On considère que le
poids associé à une arête est typiquement une longueur.
– Un graphe pondéré est un graphe pour lequel un poids est associé à chacune
des arêtes.
– Le poids ou la longueur d’un parcours est la somme des poids associés à chacune des arêtes qui le compose.
– d(u, v) = la longueur du plus court chemin du sommet u vers le sommet v du
graphe.
⇒ plusieurs hypothèses sont considérées : G est un graphe simple et tous les poids
associés aux arêtes d’un graphe sont ≥ 0. De plus par convention, le poids entre
deux sommets qui ne sont pas adjacents est défini par w = ∞.
2
Algorithme de Dijkstra
– S = sous-ensemble de V (= ensemble des sommets du graphe (V, E, ψ)) tel que
u0 ∈ S où u0 est le sommet de départ.
– u′ = sommet considéré à chaque étape.
– l(v) = valeur associée à chaque sommet v. Initialement l(u0 ) et l(v) = ∞ pour
v 6= u0 .
→
→
→
→
→
→
INITIALISATION : l(u0 ) = 0, l(v) = ∞ pour v 6= u, S := u0 , u′ = u.
BOUCLE (tant qu’il reste des sommets hors de S) :
pour chaque v 6∈ S, l(v) = min(l(v), l(u′ ) + w(u′ v))
trouver vmin 6∈ S tel que l(vmin ) ≤ l(v) pour tout v 6∈ S
u′ := vmin
S := S ∪ {u′ }
2.2
Exercices
Exercice 1 :
Une compagnie admet 6 succursales dans chacune des 6 villes notées C1 , C2 , · · · , C6 . Le
prix d’un vol direct de la ville Ci à la ville Cj est donné par la (i, j)ième entrée dans la
matrice suivante (∞ signifie qu’il n’existe pas de vol direct).








0
50
∞
40
25
10
50
0
15
20
∞
25
∞
15
0
10
20
∞
40
20
10
0
10
25
25
∞
20
10
0
55
10
25
∞
25
55
0








Quel est le parcours le moins cher pour aller de la ville C1 à la ville C3 ?
3
Exercice 2 :
Trouver les distances à partir de a du graphe dirigé suivant :
Exercice 3 :
Un voyageur souhaite se rendre de Marseille au Futuroscope en train. D’une carte du
réseau TGV, il a extrait le schéma suivant :
Les guides donnent par ailleurs les temps suivants :
Marseille-Lyon : 1h50
Marseille-Paris : 3h
Marseille-Toulouse : 3h
Lyon-Paris : 2h15
Lyon-St Pierre des corps : 3h
Paris-St Pierre des corps : 1h
St Pierre des corps-Futuroscope : 30min
Futuroscope-Bordeaux : 2h10
Toulouse-Bordeaux : 2h10
Avec toutes ces informations, quel est le plus court chemin pour le voyageur s’il veut
aller de Marseille au Futuroscope ?
4
Exercice 4 :
Trouver, en appliquant l’algorithme de Dijkstra au graphe suivant, le chemin minimal
allant de S à E. Vérifier que le résultat obtenu n’est pas correct. Pourquoi ?
Exercice 5 :
Trouver, en appliquant l’algorithme de Dijkstra au graphe suivant, le chemin minimal
allant de 1 à 11.
Exercice 6 :
Un voyageur souhaite connaitre les chemins minimaux à partir de Namur vers certaines
villes. Pour ce faire, il cherche sur google map la distance en km (sur route) entre les villes
qu’il souhaite visiter. Appliquer l’algorithme de Dijkstra afin de répondre au souhait du
voyageur.
Namur
Bruxelles
Charleroi
Ciney
Andenne
Kortrijk
Gent
Ostende
Namur
0
61.1
42.5
28.7
20.6
155
128
184
Bruxelles
61.4
0
59.3
90.7
72.4
94.3
58.5
115
Charleroi
39.2
59.5
0
76.7
57.9
129
111
167
5
Ciney
28.6
85.4
74.8
0
24
187
152
209
Andenne
20.4
72.9
61.9
24.2
0
174
140
196
Kortrijk
154
93
129
192
173
0
47
70.9
Gent
127
57.4
110
156
138
48.3
0
69.3
Ostende
184
114
166
213
195
72.7
68.2
0
Exercice 7 - Janvier 2013 HD :
Albert souhaiterait se rendre le plus rapidement possible de Anvers à Kortrijk. Il connait
les temps de parcours entre différentes villes et les a repris dans le tableau ci-dessous.
Peux-tu lui indiquer le meilleur chemin à suivre ?
A
Anvers
Bruxelles
Charleroi
Damme
Eeklo
Fleurus
Gembloux
Hasselt
Izegem
Jodoigne
Kortrijk
4
1
B
4
C
1
2
D
E
F
5
2
5
H
I
5
10
32
20
J
K
3
7
3
3
3
G
7
4
4
5
32
20
10
6
8
8
6
9
7
7
18
9
18
30
30
Exercice 8 - Janvier 2013 HJ :
Le graphe ci-dessous indique, sans respecter d’échelle, les parcours possibles entre les
sept bâtiments d’une entreprise importante. Un agent de sécurité effectue régulièrement
des rondes de surveillance. Ses temps de parcours en minutes entre deux bâtiments sont
les suivants :
AB = 16 minutes
BG = 8 minutes
DE = 2 minutes
AG = 12 minutes
CD = 7 minutes
EF = 8 minutes
BC = 8 minutes
CE = 4 minutes
EG = 15 minutes
BE = 12 minutes
CG = 10 minutes
FG = 8 minutes
Sur chaque arête, les temps de parcours sont indépendants du sens du parcours.
1) Montrer qu’il est possible que l’agent de sécurité passe une fois et une seule par tous
les chemins de cette usine. Donner un exemple de trajet.
2) L’agent de sécurité peut-il revenir à son point de départ après avoir parcouru une fois
et une seule tous les chemins ? Justifier la réponse.
6
3) Tous les matins, l’agent de sécurité part du bâtiment A et se rend au bâtiment D. En
utilisant un algorithme que l’on explicitera, déterminer le chemin qu’il doit suivre pour
que son temps de parcours soit le plus court possible, et donner ce temps de parcours.
Exercice 9 - Aout 2013 HD :
La compagnie Europ’Air dessert différentes villes. Le tableau ci-contre donne les durées
de vol entre ces différentes villes.
A
A
B
C
D
E
F
B
12
12
C
E
12
5
3
7
2
2
5
D
5
3
12
3
4
7
9
F
5
3
4
9
8
8
1. Comment déterminer le trajet le plus rapide entre deux villes ?
2. Déterminer le trajet le plus rapide de A à D et donner sa durée.
3. Donner toutes les propriétés du graphe.
Exercice 10 - Aout 2013 HJ :
La compagnie Europ’Air dessert différentes villes. Le tableau ci-contre donne les durées
de vol entre ces différentes villes.
A
A
B
C
D
E
F
B
12
12
C
E
12
5
3
7
2
2
5
D
5
3
12
3
4
7
9
F
5
3
4
9
8
8
1. Comment déterminer le trajet le plus rapide entre deux villes ?
2. Déterminer le trajet le plus rapide de D à A et donner sa durée.
3. Comment modifier la méthode précédente afin de prendre en compte la durée des
escales dans les différentes villes ?
7
Téléchargement