Graphes orientés T ES - 2011-2012

publicité
Graphes orientés
T ES - 2011-2012
Pascal Blondet
[email protected]
juin 2011
Pascal Blondet ([email protected])
Graphes orientés T ES - 2011-2012
juin 2011
1 / 18
Graphes orientés
T ES - 2011-2012
1
Algorithme de Dijkstra
Algorithme appliqué sur le graphe
Algorithme présenté dans un tableau
Pascal Blondet ([email protected])
Graphes orientés T ES - 2011-2012
juin 2011
2 / 18
Algorithme de Dijkstra
Algorithme de recherche d’une plus courte chaı̂ne d’un graphe pondéré.
On cherche à déterminer le plus court chemin entre le sommet de départ D et le
sommet d’arrivée G .
35
A
3
D
F
13
8
5
C
9
12
B
Pascal Blondet ([email protected])
G
10
15
Graphes orientés T ES - 2011-2012
14
E
juin 2011
3 / 18
Algorithme de Dijkstra sur le graphe
Etape initiale
On marque :
A
3
D
b
5
b
8
b
12
9
b
B
Pascal Blondet ([email protected])
F
35
b
13
C
b
10
G
14
15
b
E
Graphes orientés T ES - 2011-2012
juin 2011
4 / 18
Algorithme de Dijkstra sur le graphe
Etape initiale
On marque :
• le sommet de départ avec un poids nul : D, 0.
On dit que le sommet D est fixé.
A
3
D, 0
b
5
b
8
b
12
9
b
B
Pascal Blondet ([email protected])
F
35
b
13
C
b
10
G
14
15
b
E
Graphes orientés T ES - 2011-2012
juin 2011
4 / 18
Algorithme de Dijkstra sur le graphe
Etape initiale
On marque :
• les sommets adjacents avec leurs poids et le sommet de provenance : A, 3, D
et B, 12, D.
A, 3, D
3
D, 0
5
b
9
13
C, ∞
10
b
B, 12, D
G, ∞
14
15
b
Pascal Blondet ([email protected])
b
8
b
12
F, ∞
35
b
b
E, ∞
Graphes orientés T ES - 2011-2012
juin 2011
4 / 18
Algorithme de Dijkstra sur le graphe
Etape initiale
On marque :
A, 3, D
3
D, 0
5
b
9
b
b
8
b
12
F, ∞
35
b
13
C, ∞
10
15
b
G, ∞
14
b
E, ∞
B, 12, D
Quand tous les sommets sont fixés l’algorithme s’arrête.
Pascal Blondet ([email protected])
Graphes orientés T ES - 2011-2012
juin 2011
4 / 18
Algorithme de Dijkstra sur le graphe
Première itération
On applique les opérations suivantes :
A, 3, D
D, 0
3
5
12
9
b
b
8
b
13
C, ∞
10
b
G, ∞
14
15
b
B, 12, D
Pascal Blondet ([email protected])
F, ∞
35
b
b
E, ∞
Graphes orientés T ES - 2011-2012
juin 2011
5 / 18
Algorithme de Dijkstra sur le graphe
Première itération
On applique les opérations suivantes :
• On fixe le sommet de plus petit poids en précisant le sommet de provenance :
A, 3, D
A, 3, D
D, 0
3
5
12
9
b
b
8
b
13
C, ∞
10
b
G, ∞
14
15
b
B, 12, D
Pascal Blondet ([email protected])
F, ∞
35
b
b
E, ∞
Graphes orientés T ES - 2011-2012
juin 2011
5 / 18
Algorithme de Dijkstra sur le graphe
Première itération
On applique les opérations suivantes :
• On marque les sommets adjacents non fixés avec la somme des poids
parcourus et le sommet de provenance : F , 38, A et C , 8, A.
A, 3, D
D, 0
3
5
12
9
b
b
b
8
13
C , 8, A
10
14
15
b
B, 12, D
Pascal Blondet ([email protected])
F , 38, A
35
b
b
G, ∞
b
E, ∞
Graphes orientés T ES - 2011-2012
juin 2011
5 / 18
Algorithme de Dijkstra sur le graphe
Deuxième itération
On réitère les mêmes opérations :
A, 3, D
D, 0
3
5
12
9
b
b
b
8
13
C , 8, A
10
14
15
b
B, 12, D
Pascal Blondet ([email protected])
F , 38, A
35
b
b
G, ∞
b
E, ∞
Graphes orientés T ES - 2011-2012
juin 2011
6 / 18
Algorithme de Dijkstra sur le graphe
Deuxième itération
On réitère les mêmes opérations :
• On fixe le sommet de plus petit poids en précisant le sommet de provenance :
C , 8, D
A, 3, D
D, 0
3
5
12
9
b
b
b
8
13
C , 8, A
10
14
15
b
B, 12, D
Pascal Blondet ([email protected])
F , 38, A
35
b
b
G, ∞
b
E, ∞
Graphes orientés T ES - 2011-2012
juin 2011
6 / 18
Algorithme de Dijkstra sur le graphe
Deuxième itération
On réitère les mêmes opérations :
• On marque les sommets adjacents non fixés avec la somme des poids
parcourus et le sommet de provenance : F , 16, C et E , 18, C .
A, 3, D
35
b
D, 0
3
5
12
9
b
b
b
8
13
C , 8, A
10
14
15
b
B, 12, D
Pascal Blondet ([email protected])
F , 16, C
F , 38, A
b
G, ∞
b
E , 18, C
Graphes orientés T ES - 2011-2012
juin 2011
6 / 18
Algorithme de Dijkstra sur le graphe
Deuxième itération
On réitère les mêmes opérations :
• Si une marque précédente a un poids supérieur à une nouvelle marque
obtenue, on barre l’ancienne marque.
A, 3, D
35
b
D, 0
3
5
12
9
b
b
b
8
13
C , 8, A
10
14
15
b
B, 12, D
Pascal Blondet ([email protected])
F , 16, C
F , 38, A
b
G, ∞
b
E , 18, C
Graphes orientés T ES - 2011-2012
juin 2011
6 / 18
Algorithme de Dijkstra sur le graphe
Troisième itération
A, 3, D
35
b
3
D, 0
5
b
9
13
C , 8, A
10
15
b
B, 12, D
Pascal Blondet ([email protected])
b
8
b
12
F , 16, C
F , 38, A
b
G, ∞
14
b
E , 18, C
Graphes orientés T ES - 2011-2012
juin 2011
7 / 18
Algorithme de Dijkstra sur le graphe
Troisième itération
• le sommet de plus petit poids est : B, 12, D
A, 3, D
35
b
3
D, 0
5
b
9
13
C , 8, A
10
15
b
B, 12, D
Pascal Blondet ([email protected])
b
8
b
12
F , 16, C
F , 38, A
b
G, ∞
14
b
E , 18, C
Graphes orientés T ES - 2011-2012
juin 2011
7 / 18
Algorithme de Dijkstra sur le graphe
Troisième itération
• Le seul sommet adjacent non fixé est : E , 27, B.
A, 3, D
35
b
3
D, 0
5
b
9
13
C , 8, A
10
15
b
B, 12, D
Pascal Blondet ([email protected])
b
8
b
12
F , 16, C
F , 38, A
b
G, ∞
14
b
E , 18, C
E , 27, B
Graphes orientés T ES - 2011-2012
juin 2011
7 / 18
Algorithme de Dijkstra sur le graphe
Troisième itération
• La nouvelle marque obtenue a un poids supérieur à la marque précédente
E , 18, C . On laisse donc la précédente marque.
A, 3, D
35
b
3
D, 0
5
b
9
13
C , 8, A
10
15
b
B, 12, D
Pascal Blondet ([email protected])
b
8
b
12
F , 16, C
F , 38, A
b
G, ∞
14
b
E , 18, C
E , 27, B
Graphes orientés T ES - 2011-2012
juin 2011
7 / 18
Algorithme de Dijkstra sur le graphe
Quatrième itération
• le sommet de plus petit poids est : F , 16, C
• Il y a un seul sommet adjacent non marqué (donc non fixé) : G , 29, F .
A, 3, D
35
b
3
D, 0
5
b
9
13
C , 8, A
10
15
b
B, 12, D
Pascal Blondet ([email protected])
b
8
b
12
F , 16, C
F , 38, A
b
14
b
E , 18, C
E , 27, B
Graphes orientés T ES - 2011-2012
juin 2011
8 / 18
Algorithme de Dijkstra sur le graphe
Cinquième itération
• le sommet de plus petit poids est : E , 18, C
• Il y a un seul sommet adjacent non fixé : G , 32, E .
• La nouvelle marque obtenue a un poids supérieur à la marque précédente
G , 29, F . On laisse donc la précédente marque.
A, 3, D
35
b
3
D, 0
5
b
9
13
C , 8, A
10
15
b
B, 12, D
Pascal Blondet ([email protected])
b
8
b
12
F , 16, C
F , 38, A
b
14
G , 29, F
G , 32, E
b
E , 18, C
E , 27, B
Graphes orientés T ES - 2011-2012
juin 2011
9 / 18
Algorithme de Dijkstra sur le graphe
Sixième itération
On fixe G avec le poids 29. S = {D, A, C , B, F , E , G }. Tous les sommets étant
fixés, on peut reconstituer le chemin le plus court en remontant la chaı̂ne ainsi
obtenue.
A, 3, D
35
b
3
D, 0
5
b
9
13
C , 8, A
10
15
b
B, 12, D
Pascal Blondet ([email protected])
b
8
b
12
F , 16, C
F , 38, A
b
14
G , 29, F
G , 32, E
b
E , 18, C
E , 27, B
Graphes orientés T ES - 2011-2012
juin 2011
10 / 18
Algorithme de Dijkstra sur le graphe
Conclusion
Le chemin le plus court est donc : D − A − C − F − G , de poids 29.
A
3
D
b
5
b
8
b
12
9
b
B
Pascal Blondet ([email protected])
F
35
b
13
C
b
10
G , 29
14
15
b
E
Graphes orientés T ES - 2011-2012
juin 2011
11 / 18
Algorithme de Dijkstra dans un tableau
Étape initiale
A
3
D
F
35
b
b
5
b
8
b
12
9
b
B
13
C
b
10
G
14
15
b
E
On peut aussi décrire l’application de l’algorithme de Dijkstra en réalisant un
tableau.
Pascal Blondet ([email protected])
Graphes orientés T ES - 2011-2012
juin 2011
12 / 18
Algorithme de Dijkstra dans un tableau
Étape initiale
A
3
D
F
35
b
b
5
b
8
b
12
9
13
C
b
10
15
b
G
14
b
B
E
Sur la première ligne, on écrit les sommets du graphe, en commençant par le
sommet du départ D, les sommets adjacents à D, les autres sommets en terminant
par le sommet de fin.
(D)
A
B
C
E
F
G
Algorithme de Dijkstra dans un tableau
Étape initiale
A
3
D
F
35
b
b
5
b
8
b
12
9
13
C
b
10
15
b
G
14
b
B
E
Sur la deuxième ligne, on écrit en rouge, le poids nul pour le sommet de départ et
on entoure le sommet (D) pour indiquer qu’il est fixé.
(D)
0
A
B
Pascal Blondet ([email protected])
C
E
Graphes orientés T ES - 2011-2012
F
G
juin 2011
12 / 18
Algorithme de Dijkstra dans un tableau
Étape initiale
A
3
D
F
35
b
b
5
b
8
b
12
9
13
C
b
10
15
b
G
14
b
B
E
Le poids et le sommet de provenance pour les sommets adjacents.
(D)
0
A
B
0+3 =
3 (D)
0+12 =
12 (D)
Pascal Blondet ([email protected])
C
E
Graphes orientés T ES - 2011-2012
F
G
juin 2011
12 / 18
Algorithme de Dijkstra dans un tableau
Étape initiale
A
3
D
F
35
b
b
5
b
8
b
12
13
C
9
b
10
15
b
G
14
b
B
E
Le symbole infini pour les autres sommets.
(D)
0
A
B
C
E
F
G
0+3 =
3 (D)
0+12 =
12 (D)
∞
∞
∞
∞
Pascal Blondet ([email protected])
Graphes orientés T ES - 2011-2012
juin 2011
12 / 18
Algorithme de Dijkstra dans un tableau
Première itération
A
3
D
F
35
b
b
5
b
8
b
12
9
13
C
b
10
15
b
G
14
b
E
B
Après avoir chosit le sommet non fixé de plus faible poids, A, on l’entoure.
(D)
0
(A)
B
3 (D)
12 (D)
C
∞
E
∞
F
∞
G
∞
Algorithme de Dijkstra dans un tableau
Première itération
A
3
D
F
35
b
b
5
b
8
b
12
9
13
C
b
10
15
b
G
14
b
E
B
On note en rouge dans sa colonne le poids de la chaı̂ne y conduisant ainsi que le
sommet de provenance.
(D)
0
(A)
B
3 (D)
12 (D)
C
∞
E
∞
F
∞
G
∞
3(D)
Pascal Blondet ([email protected])
Graphes orientés T ES - 2011-2012
juin 2011
13 / 18
Algorithme de Dijkstra dans un tableau
Première itération
A
3
D
F
35
b
b
5
b
8
b
12
13
C
9
b
10
15
b
G
14
b
E
B
Dans la colonne des sommets adjacents à A, on ajoute les poids chaı̂nes y
conduisant avec le rappel du sommet fixé D d’origine.
(D)
0
(A)
B
3 (D)
12 (D)
3(D)
Pascal Blondet ([email protected])
C
∞
E
∞
3+5 = 8
(A)
Graphes orientés T ES - 2011-2012
F
∞
G
∞
3 + 35 =
38(A)
juin 2011
13 / 18
Algorithme de Dijkstra dans un tableau
Première itération
A
3
D
F
35
b
b
5
b
8
b
12
13
C
9
b
10
15
b
G
14
b
E
B
On complète en réécrivant les indications de la ligne précédente.
(D)
0
(A)
B
3 (D)
12 (D)
3(D)
12 (D)
Pascal Blondet ([email protected])
C
∞
E
∞
F
∞
G
∞
3+5 = 8
(A)
∞
3 + 35 =
38(A)
∞
Graphes orientés T ES - 2011-2012
juin 2011
13 / 18
Algorithme de Dijkstra dans un tableau
deuxième itération
A
3
D
F
35
b
b
5
8
b
b
12
9
13
C
b
10
15
b
B
G
14
b
E
Le nouveau sommet fixé est C. Ses sommets adjacents sont alors marqués.
(D)
0
(A)
B
3 (D)
12 (D)
(C)
∞
3(D)
12 (D)
8 (A)
Pascal Blondet ([email protected])
E
∞
∞
Graphes orientés T ES - 2011-2012
F
∞
38(A)
G
∞
∞
juin 2011
14 / 18
Algorithme de Dijkstra dans un tableau
deuxième itération
A
3
D
F
35
b
b
5
8
b
b
12
9
13
C
b
10
15
b
B
G
14
b
E
Le nouveau sommet fixé est C. Ses sommets adjacents sont alors marqués.
(D)
0
(A)
B
3 (D)
12 (D)
(C)
∞
3(D)
12 (D)
8 (A)
E
∞
∞
F
∞
38(A)
G
∞
∞
8(A)
Pascal Blondet ([email protected])
Graphes orientés T ES - 2011-2012
juin 2011
14 / 18
Algorithme de Dijkstra dans un tableau
deuxième itération
A
3
D
F
35
b
b
5
8
b
b
12
9
13
C
b
10
15
b
B
G
14
b
E
Pour le sommet adjacent F, le poids de la chaı̂ne passant par C est inférieur à celui
de celle venant de A. On retiendra le chemin venant de C.
(D)
0
(A)
B
3 (D)
12 (D)
(C)
∞
3(D)
12 (D)
Pascal Blondet ([email protected])
8 (A)
E
∞
∞
38(A)
8(A)
8+10 = 18
8 + 8 = 16
(C)
(C)
Graphes orientés T ES - 2011-2012
F
∞
G
∞
∞
juin 2011
14 / 18
Algorithme de Dijkstra dans un tableau
deuxième itération
A
3
D
F
35
b
b
5
8
b
b
12
9
13
C
b
10
15
b
B
G
14
b
E
Pour le sommet adjacent F, le poids de la chaı̂ne passant par C est inférieur à celui
de celle venant de A. On retiendra le chemin venant de C.
(D)
0
(A)
B
3 (D)
12 (D)
(C)
∞
3(D)
12 (D)
12 (D)
Pascal Blondet ([email protected])
8 (A)
E
∞
∞
38(A)
G
∞
∞
8(A)
8+10 = 18
8 + 8 = 16
∞
(C)
(C)
Graphes orientés T ES - 2011-2012
F
∞
juin 2011
14 / 18
Algorithme de Dijkstra dans un tableau
troisième itération
A
3
D
F
35
b
b
5
8
b
b
12
9
b
10
15
b
13
C
B
G
14
b
E
Le nouveau sommet fixé est B.
(D)
0
(A)
(B)
0+3=3
0 + 12 = 12
(C)
∞
E
∞
F
∞
G
∞
∞
∞
(D)
(D)
3(D)
12 (D)
8 (A)
∞
38(A)
12 (D)
8(A)
18 (C)
16 (C)
12(D)
Pascal Blondet ([email protected])
Graphes orientés T ES - 2011-2012
juin 2011
15 / 18
Algorithme de Dijkstra dans un tableau
troisième itération
A
3
D
F
35
b
b
5
8
b
b
12
9
b
10
15
b
13
C
B
G
14
b
E
Le sommet adjacent C est déjà fixé et donc exclue des calculs.
(D)
0
(A)
(B)
0+3=3
0 + 12 = 12
(C)
∞
E
∞
F
∞
G
∞
∞
∞
(D)
(D)
3(D)
12 (D)
8 (A)
∞
38(A)
12 (D)
8(A)
18 (C)
16 (C)
12(D)
Pascal Blondet ([email protected])
∞
Graphes orientés T ES - 2011-2012
juin 2011
15 / 18
Algorithme de Dijkstra dans un tableau
troisième itération
A
3
D
F
35
b
b
5
8
b
b
12
9
b
10
15
b
13
C
B
G
14
b
E
Pour le sommet adjacent E, le poids de la chaı̂ne passant par B est supérieur à celui
de celle venant de C. On conserve donc cette dernière.
(D)
0
(A)
(B)
0+3=3
0 + 12 = 12
(C)
∞
E
∞
F
∞
G
∞
∞
∞
(D)
(D)
3(D)
12 (D)
8 (A)
∞
38(A)
12 (D)
8(A)
18 (C)
16 (C)
12(D)
12 + 15 =
∞
27 > 18
18(C)
Pascal Blondet ([email protected])
Graphes orientés T ES - 2011-2012
juin 2011
15 / 18
Algorithme de Dijkstra dans un tableau
troisième itération
A
3
D
8
b
9
15
b
(A)
(B)
0 + 12 = 12
13
C
b
10
B
0+3=3
b
5
b
12
(D)
0
F
35
b
G
14
b
E
(C)
∞
E
∞
F
∞
G
∞
(D)
(D)
3(D)
12 (D)
8 (A)
∞
38(A)
12 (D)
8(A)
18 (C)
16 (C)
∞
∞
12 + 15 =
16 (C)
∞
12(D)
27 > 18
18(C)
Pascal Blondet ([email protected])
Graphes orientés T ES - 2011-2012
juin 2011
15 / 18
Algorithme de Dijkstra dans un tableau
quatrième itération
A
3
D
F
35
b
b
5
b
b
12
9
b
15
8
13
10
14
C
b
G
b
E
B
Le nouveau sommet fixé est F.
(D)
0
(A)
(B)
3 (D)
12 (D)
(C)
∞
3(D)
12 (D)
12(D)
12(D)
8 (A)
E
∞
∞
(F)
∞
38 (A)
8(A)
18 (C)
16 (C)
18 (C)
16 (C)
G
∞
∞
∞
∞
16(C )
Pascal Blondet ([email protected])
Graphes orientés T ES - 2011-2012
juin 2011
16 / 18
Algorithme de Dijkstra dans un tableau
quatrième itération
A
3
D
F
35
b
b
5
b
b
12
9
b
15
8
13
10
14
C
b
G
b
E
B
G est son unique sommet adjacent.
(D)
0
(A)
(B)
3 (D)
12 (D)
(C)
∞
3(D)
12 (D)
12(D)
12(D)
8 (A)
E
∞
∞
(F)
∞
38 (A)
8(A)
18 (C)
16 (C)
18 (C)
16 (C)
G
∞
∞
∞
∞
16(C )
16 + 13
= 29(F)
Pascal Blondet ([email protected])
Graphes orientés T ES - 2011-2012
juin 2011
16 / 18
Algorithme de Dijkstra dans un tableau
quatrième itération
A
3
D
b
b
9
b
15
8
13
10
14
C
b
G
b
E
B
(A)
(B)
3 (D)
12 (D)
(C)
∞
3(D)
12 (D)
12(D)
12(D)
b
5
12
(D)
0
F
35
b
8 (A)
E
∞
∞
38 (A)
8(A)
18 (C)
16 (C)
18 (C)
16 (C)
18 (C)
(F)
∞
G
∞
∞
∞
∞
16(C )
16 + 13
= 29(F)
Pascal Blondet ([email protected])
Graphes orientés T ES - 2011-2012
juin 2011
16 / 18
Algorithme de Dijkstra dans un tableau
cinquième itération
Pour son seul sommet adjacent G, le poids de la chaı̂ne passant par E est
supérieur à celui de celle venant de F. On conserve donc cette dernière.
(D)
0
(A)
(B)
3 (D)
12 (D)
(C)
∞
3(D)
12 (D)
12(D)
12(D)
8 (A)
(E)
∞
∞
18 (C)
16 (C)
G
∞
∞
∞
∞
38 (A)
8(A)
18 (C)
16 (C)
18 (C)
16 (C)
29 (F)
18(C )
(F)
∞
18 + 14 =
32 > 29
29(F)
Pascal Blondet ([email protected])
Graphes orientés T ES - 2011-2012
juin 2011
17 / 18
Algorithme de Dijkstra dans un tableau
dernière itération et conclusion
(D)
0
(A)
(B)
3 (D)
12 (D)
(C)
∞
3(D)
12 (D)
12(D)
12(D)
8 (A)
(E)
∞
∞
18 (C)
16 (C)
(G)
∞
∞
∞
∞
38 (A)
8(A)
18 (C)
16 (C)
18 (C)
16 (C)
29 (F)
18(C )
(F)
∞
29(F)
29(F )
Conclusion : Le trajet le plus court est D-A-C-F-G
Pascal Blondet ([email protected])
Graphes orientés T ES - 2011-2012
juin 2011
18 / 18
Téléchargement