Vous êtes sur la page 1sur 32

ALGORITHMIQUE DE

GRAPHE &
OPTIMISATION

L.HORCHANI
II.1/ENSI :2012/2013
1
PROBLMES DE
FLOTS
2
FLOTS DANS UN GRAPHE
Le problme des flots dans les rseaux concerne la circulation de
matire sur les arcs d un graphe. Parmi les nombreuses applications
qui relvent de ce problme, on trouve :

les rseaux de transport de marchandises de diffrents points
distributeurs diffrents points consommateurs
l coulement de liquides lintrieur de tuyaux
le courant dans les rseaux lectriques
l informatique travers les rseaux de communication
le cot de ralisation d un projet en ordonnancement, etc.
3
1-DFINITIONS
On appelle rseau de transport un graphe G=(X,U,c) orient,
valu positivement, sans boucle ayant une racine e (le nud de
G nayant pas de prcdent ) et un puits s (le nud de G nayant
pas de suivant ) et contenant l'arc (p,e) de valuation infinie
c(u) est la capacit de larc u


4

DFINITION 1:

Un flot f sur un rseau de transport G=(X,U,c) est un application f
de U dans IR qui vrifie:

1- Les contraintes de capacit:
0 s f
ij
s c
ij
(i,j) eU (f(i,j) = le flux sur larc (i,j))
2- Les contraintes de conservations ( Kirchoff):

( ) ( )
ij ki
j i j i
i X f f
+
eI eI
e =

5
Un premier exemple de flot est le flot nul. Un deuxime exemple
de flot est:
6
Remarque : le problme du flot max consiste trouver un flot
dans un rseau de transport vrifiant 1,2 / f
s,e
soit max


Avant d'introduire les algorithmes pour maximiser le flot,
voici la proprit de conservation du flot gnralise un
sous-ensemble de sommets.
LEMME :
Si Y est un sous-ensemble de X, le flot sortant de Y est
gal au flot entrant dans Y.
7

DFINITION 3 :Flot complet
Soit f un flot dfini sur un graphe G .
Un arc u=(i,j) est dit satur si f
i,j
=c
i,j
Le flot est dit complet si tout chemin de e s contient au moins
un arc satur





2-FLOT COMPLET
Une premire ide pour optimiser le flot est de saturer
successivement les chemins de e s. On obtiendra alors un flot
dit complet qui, comme nous le verrons ci-dessous, n'est pas
maximal, mais fournit une excellente solution de dpart pour
appliquer l'algorithme de Ford-Fulkerson.
8
ALGORITHME DE RECHERCHE D'UN FLOT COMPLET :

On part d'un flot f (par exemple, f = 0) et on l'amliore pas
pas par une procdure de marquage:

(I) Marquer e.
(II) Soit i un sommet marqu non encore examin;
marquer j si j est un successeur
non marqu de i avec f
ij
< c
ij
. La marque de j est +i.
(III) Si s est marqu, aller en (IV).
Si tous les sommets marqus sont examins, le flot est
complet FIN.
Sinon aller en (II).
(IV) Amliorer le flot. Effacer les marques (sauf celle
de e) et aller en (I).
9
DFINITION 4:

Une chane amliorante ou augmentant le flot est une
chane dorigine e dextrmit s et telle que pour chaque
arc avant c (arc emprunt dans le sens du parcours) on ait
f(c)<c(c) , et pour chaque arc arrire c (arc emprunt dans
le sens inverse du parcours) on ait f(c) > 0
3-ALGORITHME DE FORD-FULKERSON
Pour construire un flot complet, on a supprim les chemins
amliorants. Il n'est pas optimal car il reste une chane
amliorante. Nous expliquons ci-dessous la notion de
chane amliorante et nous rapportons l'algorithme de Ford-
Fulkerson qui s'arrte quand il n'y a plus de chane amliorante
Le flot est alors optimal.
10
11
CNS pour quun flot soit complet :

Thorme:
Une CNS pour quun flot soit max est quil nexiste aucune
chane amliorant le flot entre e et s

Afin de dterminer les chanes amliorantes on utilise une
exploration en largeur du graphe. On commence par marquer
le sommet e puis on propage les marques de la manire
suivante:
partir dun sommet i marqu, on marque les sommets j
qui sont tels que larc (i; j) est non satur ou larc (j; i) a un
flot non nul.
Il existe une chane amliorante si on peut marquer le
sommet s

12
LALGORITHME DE FORD-FULKERSON
Soit un flot initial f = 0 f
i,j
= 0 (i; j) eU
Faire
chercher une chane amliorante de e s dans G
Si est trouve alors
Calculer o, laugmentation de flot possible sur
Augmenter F et les flots des arcs avant de de o units
Diminuer les flots des arcs arrires de de o units
Fin Si
Jusqu ce quil nexiste plus de chane amliorante

13
14
14
ALGORITHME DE FORD & FULKERSON (1956)
1- Soit un flot initial ralisable (en gnral, on prend le flot nul)
2- Rendre le flot complet (saturer tous les chemins possibles)
(i) marquer le sommet e par (+)
(ii) partir dun sommet x marqu, marquer par (+) tout sommet y tel que:
.
Le chemin trouv augmentera le flot de :
(iii) recommencer (ii) jusqu ce quon ne puisse plus marquer s partir de e.
3- Chanes augmentant le flot
(i) marquer le sommet e par (+)
(ii) partir dun sommet x marqu, marquer par (+) tout sommet y tel que:
On pose: et

La chane trouve augmentera le flot de :

(iii) recommencer (ii) jusqu ce quon ne puisse plus marquer s partir
de e.
f(x,y)<c(x,y)
f(x,y)<c(x,y)
ou f(y,x)>0

( ) ( ) ( )
,
(x,y)
c x,y f x y
min
e
o =
1 2
=min( , ) o o o
( )
1
=min c(x,y)-f(x,y) o ( )
2
=min f(y,x) o
EXEMPLE 1:
15
En trois dpts A, B, C, on dispose respectivement de 20, 35
et 10 tonnes de marchandises. On a des demandes de 25, 20
et 20 tonnes aux destinations D, E et F. Il existe des
possibilits de transport l'aide de camions. Ces
possibilits sont rapportes dans le tableau suivant :
D E F
A 15 10 0
B 15 5 5
C 5 0 10
Dterminer un plan de transport permettant de transporter
des origines aux destinations une quantit maximale.
EXEMPLE 2:
On veut acheminer un produit partir de 3
entrepts (1,2,3) vers 4 clients (a,b,c,d)

Quantits en stock : 45, 25, 25
Demande des clients : 30,10, 20, 30
Limitations en matire de transport dun
entrept un client:
a b c d
1 10 15 - 20
2 20 5 5 -
3 - - 10 10
16
E
1
2
3
a
b
d
c
S
[0,25]
17
E
1
2
3
a
b
d
c
S
[0,25], 25
Valeur du flot = 80
Ce flot est un flot complet, c--d, tout chemin de E S
comporte au moins un arc satur
18
DFINITION : Coupe dun graphe valu
Cest une partition { N ,N} de X , tq : eeN et seN
La capacit dune coupe est :



THORME:
Pour tout les flots f et toutes les coupes C de G on a
v(f) s C(N ,N)

4-FLOT MAX ET COUPE MIN
,
( , )
ij
i N j N
C N N c
e e
=

19
Une coupe min est une coupe de capacit minimale






THORME DE FORD-FULKERSON :
La capacit minimale d'une coupe est gale
au flot maximal.
On suppose quil nexiste pas de chane augmentant le flot
de e s, on construit une coupe C(N
0
,N
0
) o tous les
sommets marqus sont dans (e e N
0
) et tous les sommets
non marqus sont dans N
0
(s eN
0
) et soit f le flot max on a
alors:
v(f) = C(N
0
,N
0
)
20
(N ,N) coupe de G = (X, U, c) :
(N,N) partition de S avec e e N,
s e N

capacit :
C (N,N) = E ( c(x, y) | x e N, y e N )
A
F
E D
C B
6/6 6/8
1/3 3/3
5/6 3/3
8/8 4/6
e
s
N
N

N= {A,B,C,D} N = {E,F} C (N,N) = 14
v(f) = 12
21
COUPE MINIMALE
A
F
E D
C B
6/6 6/8
1/3 3/3
5/6 3/3
8/8 4/6
e
s
N
0

N
0
N
0
= {A,C}
N
0
= {B,D,E,F}
C (N
0
,N
0
) = 12
(N
0
,N
0
) de capacit minimale
flot maximum
f) = 12
22
FLOT CANALIS
Il arrive qu'une borne infrieure b(u) entire du flux sur l'arc u
ne soit pas nulle, auquel cas, le problme de la recherche d'un
flot compatible (on dira canalis) se pose.
On rappelle que c(u) la capacit de l'arc u est une borne
suprieure entire du flux sur l'arc u.

DFINITION
Un flot canalis est une application de U dans N (ensemble
des entiers) satisfaisant les contraintes de Kirchoff et les
contraintes de bornes et de capacits.

On cherche un flot tel que pour tout u, b(u)sf(u) sc(u).
Le thorme d'Hoffman donne une condition d'existence d'un flot
canalis.
23
24
THORME D'HOFFMAN (1960):
Une C.N.S pour qu'il existe un flot canalis dans le rseau
G = (X, U, b, c) est que : pour tout YX , la somme des
bornes des arcs entrants dans Y est infrieure ou gale la
somme des capacits des arcs sortants de Y, c'est--dire :
( ) ( )
( ) ( )
u Y u Y
b u c u
+
eO eO
s

ALGORITHME DE RECHERCHE D'UN FLOT
COMPATIBLE :
25
(I) Partir dun flot initial quelconque f (e.g f 0)
(II) Chercher un arc u=(a,b) tel que f
u
< b
u
- si un tel arc n'existe pas alors FIN 1;
- sinon poser b= extrmit terminale de u et a = extrmit
initiale de u.
(III) Chercher une chane de b a dont les arcs avant sont
insaturs et les arcs arrires ont un flux strictement suprieur
la borne inf; si ce n'est pas possible alors FIN 2.
(IV) Utiliser cette chane pour amliorer le flot en cherchant
satisfaire la contrainte de borne sur l'arc u et retourner en (II).
26
REMARQUE:

Cet algorithme s'arrte:
soit aprs avoir trouv un flot compatible (FIN1),
soit parce que la condition ncessaire du thorme n'est pas
vrifie (FIN2).
EXEMPLE
27
ALGORITHME DE FORD-FULKERSON POUR
LES FLOTS CANALISS

Dans ce cas, lalgo de Ford-Fulkerson reste valable condition de
changer la procdure de marquage des sommets :
A partir de i marqu ,on marque j si
f
i,j
< c
i,j
si (i,j) eU
f
i,j
> b
i,j
si (j,i) eU

28
5-FLOT COT MINIMUM
5.1-Position du problme:

G=(X,U) un graphe connexe o on associe chaque arc u un
intervalle de nbrs positifs [b(u),c(u)] et un cot unitaire de
transport (u)
Le cot total du flot sur G est :
C
T
=E {(u)f(u) /u eU}

Le pb quon se pose est de trouver un flot f vrifiant les contraintes
de capacit b(u) sf(u) sc(u) et / C
T
soit min
29
DFINITION
GRAPHE DCART
Soit f un flot entre e et s/f(u) >0 et f(u)<c(u) .
Le graphe dcart associ f est le graphe :
G
e
(f)=(X, U
e
(f) ) o U
e
(f) est tel que pour tout ueU , on associe
deux arcs de G
e
(f):
u
+
=(i,j) si f(i,j) < c(i,j)
u
-
=(j ,i) si f(i, j) >0
On associe chaque arc de U
e
(f) une capacit dite rsiduelle tq:
c
+
(u)=c(u) - f(u)
c
-
(u)=f(u)
30
5-2 ALGORITHME DE BUSACKER ET GOWEN
On cherche un flot de e s de valeur v fixe et cot min
Les arcs de G sont muni dune borne sup de capacit c(u) et dun
cot de passage dune unit de flot (u) sur larc u
On suppose quil ny est pas de circuit de cot ngatif
Et que v est infrieur la valeur max du flot entre e et s

Lalgorithme suivant permet de dterminer la famille complte des
flots de e s cot min et de valeur v(f)=1,2,v.
En particulier , il permet de dterminer un flot max. cot min
31
1-Initialisat : soit un flot initial f = 0 f(i,j) =0 (i; j)eU
2-A literation k Soit f
k
le flot de valeur v(f
k
)=f
k.
f
k
est un flot cot
min .Soit G
e
(f
k
)le graphe decart associ f
k.
On associe

ses arcs les
capcits residuelles c et les cots tq: (u
+
)=(u) et (u
-
)=-(u)
3-Chercher un chemin de cout min (relativement )entre e et s sur
G
e
(f
k
). Soit
k
ce chemin et c sa capacit, c=min c(u)
Si un tel chemin - , FIN le pb est impossible
Sinon on ajoute sur ce chemin , au flot f
k
ie{1 c} units de
flot,on obtient ainsi 1 suite de flots de valeurs f
k
+1,
,
f
k
+

c et cot
min
Si f
k
+

c > v FIN le pb est rsolu
Sinon :
4- On dfini le flot f
k+1
comme tant le flot cot min et de valeur f
k
+

c dfini en 3 .Faire k=k+1 et retour 2
32