Vous êtes sur la page 1sur 33

Introduction GI

Optimisation et Graphes
appliqués au GI
Fouad Riane
Ecole Centrale

Introduction

 Qu’est-ce qu’un graphe ? « Des points et des traits ou des


flèches »

 Point de vue mathématique :


 Une relation binaire
 Point de vue pratique :
 Représentation abstraite d’un réseau (de transport, de
télécommunication, de relations sociales etc.)
Graphes, Un outil de modélisation

 Visualiser des échanges, modéliser des systèmes


réels, ou …pour jouer.
 Imaginez un réseau social ayant 6 abonnés (A, B, C, D,
E et F) où :
 A est ami avec B, C et D
 B est ami avec A et D
 C est ami avec A, E et D
 D est ami avec tous les autres abonnés
 E est ami avec C, D et F
 F est ami avec E et D

Graphes, Un outil de modélisation

 C’est un instrument puissant pour modéliser de nombreux


problèmes combinatoires.
 Les graphes sont des structures de données puissantes pour
l’informatique.
 Ils sont irremplaçables dès qu’il s ’agit de décrire la structure d’un
ensemble complexe, en exprimant les relations, les dépendances
entre éléments.
Graphes, Un outil de modélisation

 Soit un réseau routier reliant les différents lieux suivants :


 il existe une route entre A et C
 il existe une route entre A et B
 il existe une route entre A et D
 il existe une route entre B et F
 il existe une route entre B et E
 il existe une route entre B et G
 il existe une route entre D et G
 il existe une route entre E et F

Graphes, Un outil de modélisation

 Il faut maintenant tenir compte des routes en sens unique et intégrer


les nouvelles contraintes :
 il existe une route entre A et C
(double sens)
 il existe une route entre A et B
(sens unique B->A)
 il existe une route entre A et D
(sens unique A->D)
 il existe une route entre B et F
(sens unique B->F)
 il existe une route entre B et E
(sens unique E->B)
 il existe une route entre B et G (double sens)
 il existe une route entre D et G (double sens)
 il existe une route entre E et F (double)
Graphes, Un outil de modélisation

 Les graphes sont utilisés dans des domaines très variés :


 Economie, informatique, industrie, chimie, sociologie.

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

 La théorie des graphes est la branche des


mathématiques qui étudie les propriétés de
ces objets, graphes.

 La résolution de certains problèmes liés aux


graphes fait appel à des algorithmes
complexes.

Notions : Graphe Orienté

Définition d’un graphe orienté


 Un graphe G orienté est formé de :
- un ensemble fini de sommets X  x1 , x 2 ,..., x n 
- un ensemble fini d’arcs U  u1 , u 2 ,..., u m 
dont les éléments sont des couples ordonnés de sommets.
 Un arc est une arrête dirigée.

1 3

2 4
Notions : Graphe pondéré

 Un graphe est étiqueté si ses arêtes (ou ses arcs) sont


affectées d'étiquettes (mots, lettres, symboles, nombres,
…)
 Dans le cas où les étiquettes sont des nombres, le graphe
est dit pondéré
 Les étiquettes sont appelées les poids entre les sommets.
 Les poids des arêtes d’un graphe représentent des distances, des
coûts, etc.

Notions : définitions de base - 1


 Extrémités d'un arc : un arc u = (x,y) possède une extrémité
initiale x et une extrémité terminale y.
 Boucle : arc (x,x) dont les extrémités coïncident.

 Arcs adjacents : arcs ayant au moins une extrémité en commun.


 Successeur : on dit que y est un successeur de x s'il existe un arc
ayant x comme extrémité initiale et y comme extrémité terminale.
 L'ensemble des successeurs d'un sommet x est noté +(x).
Notion : définitions de base - 2
 Prédécesseur : on dit que y est un prédécesseur de x
s'il existe un arc ayant y comme extrémité initiale et x
comme extrémité terminale.
 L'ensemble des prédécesseurs de x est noté -
(x).

 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.

Quelques définitions de base - 3


Soit u=(x,y) un arc (qui n'est pas une boucle) de G.
 Il est dit incident à y vers l'intérieur et incident à x
vers l'extérieur.
 Le nombre d'arcs incidents à x vers l'extérieur est noté
d+(x) et s'appelle le demi-degré extérieur de x.
 Par analogie, le demi-degré intérieur de x, noté d-(x)
représente le nombre d'arcs incidents à x vers l'intérieur.

 Le degré d(x) d'un sommet x


est alors égal à
d+(x) + d-(x).
Quelques définitions de base - 4
Soient x et y deux sommet d ’un graphe G.
 Le nombre d ’arcs ayant x comme extrémité initiale et y
comme extrémité finale est appelé multiplicité de la paire
(x, y) et est noté mG+(x,y)
 On pose

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

Quelques définitions de base - 5

 Un p-graphe est un graphe dans lequel il y a au maximum


p arcs de la forme (x,y) entre deux sommets x et y.

 Sauf spécification contraire, tous les graphes considérés


dans la suite seront supposés être des 1-graphes.

1 3 1 3

1-graphe
2-graphe
2 4 2 4
Quelques définitions de base - 6

 Un 1-graphe G peut être défini par le couple (X,U).

 Il est aussi déterminé par la donnée de X et de


l'application + (ou de  -).

 Il peut enfin être caractérisé par sa matrice d'adjacence


M=(aij), de dimension n x n, où:

1 si ( x i , x j ) U
a ij  
0 sinon

Représentation d’un graphe


 Différentes representations .
 Liste d’adjacence ou dictionnaire de précédence
a b a b d c

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’]}

G={‘A’ :[‘B’,], ‘B’:[’C’], ‘C’:[‘A’, ‘D’], ‘D’:[‘E’], ‘E’:[]}

G={‘A’ :[‘3,B’, ‘9,C’], ‘B’:[‘3,A’, ’4,C’],


‘C’:[‘9,A’, ’4,B’, ’12,D’], ‘D’:[’12,C’, ‘7,E’], ‘E’:[‘7,D’]}

Représentation d’un graphe


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
 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

 Circuit : C’est un cycle bien orienté, un chemin fini dont


le sommet terminal coïncide avec le sommet initial.
 Boucle : Circuit de longueur 1.

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

Plus Court Chemin

32
Edsger Wybe Dijkstra-
 May 11, 1930 – August 6, 2002

 Received the 1972 A. M. Turing Award, widely considered


the most prestigious award in computer science.

 The Schlumberger Centennial Chair of Computer Sciences


at The University of Texas at Austin from 1984 until 2000

 Known for his many essays on programming.

 Dans un graphe pondéré, l'objectif du problème du plus court


chemin est de trouver le chemin le plus court d'un nœud
(origine) à un autre (destination).
Algorithme Dijkstra

 L'algorithme de Dijkstra apporte une solution au problème du chemin


le plus court à source unique en théorie des graphes  Trouver les
chemins les plus courts d'un sommet source v à tous les autres
sommets du graphe.

 Fonctionne sur les graphes orientés et non orientés. Cependant,


toutes les arêtes doivent avoir des poids non négatifs.

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 ADCEH
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

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 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;

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

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
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;

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

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
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;

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

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 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;

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

Shortest Path Problem- Example 2

Find the shortest path from node 1 to node 8 (O=1, D=8)

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 12578
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

Arbre Recouvrant Minimal

Étant donné un graphe pondéré, l'objectif du problème d'arbre


recouvrant minimal est de connecter ces nœuds avec des branches
telles que la longueur totale des branches est minimisée et tous les
nœuds sont connectés.


7 D
2
B 4
8 9 
2 5 F
C
8
8 3
E
A 7
0 7
Arbre Recouvrant Minimal

Étant donné un graphe pondéré, l'objectif du problème d'arbre


recouvrant minimal est de connecter ces nœuds avec des branches
telles que la longueur totale des branches est minimisée et tous les
nœuds sont connectés.

Algorithm Kruskal
• Étape 1. Sélectionnez arbitrairement n'importe quel nœud, puis
connectez-le au nœud le plus proche.

• Étape 2. Identifiez le nœud non connecté le plus proche de tout


nœud connecté, puis connectez ces deux nœuds.

• Étape 3. Si tous les nœuds sont connectés, arrêtez-vous ; l'arbre


formé par les connexions des nœuds est l'arbre couvrant minimum.
Sinon, passez à l'étape 2.

61

Arbre Recouvrant Minimal

 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

Minimum Spanning Trees 62


Arbre Recouvrant Minimal

 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

Minimum Spanning Trees 63

Arbre Recouvrant Minimal

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

Minimum Spanning Trees 64


Exercice
 Des étudiants A, B, C, D, E et F doivent passer des examens dans
différentes disciplines, chaque examen occupant une demi-journée :
 Algorithmique : étudiants A et B.
 Compilation : étudiants C et D.
 Bases de données : étudiants C, E, F et G.
 Java : étudiants A, E, F et H.
 Architecture : étudiants B, F, G et H.
 On cherche à organiser la session d’examen la plus courte possible.

Vous aimerez peut-être aussi