Académique Documents
Professionnel Documents
Culture Documents
Optimisation et Graphes
appliqués au GI
Fouad Riane
Ecole Centrale
Introduction
Notions : Graphe
Graphe: Un graphe G est un ensemble de sommets
X, et un ensemble d’arêtes U dans X x X reliant
chacun deux sommets.
Notions : Théorie des Graphes
1 3
2 4
Notions : Graphe pondéré
Sommets adjacents : un
sommet x est adjacent au
sommet y s'il est prédécesseur
ou successeur de y. Ces
sommets peuvent être qualifiés
de voisins.
mG-(x,y) = mG+(y,x)
mG (x,y) = mG+(x,y) + mG-(x,y)
Si x y, mG (x,y) désigne le nombre d ’arcs ayant une
extrémité en x et extrémité en y.
Si x = y, mG (x,y) est égal à deux fois le nombre de
boucles attachées au somment x
1 3 1 3
1-graphe
2-graphe
2 4 2 4
Quelques définitions de base - 6
1 si ( x i , x j ) U
a ij
0 sinon
b a c
c d c d a b
d a c
G={‘a’ :[‘b’, ‘d’, ‘c,’], ‘b’:[‘a’, ’c’], ‘c’:[‘d’, ’a’, ‘b’], ‘d’:[‘a’, ‘c’]}
Matrice d’adjacence . a b a b c d
a 0 1 1 1
b 1 0 1 0
c d c 1 1 0 1
d 1 0 1 0
Représentation d’un graphe
G={‘A’ :[‘B’, ‘C’], ‘B’:[‘A’, ’C’], ‘C’:[‘A’, ’B’, ‘D’], ‘D’:[‘C’, ‘E’], ‘E’:[‘D’]}
Exercice
Voici une carte où sont positionnées 6 lieux notés A, B, C, D, E et F dans le
centre d’une ville. On cherche à modéliser les trajets possibles simples
permettant de relier directement en voiture ces positions.
Cependant, comme il y a des sens unique, certains trajets ne peuvent se faire
que dans un sens.
Exercice
Les villes A, B, C, D, E, F, G, H et I sont relié par un réseau électrique
On vous donne les informations suivantes :
la ville A est reliée par un réseau électrique aux villes B, E et F,
la ville B est reliée par un réseau électrique aux villes A, C et D,
la ville C est reliée par un réseau électrique aux villes B, D, E et F,
la ville D est reliée par un réseau électrique aux villes B, C et F,
la ville E est reliée par un réseau électrique aux villes A, C et F,
la ville F est relié par un réseau électrique aux villes A, C et E.
Proposer un graphe qui modélise la situation.
Ce graphe est-il complet ? Pourquoi ?
Exercice
Reprenons l'exemple introductif. L'ensemble des relations :
A est ami avec tout le monde sauf G,
B est ami avec A, D et H,
C est ami avec A, F, G et H,
D est ami avec B et H,
E est ami avec A et H,
F est ami avec A et C,
G est ami avec C et H,
H est ami avec A, B, C, D, E et G.
De la chaine au Circuit
Chaîne : Une chaine de longueur n est une suite de n arêtes qui relient
un sommet i à un autre j ou à lui-même.
Si tous ses arcs sont différents, une chaîne est dite simple.
Si elle ne passe pas plusieurs fois par le même sommet, la chaîne est
dite élémentaire.
De la chaine au Circuit
Chemin : C’est une chaîne d’un type particulier où tout arc de la chaîne
a pour extrémité terminale l'extrémité initiale de l'arc suivant. C’est une
chaine orientée.
Un chemin est dit simple s'il ne comporte pas plusieurs fois le même
arc.
Il est dit élémentaire s'il ne passe pas plusieurs fois par le même
sommet.
De la chaine au Circuit
Cycle : c’est une chaîne qui se ferme sur elle-même et
qui permet de partir d’un sommet et revenir à ce
sommet en parcourant une et une seule fois les autres.
De la chaine au Circuit
Graphe et Connexité
Graphe Connexe : est un graphe dont tout couple de
sommets peut être relie par une chaine de longueur n>=1
Problème du Plus Court Chemin
32
Edsger Wybe Dijkstra-
May 11, 1930 – August 6, 2002
Algorithme Dijkstra
Algorithme Dijkstra
Algorithme Dijkstra
Algorithme Dijkstra
Algorithme Dijkstra
Algorithme Dijkstra
Algorithme Dijkstra
Algorithme Dijkstra
Algorithme Dijkstra
Algorithme Dijkstra
Exercice
3 3
B E H
3
2
7 2
4
A C G
1 5
2 3
D F
4
46
Exercice
Iter. Solved nodes Closest Total distance nth nearest Min. Last
(n) directly connected connected from origin to the node distance connection
to unsolved nodes unsolved node candidate
(candidate)
1 A D 2 D 2 (A, D)
2, 3 A B 3 B 3 (A, B)
D C 2+1 = 3 C 3 (D, C)
4 B E 3+3= 6 E 5 (C, E)
C E 3+2 = 5
D F 2+4 = 6
5 C F 3+5= 8 F 6 (D, F)
D F 2+4 = 6
E H 5+3 = 8
6 C G 3+7= 10 H 8 (E, H)
E H 5+3 = 8
F G 6+3 = 9
7 C G 3+7= 10 G 9 (F, G)
F G 6+3 = 9
3 3
B E H The shortest path can be traced backwards from
3 2 the last column
4 2
A C
7
G
(A, D) (D, C) (C, E) (E, H)
1 or ADCEH
5
2 3
shortest distance = 8
D F
4 47
Dijsktra’s Algorithm
• c(i,j): link cost from node i to j
1 Initialization:
• D(v): current cost source v
2 S = {O};
3 for all nodes v • p(v): predecessor node along path
from source to v, that is next to v
4 if v adjacent to O
5 then D(v) = c(O,v); • S: set of nodes whose least cost
6 else D(v) = ; path definitively known
7
8 Loop
9 find w not in S such that D(w) is a minimum;
10 add w to S;
11 update D(v) for all v adjacent to w and not in S:
12 if D(w) + c(w,v) < D(v) then
// w gives us a shorter path to v than we’ve found so far
13 D(v) = D(w) + c(w,v); p(v) = w;
14 until all nodes in S;
48
Example: Dijkstra’s Algorithm
Step start S D(B),p(B) D(C),p(C) D(D),p(D) D(E),p(E) D(F),p(F)
0 A 2,A 5,A 1,A
1
2
3
4
5
5 1 Initialization:
2 S = {A};
3 3 for all nodes v
B C
2 5
4 if v adjacent to A
A 2 1 F 5 then D(v) = c(A,v);
3
1 2 6 else D(v) = ;
D E …
1
49
50
Example: Dijkstra’s Algorithm
Step start S D(B),p(B) D(C),p(C) D(D),p(D) D(E),p(E) D(F),p(F)
0 A 2,A 5,A 1,A
1 AD
2
3
4
5
…
5 8 Loop
3 9 find w not in S s.t. D(w) is a minimum;
B C 10 add w to S;
2 5
11 update D(v) for all v adjacent
A 2 1 F
3 to w and not in S:
1 2 12 If D(w) + c(w,v) < D(v) then
D E 13 D(v) = D(w) + c(w,v); p(v) = w;
1
14 until all nodes in S;
51
52
Example: Dijkstra’s Algorithm
Step start S D(B),p(B) D(C),p(C) D(D),p(D) D(E),p(E) D(F),p(F)
0 A 2,A 5,A 1,A
1 AD 4,D 2,D
2 ADE 3,E 4,E
3
4
5
…
5 8 Loop
3 9 find w not in S s.t. D(w) is a minimum;
B C 10 add w to S;
2 5
11 update D(v) for all v adjacent
A 2 1 F
3 to w and not in S:
1 2 12 If D(w) + c(w,v) < D(v) then
D E 13 D(v) = D(w) + c(w,v); p(v) = w;
1
14 until all nodes in S;
53
54
Example: Dijkstra’s Algorithm
Step start S D(B),p(B) D(C),p(C) D(D),p(D) D(E),p(E) D(F),p(F)
0 A 2,A 5,A 1,A
1 AD 4,D 2,D
2 ADE 3,E 4,E
3 ADEB
4 ADEBC
5
…
5 8 Loop
3 9 find w not in S s.t. D(w) is a minimum;
B C 10 add w to S;
2 5
11 update D(v) for all v adjacent
A 2 1 F
3 to w and not in S:
1 2 12 If D(w) + c(w,v) < D(v) then
D E 13 D(v) = D(w) + c(w,v); p(v) = w;
1
14 until all nodes in S;
55
56
Example: Dijkstra’s Algorithm
Step start S D(B),p(B) D(C),p(C) D(D),p(D) D(E),p(E) D(F),p(F)
0 A 2,A 5,A 1,A
1 AD 4,D 2,D
2 ADE 3,E 4,E
3 ADEB
4 ADEBC
5 ADEBCF
5
3
To determine path A C (say),
B C
2 5 work backward from C via p(v)
A 2 1 F
3
1 2
D E
1
57
58
Shortest Path Problem- Example 2
Iter. Solved nodes Closest Total distance nth nearest Min. Last
(n) directly connected connected from origin to the node distance connection
to unsolved nodes unsolved node candidate
(candidate)
1 1 2 3 2 3 (1, 2)
2 1 3 6 3 5 (2, 3)
2 3 3+2 = 5
3 1 4 7 5 6 (2, 5)
2 5 3+3 = 6
3 4 5+3 = 8
4 1 4 7 4 7 (1, 4)
2 6 3+8 = 11 The shortest path can be
3 4 5+3 = 8 traced backwards from the last
column
5 7 6+2 =8
5 2 6 3+8 = 11 7 8 (1, 2) (2, 5) (5, 7) (7,
5 7 6+2 = 8 (5, 7) 8)
4 7 7+7 = 14 or 12578
6 2 6 3+8 = 11 6 10 (5, 6)
5 6 6+4 = 10 Shortest distance = 11.
7 8 8+3 = 11
7 5 8 6+7 = 13 8 11 (7, 8)
7 8 8+3 = 11
6 8 10+3 =13
59
7 D
2
B 4
8 9
2 5 F
C
8
8 3
E
A 7
0 7
Arbre Recouvrant Minimal
Algorithm Kruskal
• Étape 1. Sélectionnez arbitrairement n'importe quel nœud, puis
connectez-le au nœud le plus proche.
61
7
7 D 7 D
2 2
B 4 B 4
8 9 5 9
2 5 F 2 5 F
C C
8 8
8 3 8 3
E E
A 7 A 7
0 7 0 7
7 7
7 D D
2 2 7
B 4 B 4
5 9 9 4
2 5 F 5 5
C 2 F
8 C
3 8
8 8 3
E E
A 7 A
0 7 7 7
0
7
7 D 7 D
2 2
B 4 B 4
8 9 5 9
2 5 F 2 5 F
C C
8 8
8 3 8 3
E E
A 7 A 7
0 7 0 7
7 7
7 D D
2 2 7
B 4 B 4
5 9 9 4
2 5 F 5 5
C 2 F
8 C
3 8
8 8 3
E E
A 7 A
0 7 7 7
0
7
7 D
2
B 4
5 9 4
2 5 F
C
8
8 3
E
A 3 7
0 7
7 D
2
B 4
5 9 4
2 5 F
C
8
8 3
E
A 3
0 7