Académique Documents
Professionnel Documents
Culture Documents
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é ∅.
4
Théorie des ensembles
[D4] La formule x ∈ X signifie que x appartient à l’ensemble X.
La formule x ∉ X signifie que x n’appartient pas à l’ensemble X.
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 = {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.
xi adjacent à xk ≡ xi ∈ Γ(xk) ou xk ∈Γ(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
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
[T7] Tij correspond au nombre de chemins (de longueur
inférieure ou égal à n-1) depuis xi vers xj dans le graphe G.
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).
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
∃ (xi , xj) ∈
OUI NON
U: FIN
λj > λi + wij
37
Chemin de poids maximal
[A5] Algorithme de Ford
Initialisation
λ1 = 0 ; ∀ j ≠1 λj = - ∞
λj = λi + wij
∃ (xi , xj) ∈
OUI NON
U: FIN
λ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.
43
Exemple de réseau avec capacités
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