OR
OR
OR
Un peu d’Histoire…
La ville de Koeninsberg (aujourd’hui Kaliningrad) est traversée par la
Pregel, qui coule de part et d’autre de l’île de Kneiphof, et possède
sept ponts.
Question posée à Euler en 1736 : Peut-on visiter tous les quartiers de
la ville en ne traversant chaque pont qu’une seule fois ?
c
b
2
Applications
• Cartographie
Réseau routier, réseau internet, …
• Économie – Gestion
Planning de livraisons, gestion de flots, ordonnancement,
…
• Chimie – Biologie
Modélisation de molécules, ADN, …
• Sciences Sociales
Généalogie, phénomènes de masse, conflits, …
• Linguistique
Grammaire, Compilation, …
• Intelligence Artificielle
Comportement, …
3
Théorie des ensembles
[D1] Un ensemble est une collection d’objets. Un ensemble fini
se définit à partir de l’énumération de ses éléments.
X = {x1,x2 , … ,xn}
L’ensemble vide est noté .
5
Opérations ensemblistes
[D6] Soient A,B P(X). On peut construire de nouveaux
éléments de P(X) à l’aide des opérations suivantes :
• La réunion de A et B
A B = { x X : x A ou x B }
• L’intersection de A et B
A B = { x X : x A et x B }
• La différence de A et B
A - B = { x X : x A et x B }
6
Parties de X à k éléments
[D7] Pk(X) est l’ensemble des parties (sous-ensembles) de X à k
éléments.
[E2] X = {a,b,c}
P1(X) = { {a},{b},{c} }
P2(X) = { {a,b},{a,c},{b,c} }
P3(X) = { {a,b,c} }
7
Produit cartésien d’ensembles
[D8] Soient A,B P(X). On définit le produit cartésien de A et
B, noté A B, de la façon suivante :
A B = { (a,b) : a A et b B }
Un élément de l’ensemble A B est appelé un couple.
9
Graphe
[D11] Un graphe G est défini par :
• Un ensemble de sommets X.
• Une application multivoque sur X qui, à chaque sommet x,
associe le sous-ensemble (x) des sommets atteignables depuis x.
(x) est l’ensemble des successeurs de x.
10
Lien entre successeurs et prédécesseurs
A partir de l’ensemble des successeurs de chaque sommet x de X, on
peut définir l’ensemble des prédécesseurs de x :
[D13] Un sommet y est un prédécesseur du sommet x si
x appartient à l’ensemble des successeurs de y. L’ensemble des
prédécesseurs de x est donné par la formule suivante :
-1(x) = { y X : x (y) }
[E6] X = {a,b,c,d,e}
(a) = {d} -1(a) = { x X : a (x) } = {b,e}
(b) = {a} -1(b) = { x X : b (x) } = {e}
(c) = {e} -1(c) = { x X : c (x) } = {d}
(d) = {c,e} -1(d) = { x X : d (x) } = {a}
(e) = {a,b} -1(e) = { x X : e (x) } = {c,d}
11
Graphe non orienté
[D14] Un graphe G = (X, ) est non orienté si :
Pour tout sommet x de X, chacun de ses successeurs y a x pour
successeur.
x X : y (x) x (y)
[E7] Soit X l’ensemble des étudiants présents. (x) est
l’ensemble des voisins de l’étudiant x sur la même rangée.
(x) = {w,y}
w x y z
(y) = {x,z}
arête {x,y}
12
Graphe orienté
[D15] Un graphe G = (X, ) est orienté si il n’est pas non orienté.
(x) = {y}
w x y z
arc (x,y) (y) = {z}
X = {a,b,c,d,e,f}
U = { (a,d) , (b,a) , (c,e) , (d,c) , (d,e) , (e,a) , (e,b) }
14
Adjacence de sommets
[D17] Deux sommets xi et xk de X sont adjacents si xi est un
successeur de xk ou xk est un successeur de xi.
15
Matrice d’adjacence dans un graphe orienté
x1 x2 … xn
Aij = 1 si (xi,xj) U
0 0 x1
= 0 sinon
1 0 x2
A= …
0 xn
d + (e) = 2
e
Demi-degré intérieur de e :
d - (e) = 3 b c
Degré de e :
d (e) = 2 + 3 f
18
Degré d’un sommet et matrice d’adjacence
x1 … xk … xn
0 0 x1
… …
A= 1 … 0 … 0 xk
d +(xk) … …
1 0 xn
d - (xk)
19
Adjacence d’arcs (Graphe orienté)
[D20] Deux arcs ui et uk de U sont semi-adjacents s’ils ont un
sommet en commun.
Deux arcs ui et uk de U sont adjacents si l’extrémité finale de
ui coïncide avec l’extrémité initiale de uk .
c
b
22
Lien entre chemins et matrice d’adjacence
Carré de la matrice d’adjacence A2 = A A
0 si Aik = 1 et Akj = 1
si xi a pour successeur xk
xk a pour successeur xj
A2ij = nombre de chemins de longueur 2 de xi vers xj
T = A + A2 + A3 + … + An-1
24
Complexité du calcul de la fermeture transitive
[T9] La complexité du calcul de la fermeture transitive est
d’ordre 4 : le temps de calcul est proportionnel à n4 où n est l’ordre
du graphe (nombre de sommets du graphe).
T = A + A2 + A3 + … + An-1
[Preuve de T9] Le calcul de la fermeture transitive T nécessite :
• (n-2) multiplications de matrices
– (n-2)n3 additions et (n-2)n3 multiplications n n2 n3 n4
• (n-2) additions de matrices 10 100 1000 10 000
– (n-2)n2 additions 100 10 000 106 108
1000 106 109 1012
25
Optimisation du calcul de la fermeture transitive
[D25] Une matrice booléenne est une matrice dont les coefficients
sont des variables booléennes (V pour Vrai, F pour Faux).
A B A▼B A▲B
V V V V
V F V F
F V V F
F F F F
26
Optimisation du calcul de la fermeture transitive
[A1] Algorithme de Warshall
Pour i de 1 à n
Pour j de 1 à n
Pour k de 1 à n
Tij = Tij ▼ (Tik ▲ Tkj)
27
Parcours (en profondeur) d’un graphe
Objectif : déterminer l’ensemble des sommets atteignables depuis un
sommet source s.
[A2] Algorithme (récursif) de parcours d’un graphe
Visiter les successeurs du sommet s
Visiter un sommet t
Début
Si t n’a pas encore été visité Alors
Marquer t
Visiter les successeurs de t
FinSi
Fin
28
Exemple de parcours en profondeur
Déterminer l’ensemble Xa des sommets du graphe atteignables depuis
le sommet a.
a d Visiter d
Visiter c
c
Visiter b
b e Visiter a
Visiter e
f
Xa = { d , c, b, a, e }
29
Connexité (Graphe orienté)
[D26] La longueur d’une chaîne (ou d’un chemin) c, notée l(c),
correspond aux nombres d’arcs de la chaîne (ou du chemin).
30
Composantes connexes d’un graphe
[D29] Une composante faiblement connexe d’un graphe est un
sous-ensemble Y de X tel que : entre deux sommets xi et xj
quelconques de Y, il existe une chaîne c = {u1 , … , um} de sorte
que xi est une des extrémités de u1 et xj une des extrémités de um.
32
Exemple de recherche de cfcm
cfcm depuis le sommet a : { a , b , c }
cfcm depuis le sommet d : { d , e , f }
-
+-
b
+- +-
+ +
a c d e
+- +-
- -
f
+
+-
33
Graphe orienté valué
[D32] Un graphe orienté valué G est défini par :
• Un ensemble de sommets X.
• Un ensemble d’arcs U X2.
• Une valuation V : U R qui à chaque arc du graphe associe une
valeur réelle (poids).
34
Exemple de graphe orienté valué
7
a d
4
2
3
1 4 e 3 f
5 1
b c
35
Recherche de chemins de poids minimal (resp.
maximal)
36
Chemin de poids minimal
[A4] Algorithme de Ford
Initialisation
λ1 = 0 ; j ≠1 λj = +∞
λj = λi + wij
37
Chemin de poids maximal
[A5] Algorithme de Ford
Initialisation
λ1 = 0 ; j ≠1 λj = - ∞
λj = λi + wij
38
Chemin de poids minimal
[A6] Algorithme de Bellman-Kalaba
Initialisation
k=0
λ1(k) = 0 ; j ≠ 1 λj(k) = +∞
k=k+1
λ1(k) = 0 ; j ≠ 1 λj(k) = min {λi(k-1) + wij }
OUI xj X : NON
FIN
λj (k) ≠ λj (k-1)
39
Chemin de poids maximal
[A7] Algorithme de Bellman-Kalaba
Initialisation
k=0
λ1(k) = 0 ; j ≠ 1 λj(k) = - ∞
k=k+1
λ1(k) = 0 ; j ≠ 1 λj(k) = max {λi(k-1) + wij }
OUI xj X : NON
FIN
λj (k) ≠ λj (k-1)
40
Chemin de poids minimal
[A8] Algorithme de Dijkstra
Initialisation
D = { x1 } ; λ1 = 0 ; j ≠ 1 λj = +∞
λk = min λj xj D
D = D { xk } ; λj = min {λj , λk + wkj } xj D
NON
xn D OUI
FIN
41
Chemin de poids minimal
[A9] Obtention du chemin à partir des poids minimaux
Initialisation
xk = xn ; C = ( xn )
Chercher xj X : λk = λj + wjk
xk = xj
C = ( xk , C )
NON
xk = x1
OUI
FIN
42
Recherche de flots maximaux
Objectif : Faire transiter la plus grande quantité (information,
marchandise, personnes) d’une source vers une destination au sein
d’un réseau.
b
[3]
[7]
[5]
Entrée a [4] d e Sortie
[2]
[5]
[2]
44
Définition du flot réalisable
[D34] Un flot F sur un réseau avec capacités R = (X,U,C) est une
valuation de l’ensemble des arcs U. Le flot correspond à la
quantité qui transite sur le réseau.
Notation : (xi,xj) U : F(xi,xj) = Fij flot sur l’arc (xi,xj)
45
Définition du flot maximal
[D36] La valeur d’un flot F sur R = (X,U,C) correspond à la
quantité totale qui transite sur le réseau. La valeur du flot
correspond à la somme des flots sortant de l’entrée qui est égale à
la somme des flots convergeant vers la sortie (conservation du
flux).
46
Construction du graphe d’écart
[D38] Un arc (xi,xj) du réseau R = (X,U,C) est saturé par le flot F
si :
Fij = Cij (capacité maximale atteinte)
[D39] Un arc (xi,xj) du réseau R = (X,U,C) est antisaturé par F si :
Fij = 0 (flot inexistant)
b b
3 [3] 2
5 [7] 3
5
a 2 [4] d a 2 2 d
1
4 [5] 2 [2] 4 2
c c
49