Beruflich Dokumente
Kultur Dokumente
Mehemmel Abbas
2014 / 2015 1
Chap 0
Un peu dhistoire
Leonhard Euler
(1707-1783)
1852
Augustus de Morgan
(1806-1871)
En 1857
Hamilton invente un jeu, The icosian
game, quil commercialise en 1859.
Le jeu est constitu dun dodcadre
dont les 20 sommets portent le nom
dune grande ville dans le monde.
Le but du jeu consistait trouver un
chemin sur les artes du dodcadre Hamilton (1805-1865)
permettant de visiter chaque ville
une fois et une fois seulement, en
revenant la ville de dpart.
1878
le mot graphe est introduit pour
la premire fois par langlais J. J.
Sylvester (1814-1897)
XXe sicle
15
Pluton
Terre
Mars
Neptune
Jupiter
Uranus
Saturne
LL
LCC /// Chou
C Chou
Chou LL
L Chou
Chou /// C
Chou C
C C
C Chou
C Chou /// L
Chou L
L
LL
L /// C
C Chou
C Chou
Chou C
C /// LL
C L Chou
Chou
Chou Chou
Chou /// L
Chou LC
L C
C
rien /// LL
rien
rien LCC Chou
C Chou
Chou
Une poigne de
mains
Albert
Edouard Bernar
Denis Charles
23
25
26
Exemple : Considrons le graphe G1 dordre 4 dfini par :
S = {s1, s2, s3, s4} et A = {a, b, c, d, e}
tel quaux artes a, b, c, d, e soient respectivement
associs [s1, s1], [s1, s2], [s1, s2], [s1, s3], [s2, s3].
Une reprsentation possible de ce graphe est :
Reprsentation graphique
Il existe une infinit de manires de reprsenter graphiquement un graphe.
Exemple:
Ensemble des sommets : V = { 1, 2, 3, 4, 5 }
Ensemble des artes :
E = { (1, 3), (1, 4), (1, 5), (2, 3), (3, 4), (3, 5), (4, 5) }
28
reprsentent le mme graphe
reprsentent aussi
le mme graphe
29
30
Dfinitions
Si l'arte e relie les sommets a et b, on dira que ces sommets
sont adjacents, ou incidents avec e,
Ordre du graphe G = 5
Graphe G
31
Un K5 Graphe
Graphe complet K5
V = {1, 2, 3, 4, 5}
E = {(1,2), (1,3),(1,4),(1,5),(2,3),(2,4), (2,5),(3,4),(3,5), (4,5)}
32
Degrs
Degr d'un sommet
Pour un graphe ou un multi graphe, on appelle degr du sommet
v, et on note d(v), le nombre d'artes incidentes avec ce
sommet.
Attention ! une boucle sur un sommet est compte deux fois.
Dans un graphe simple, on peut aussi dfinir le degr d'un sommet
comme tant le nombre de ses voisins (la taille de son voisinage).
s1 est de degr 5,
s2 de degr 3,
s4 de degr 0.
33
d ( x) 2 * A
x X
Cest un nombre pair
Albert
Edouard Bernar
Denis Charles
36
Chanes et cycles
37
38
Graphe Connexe:
Un graphe est connexe s'il existe pour chaque paire de sommet
une chane reliant chacun des deux sommets.
39
Thorme
Pour tout graphe ayant m artes, n sommets et p
composantes connexes, on a :
(G) = m n + p 0
40
Graphe partiel et sous-graphe
1
1
0
46
Matrices dincidence sommet-arte
la matrice dincidence dun graphe non orient A est dfinie
par:
1
2
0
47
48
Listes d'adjacences
On peut aussi reprsenter un graphe en donnant pour
chacun de ses sommets la liste des sommets auxquels il
est adjacent.
listes d'adjacences du graphe G:
1: 2, 4, 6
2: 4, 5
3: 4
4: 5
5: -
6: 2
graphe G:
49
Matrice d'adjacence
M=
caractristiques:
Elle est carre:
il y a autant de lignes que de colonnes.
Il n'y a que des zros sur la diagonale.
Un 1 sur la diagonale indiquerait une boucle.
Elle est symtrique pour les graphes non orients (Mij = M
50 ji)
Matrice d'adjacence
On peut reprsenter un graphe par une matrice
d'adjacences.
Une matrice (n x m) est un tableau de n lignes et m
colonnes.
(i, j) dsigne l'intersection de la ligne i et de la colonne j.
Dans une matrice d'adjacences, les lignes et les colonnes
reprsentent les sommets du graphe.
Un 1 la position (i, j) signifie que le sommet i est adjacent
au sommet j.
51
M2 =
52
On a calcul ci-dessous les matrices M2 et M3.
Pour chacune de ces matrices, quoi correspondent les nombres
obtenus?
M3 =
Thorme
Le coefficient gnral de Mk est le nombre de chemins (ou
chanes) de longueur k entre i et j.
53
Exercice:
Dcrivez les graphes ci-dessous par:
des matrices dincidences,
des matrices d'adjacences
et des listes d'adjacences.
54
Quelques types de graphes
Graphe biparti
V = {1, 2, 3, 4, 5}
E = {(1,2), (1,4), (2,3), (2,5), (3,4), (4,5)}
55
Proprit :
un graphe reprsentatif d'intervalles est triangul 56
5. Graphes eulriens
On dit qu'un graphe est eulrien s'il est possible de trouver
un cycle passant une et une seule fois par toutes les artes.
Thorme
Un graphe non orient connexe possde une chane eulrienne
si et seulement si le nombre de sommets de degr impair est
gal 0 ou 2.
Il admet un cycle eulrien si et seulement si tous ses sommets
ont un degr pair.
58
59
Thorme (Ore)
Soit G = (V, E) un graphe simple d'ordre n 3.
Si pour toute paire {x, y} de sommets non adjacents, on a d(x) + d(y) n,
alors G est hamiltonien.
Corollaire (Dirac)
Soit G = (V, E) un graphe simple d'ordre n 3. Si pour tout sommet x de
G, on a d(x) n/2, alors G est hamiltonien.
En effet, un tel graphe vrifie les conditions du thorme prcdent. Si x et
y ne sont pas adjacents, on a bien :
d(x) + d(y) n/2 + n/2 = n
Problme du voyageur de commerce
Le problme du voyageur de commerce (Traveling Salesman Problem en
anglais) consiste trouver le plus court cycle passant par tous les
sommets dans un graphe o les artes sont pondres.
On travaille souvent sur un graphe complet.
62
Graphes planaires
On dit qu'un graphe est planaire si on peut le dessiner
dans le plan de sorte que ses artes ne se croisent pas.
Une carte, ou graphe planaire topologique, est une
reprsentation particulire d'un multi-graphe planaire
fini.
On dit qu'une carte est connexe si son graphe l'est.
Une carte divise le plan en plusieurs rgions.
63
Graphes planaires
Exemple: la carte, avec six sommets et
neuf artes, divise le plan en
cinq rgions (A, B, C, D, E).
On remarque que quatre rgions
sont limites alors que la cinquime (E),
extrieure au diagramme, ne l'est pas.
Le degr d'une rgion r, not d(r), est la longueur du cycle
qui limite r. Dans le graphe ci-contre,
d(A) = 4, d(B) = 3, d(C) = 3, d(D) = 5, d(E) = 3.
Remarque: toute arte limite deux rgions, ou est contenue
dans une rgion et est alors compte deux fois dans la chane
ferme. 64
Lemme
Thorme (Euler)
S-A+R=2 65
Thorme (Kuratowski)
Un graphe est non planaire si et seulement si il contient un sous-
graphe homomorphe K3,3 ou K5.
66
Graphes orients (digraphes)
Un digraphe est fortement connexe, si toute paire
ordonne (a, b) de sommets distincts du graphe est
relie par au moins un chemin. En d'autres termes,
tout sommet est atteignable depuis tous les autres
sommets par au moins un chemin.
On appelle composante fortement connexe tout
sous-graphe induit maximal fortement connexe
(maximal signifie qu'il n'y a pas de sous-graphe induit
connexe plus grand contenant les sommets de la
composante). 67
69
graphe valu
70
Graphes pondrs - graphes probabilistes
un graphe pondr, un graphe, orient ou non,
dont les artes (ou les arcs) possdent un poids.
"graphes valus",
"graphe probabiliste".
71
Exercice:
72
Parcours de graphes
73
Parcours en largeur
1. partir d'un sommet donn,
2. visiter tous les sommets successeurs.
3. On rpte l'opration tant qu'il existe des sommets
non visits.
Les informations prendre en compte :
Un sommet dj visit ne doit pas tre revisit.
On explore les sommets successeurs directs.
Une file peut maintenir jour la liste des sommets
visiter.
74
Exemple:
parcourir le graphe en largeur en
partant du sommet 1.
Le parcours en largeur de ce graphe
donnerait la liste suivante :
1 2 3 4 6 5 7 8.
Une autre solution serait la suivante:
1 3 2 6 4 5 8 7.
Elles sont toutes les deux valables.
75
On part du sommet 1,
On liste tous les sommets
successeurs,
Il s'agit donc des sommets
2 et 3.
Marquons les d'une couleur
diffrente
76
On recommence par le sommet 2,
le seul successeur est le sommet 4,
On l'affiche et on le marque comme
tant parcouru.
On passe au sommet 3,
Son successeur est le sommet 6
On l'affiche et on le marque
Le sommet 4 a deux successeurs,
le sommet 5 et le sommet 6.
On ajoutera seulement le sommet 5
la file des sommets parcourir.
77
. . .
78
Ajouter le sommet de dpart la file
on prend le sommet de la file et on y effectue les
choses :
parcourir la liste des successeurs Si de S :
Si Si est blanc alors Si devient noir et on ajoute Si
la File.
L'algorithme s'arrte donc tout naturellement
lorsque la file devient vide.
79
81
Exercice (TP) :
programmer cet algorithme en utilisant la
matrice dadjacence pour reprsenter un
graphe.
82
Parcours en profondeur
Il s'agit d'un parcours o l'on
explore un chemin jusqu'a ce que
l'on ne puisse plus avancer.
Dans ce cas, il faut rebrousser
chemin dans notre exploration et
partir d'un sommet qui n'a pas t
visit.
1,2,4,5,7,8,6,3
1,3,6,4,5,8,7,2
83
Parcours en profondeur
Initialiser(G);
ParcoursProfondeur( Graphe G, Sommet S) {
S.couleur <- Noir;
Pour tous les successeurs Si de S faire
Si Si.couleur == Blanc alors
ParcoursProfondeur(G , Si);
Fin si
Fin Pour }
84
Exercice:
Drouler lalgorithme pour les
exemples suivants:
Composantes connexes
utiliser les algorithmes de parcours pour dterminer
les composantes connexes d'un graphe.
Rappel : les composantes connexes d'un graphe sont
les ensembles de sommets accessibles les uns depuis
les autres.
on utilise l'algorithme de parcours en profondeur
d'abord et on colorie les sommets rencontrs avec
une couleur correspondant la composante connexe
courante.
86
Composantes-Connexes
87
Fin Chap I
88
C h a p II
Les arbres
89
Les arbres
Un arbre (non orient) !
90
Les arbres
Dfinitions :
Un arbre est un graphe non orient dans lequel il existe une
Thorme
Les dfinitions suivantes sont quivalentes: pour tout
graphe G = (V, E) n sommets.
1. G est un arbre,
2. G est connexe et sans cycles,
3. G est connexe et comporte n-1 artes,
4. G est sans cycles et comporte n-1 artes,
5. chaque paire {u, v} de sommets distincts est relie par
une seule chane simple (et le graphe est sans boucles).
92
Quelques dfinitions des arbres
Dfinition 6:
Un graphe est connexe minimal sil est connexe et na pas
plus dartes quaucun autre graphe connexe !
Lide: si nous enlevons une arte de la chaine unique,
nous cassons la connexit!
Dfinition 7:
Un graphe est connexe minimal sil est connexe et
comporte n-1 artes.
Dfinition 8:
Un graphe est sans cycles, maximal sil est sans cycles et na
pas moins dartes quaucun autre graphe sans cycles ! 93
Les arborescences
Une arborescence peut tre caractrise comme suit.
Elle possde (n-1) arcs.
Tous les sommets sauf un ont un degr entrant unitaire.
Un seul sommet a un degr entrant nul.
94
Les arborescences
Toute arborescence peut tre transforme en un arbre !
Il suffit de changer les arcs en artes.
Nous aurons (n-1) artes.
95
Proprits :
Nous prservons la connexit !
96
Les arbres de recouvrement
Un arbre de recouvrement ( AR ) dun graphe G connexe est
un sous-graphe de G qui comporte tous les sommets
Proprits :
Nous prservons la connexit !
Un autre arbre
de recouvrement !
97
Proprits :
Nous prservons la connexit !
98
Les arbres de recouvrement
Un arbre de recouvrement ( AR ) dun graphe G connexe est
un sous-graphe de G qui comporte tous les sommets
Proprits :
Nous prservons la connexit !
Un autre arbre
de recouvrement ! 99
Problme :
Tracer larbre le plus court qui touche
tous les nuds, c--d. minimiser la
longueur totale des arcs contenus dans
larbre.
1. Algorithme de Kruskal;
2. Algorithme de Prim
100
Algorithme de Kruskal
1. Trier les arcs en ordre croissant de poids ;
2. Construire un arbre en slectionnant les arcs
selon lordre tabli ltape 1.
101
Algorithme de Kruskal
1. Trier les arcs
102
Algorithme de Kruskal
2. Construire un arbre T = { }
103
Algorithme de Kruskal
On value (3,4) :
{ (3,4), (2,4), (4,5), (2,3), (1,3), (3,5), (1,2), (5,6),(4,6)
}
T= { (3,4) }
104
Algorithme de Kruskal
On value (3,4) :
{ (3,4), (2,4), (4,5), (2,3), (1,3), (3,5), (1,2), (5,6),(4,6)
}
T= { (3,4) }
105
Algorithme de Kruskal
On value (2,4) :
{ (3,4), (2,4), (4,5), (2,3), (1,3), (3,5), (1,2), (5,6),(4,6)
}
T= {(3,4), (2,4)}
106
Algorithme de Kruskal
On value (4,5):
{ (3,4), (2,4), (4,5), (2,3), (1,3), (3,5), (1,2), (5,6),(4,6)
}
T= { (3,4), (2,4), (4,5) }
107
Algorithme de Kruskal
On value (2,3):
{ (3,4), (2,4), (4,5), (2,3), (1,3), (3,5), (1,2), (5,6),(4,6)
}
T= { (3,4), (2,4), (4,5) }
108
Algorithme de Kruskal
On value (1,3):
{ (3,4), (2,4), (4,5), (2,3), (1,3) , (3,5), (1,2),
(5,6),(4,6) }
T= { (3,4), (2,4), (4,5), (1,3) }
109
Algorithme de Kruskal
On value (3,5):
{ (3,4), (2,4), (4,5),(2,3), (1,3) , (3,5) , (1,2), (5,6),(4,6)
}
T= { (3,4), (2,4), (4,5), (1,3) }
110
Algorithme de Kruskal
On value (1,2):
{ (3,4), (2,4), (4,5),(2,3), (1,3) ,(3,5), (1,2), (5,6) ,(4,6)
}
T= { (3,4), (2,4), (4,5), (1,3) }
111
Algorithme de Kruskal
On value (5,6):
{ (3,4), (2,4), (4,5),(2,3), (1,3) ,(3,5), (1,2), (5,6) ,(4,6)
}
T= { (3,4), (2,4), (4,5), (1,3), (5,6) }
112
Algorithme de Kruskal
On value (4,6):
{ (3,4), (2,4), (4,5), (2,3), (1,3) , (3,5), (1,2), (5,6),
(4,6)}
T= { (3,4), (2,4), (4,5), (1,3), (5,6) }
113
Algorithme de Prim
0. Initialiser T={}, S={} et W= V (sommets)
1. Choisir un nud i W, poser S = { i } et W = W \ { i
}
2. Choisir un nud j W tel que larc (i, j), o i S, ait
le ci,j le plus petit;
3. Si (i,j) ne forme pas de cycle alors inclure cet arc dans
larbre, i.e. T = T (i,j), j S et W = W \ { j } et aller
ltape 4;
sinon exclure larc et retourner ltape 2;
4. Si S = V alors larbre de poids minimal est trouv;
sinon
retourner l tape 2.
114
Algorithme de Prim
S ={}
W = { 1, 2, 3, 4, 5, 6 }
T= {}
115
Algorithme de Prim
S ={1}
W = { 2, 3, 4, 5, 6 }
T= {}
116
Algorithme de Prim
S = { 1,3 }
W = { 2, 4, 5, 6 }
T = { (1,3) }
117
Algorithme de Prim
S = { 1,3 }
W = { 2, 4, 5, 6 }
T = { (1,3), (3,4) }
118
Algorithme de Prim
S = { 1, 3, 4}
W = { 2, 5, 6 }
T = { (1,3), (3,4) }
119
Algorithme de Prim
S = { 1, 3, 4}
W = { 2, 5, 6 }
T = { (1,3), (3,4), (2,4) }
120
Algorithme de Prim
S = { 1, 3, 4, 2 }
W = { 5, 6 }
T = { (1,3), (3,4), (2,4) }
121
Algorithme de Prim
S = { 1, 3, 4, 2 }
W={6}
T = { (1,3), (3,4), (2,4), (4,5) }
122
Algorithme de Prim
S = { 1, 3, 4, 2, 5 }
W={6}
T = { (1,3), (3,4), (2,4), (4,5) }
123
Algorithme de Prim
S = { 1, 3, 4, 2, 5 }
W={6}
T = { (1,3), (3,4), (2,4), (4,5) }
124
Algorithme de Prim
S = { 1, 3, 4, 2, 5 }
W={6}
T = { (1,3), (3,4), (2,4), (4,5) }
125
Algorithme de Prim
S = { 1, 3, 4, 2, 5 }
W={6}
T = { (1,3), (3,4), (2,4), (4,5) }
126
Algorithme de Prim
S = { 1, 3, 4, 2, 5 }
W={6}
T = { (1,3), (3,4), (2,4), (4,5) }
127
Algorithme de Prim
S = { 1, 3, 4, 2, 5, 6 }
W={}
T = { (1,3), (3,4), (2,4), (4,5), (5,6) }
128
Algorithme de Prim
S = { 1, 3, 4, 2, 5, 6 } ; W={}
T = { (1,3), (3,4), (2,4), (4,5), (5,6) }
Poids de larbre = 27 units
129
130
Thorme sur les coupes
131
132
Thorme sur les coupes
133
134
Thorme sur les chemins
Un arbre T* est un arbre de poids minimal, si et
seulement si il satisfait la condition doptimalit
suivante sur les chemins :
(k, l) G(V,E) tel que (k, l) T* , on a ci,j
ck,l pour chaque (i, j) appartenant au chemin sur
larbre T* reliant k et l.
135
136
Thorme sur les chemins
137
138
Fin Chap II
139
Chap III
Le Problme du Plus
courts chemins
140
Problme du Plus courts chemins
tant donn un Graphe valu: G = (S,A,v) avec valuation
v:AR
Source du graphe : s S
Problme: pour tout t S calculer
(s, t) = min { v(c) ; c chemin de s t } {+}
Exemple: Cots
3
5
8
5 a b
a b 3
3 0
5 5
s 1 1 s 1 1 1 3
5 1 3 5
5 5
c d c d
3 3 4 9 141
3 8 3 5 8
5 a b
a b
3 3
0 5 0 5
s 1 1 s 1 1
1 3
5 1 3 5
5 5
c d c d
3 4 9 3 4 9
142
Existence
Proposition
pour tout t S (s, t) > -
ssi
le graphe na pas de circuit de cot < 0
accessible depuis s
5
a b
3
5
s 1 1 1 -3
5
c 5 d
3 143
Proprits de base
Proprit 1 : G = (S, A, v)
soit c un plus court chemin de p r dont lavant-
dernier sommet est q
Alors (p, r) = (p, q) + v(q, r)
q
p r
Proprit 2 : G = (S, A, v)
soit c un chemin de p r dont lavant-dernier
sommet est q
Alors (p, r) (p, q) + v(q, r) 144
Relaxation
Calcul des (s, t) par approximations successives t S
d(t) = estimation de (s, t)
(t) = prdcesseur de t : avant-dernier sommet dun
chemin de s t ayant pour cot d(t)
Initialisation de d et
INIT
pour chaque t S faire
{ d(t) ; (t) nil;}
d(s) 0;
d(r)
Relaxation de larc (q, r) s q r
RELAX(q, r)
si d(q) + v(q, r) < d(r) alors d(q)
Algorithme de Dijkstra
Condition : v(p, q) 0 pour tout arc (p, q)
dbut
INIT;
QS; // lensemble de Sommets
tant que Q faire {
q MINd (Q) ; Q Q - {q } ;
pour chaque r successeur de q faire
RELAX(q, r) ;
}
fin
146
Exemple 1:
5
a b
3 S={s,a,b, c, d }
0 5
s 1 1 Q={s,a,b, c, d }
1 3
5 d = {0 , , , , }
c
5
d = {nil , nil , nil ,nil ,nil }
3
3
5
a b
3
0 5 S={s,a,b, c, d }
s 1 1 Q={ a,b,c, d }
5 1 3
5 d = {0, 3, , 5 , }
c d = {nil , s , nil ,s , nil }
3 5 147
Exemple 1 suite:
3
5
a b
3 S={s,a,b, c, d }
0 5
s 1 1 Q={ a,b, c, d }
1 3
5 d = {0, 3, , 5 , }
c
5
d = {nil , s , nil ,s , nil }
3 5
3 8
5
a b
3 S={s,a,b, c, d }
0 5
s 1 1 Q={ b, c, d }
1 3 d = {0, 3, 8 , 4 , }
5
c
5
d = {nil , s , a , a , nil }
3 4 148
Exemple 1 suite:
3 8
5
a b
3 S={s,a,b, c, d }
0 5
s 1 1 Q={ b, c, d }
5
1 3 d = {0, 3, 8 , 4 , }
c
5
d = {nil , s , a , a , nil }
3 4
3 8
5
a b
3 S={s,a,b, c, d }
0 5 Q={ b , d }
s 1 1
1 3 d = {0, 3 , 8 , 4 , 9}
5
c
5
d
= {nil , s , a , a , c}
3 4 9 149
Exemple 1 suite:
3 8
5
a b S={s,a,b, c, d }
3
0 5 Q={ b , d }
s 1 1
1 3 d = {0, 3 , 8 , 4 , 9}
5
5 = {nil , s , a , a , c}
c d
3 4 9
a b S={s,a,b, c, d }
Q={ d }
s d = {0, 3 , 8 , 4 , 9 }
= {nil , s , a , a , c }
c d
puis Q = 150
Implmentation
Si |S| = n et |V| = m
Par matrice d'adjacence
temps global O(n2)
151
Exemple 2
152
Algorithme de Bellman-Ford
Lalgorithme de DIJKSTRA MOORE ne permet pas de
considrer les arcs ngatifs, car une fois quun sommet est
marqu on ne peut changer ce marquage lors des itrations
suivantes. fixation dtiquettes.
On considre donc ici un algorithme qui permet un
marquage qui nest pas dfinitif tant que le programme nest
pas dtermin (le marquage est modifi itrativement).
correction dtiquettes.
L algorithme de BELLMAN-FORD est valable pour des
graphes sans circuit, valus par des longueurs quelconques.
153
Notations :
154
Initialisation : n = nombre de sommets de G
= tableau initialis 0
d = tableau des distances initialis + (sauf d(s) = 0)
W = matrice des poids des arcs ( si larc nexiste pas)
Traitement : k = 1
tant que k n et il y a eu des modifications ltape prcdente
pour tout sommet x faire
pour tout y successeur de x faire
si d(x) +W(x, y) < d(y) alors
d(y) = d(x) +W(x, y)
(y) = x
fin
fin
fin
k=k+1
Fin Temps : O( n . m ) 155
Exemple 1
3 8
5 5
a b a b
3 3
0 5 0 5
s 1 -1 -1 s 1 -1 -1
3 3
5 5
5 5
c d c d
-3 -3 4 7
156
Exemple 1 (suite)
3 8 3 8
5 5
a b a b
3 3
0 5 0 5
s 1 -1 -1 s 1 -1 -1
3 3
5 5
5 5
c d c d
-3 4 7 -3 4 7
157
Exemple 2
3 6
5 5
a b a b
3 3
0 5 0 5
s 1 1 s 1 1
1 -3 1 -3
5 5
5 5
c d c d
3 3 4 9
158
Exemple 2 (suite)
3 6 3 4
5 5
a b a b
3 3
0 5 0 5
s 1 1 s 1 1
1 -3 1 -3
5 5
5 5
c d c d
3 4 9 3 4 7
159
Exemple 2 (suite)
3 4 3 2
5 5
a b a b
3 3
0 5 0 5
s 1 1 s 1 1
1 -3 1 -3
5 5
5 5
c d c d
3 4 7 3 4 5
160
Exemple 2 (suite)
3 2 3 0
5 5
a b a b
3 3
0 5 0 5
s 1 1 s 1 1
1 -3 1 -3
5 5
5 5
c d c d
3 4 5 3 4 3
161
Graphes acycliques
Tri topologique
dbut
INIT;
pour chaque q S en ordre topologique faire
pour chaque r successeur de q faire
RELAX(q, r) ;
Fin
Exemple
-6
a b
3
5
s -1 -1
5
5 Ordre topologique
c d c, s, a, b, d
-3
5
-1
c 5 s 3 a -6 b -1 d
-3 5
164
Calcul des cots
5
-1
0
c 5 s 3 a -6 b -1 d
-3 5
5
-1
0
Examen de c 5 3
c s a -6 b -1 d
-3 5
5
-1
0 3 -3
Examen de s 5 3
c s a -6 b -1 d
-3 5
165
-3 5
5
-1
0 3 -3 -4
Examen de b 5 3
c s a -6 b -1 d
-3 5
Examen de d inutile
166
Cycle et circuit
Un cycle est une chane telle que :
le mme arc ne figure pas deux fois dans la squence ;
les deux sommets aux extrmits de la chane concident.
Un cycle lmentaire est un cycle ne rencontrant pas
deux fois le mme sommet (except le sommet initial
qui concide ncessairement avec le sommet final).
167
Exemples
C1 = (1,5,4) est un cycle
lmentaire de longueur 3
C2 = (1,2,7,9,8,3) est un
cycle lmentaire de longueur 5
(1,5,6,2,5,4) n'est pas un cycle
C3 = (3, 4, 9, 7, 6. 8) est un cycle
de longueur 7 qui n'est pas lmentaire
168
Notation Vectorielle
Les arcs du graphe tant numrots de 1 m, on peut faire
correspondre tout cycle un m-uplet (un "vecteur") compos
de -1, 1 et 0 de la manire suivante :
Si l'arc n'appartient pas au cycle, on met un "0"
Si l'arc appartient au cycle et est parcouru dans le bon sens (on
le qualifie alors de "direct"), on met un +1
Si l'arc appartient au cycle mais parcouru dans le mauvais sens
(on le qualifie alors de "inverse"), on met un -1
169
Exemples :
C1 = (1,5,4)
C1 = (1, 0, 0, -1, 1, 0, 0, 0, 0)
C2 = (1,2,7,9,8,3)
C2 = (1, 1, 1, 0, 0, 0, 1, 1, 1)
C3 = (3, 4, 9, 7, 6. 8)
et C3 = (0, 0, 1, 1, 0, -1, -1, 1, -1)
170
On peut donc assimiler un cycle
un vecteur et dfinir la somme
(vectorielle) de 2 ou plusieurs
cycles.
Exemple : C3 = (3, 4, 9, 7, 6. 8)
est la somme du cycle
(3,4,8) et du cycle (9,7,6).
(0,0,1,1,0,0,0,1,0) + (0,0,0,0,0,-1,-1,0,-1) = (0,0,1,1,0,-1,-1,1,-1)
Proprits:
Tout cycle est la somme de cycles lmentaires sans arc
commun.
Un cycle est lmentaire si et seulement s'il est minimal.
171
172
Proprit : Soit un graphe G d'ordre n (n sommets) avec m
arcs et p composantes connexes: (G) = m - n + p .
Dfinition: Soit A un ensemble de sommets du graphe, on
appellera cocycle associ A, qu'on notera (A),
l'ensemble des arcs incidents A, ceux qui quittent A
seront nots positivement et ceux qui pointent vers A seront
nots ngativement.
Un cocycle c'est donc l'ensemble des arcs qui relient A aux
autres sommets du graphe; si on enlve les arcs du cocycle
on "dconnecte" A.
Cycle et cocycle sont des notions duales.
173
174
Dfinition : Un cocycle sera dit
lmentaire quand il est compos
d'arcs reliant deux sous-ensembles
de sommets connexes qui partitionnent
une composante connexe du graphe
(donc tous les sommets en cas de
graphe connexe).
Exercice:
1) Dterminer tous les cycles lmentaires
2) Extrayez-en une base
3) Dterminer tous les cocycles
lmentaires
4) Extrayez-en une base
176
Et 3!
177
C h a p IV
Rseaux de flots
Problme du flot maximum
178
PROBLEME DE FLOTS
179
181
Conservation du flot:
pour tout sommet autre que s et t, la somme des flots sur
les arcs entrants et la somme des flots sur les arcs sortants
sont gales.
C(E, F) = 26 184
Proprit :
Le flux de E F dans un flot f est : f (E, F ) f (u )
uExF
C(E, F) = 12+14 = 26
f(E, F) = 12+11 = 23
(E, F) = | f | = (12+11) - 4 = 19
| f | = (12+7+4) 4 = 19 186
Le flot maximum et la coupe minimum
Il existe toujours un flot possible qui est le flot nul.
Problme : comment trouver un flot qui a la valeur maximum ?
Recherche d'un chemin amliorant.
Dterminer le rseau rsiduel :
187
Le flot
Le rseau rsiduel
correspondant
188
Le graphe orient avec ces capacits est le rseau rsiduel.
Le rseau rsiduel
189
Un chemin amliorant
191
Remarque :
La condition 3. implique que | f | est la valeur minimum des
capacits des coupes du rseau, puisqu'on sait dj que | f | est
infrieur la capacit de n'importe quelle coupe.
Valeur du flot maximal = Capacit de la coupe minimale.
192
L'algorithme de Ford et Fulkerson
193
Variantes et applications :
Parfois, il y a plusieurs sources et plusieurs puits.
Adjonction d'une
super-source et d'un
super-puits
194
Valeur de ce flot?
195
Flot maximum?
196