Vous êtes sur la page 1sur 39

Problme de flots

dans les rseaux

H. Bouchriha Anne universitaire 2007/2008 1


Dfinitions
Etant donn un graphe orient G = [X,U]. On
associe chaque arc u de U, un nombre
entier positif cu appel la capacit de
larc.
Un graphe men de capacits sur les arcs
est appel rseau.
Un flot est dfini comme tant un vecteur
= [1, 2,, m]T m / 0 u cu

H. Bouchriha Anne universitaire 2007/ 2


Loi de conservation du flot
Un flot est dit ralisable sil vrifie la loi de
conservation du flot exprime par :


u
u iX
uw ( i ) uw ( i )

Pour tout nud i, la somme des flots sur les arcs


incidents extrieurement i = la somme des flots sur
les arcs incidents intrieurement i (la somme des
flots entrants = la somme des flots sortants)

H. Bouchriha Anne universitaire 2007/ 3


Problme de flot maximal
Tous les flots possdent un nud origine unique
appel sommet source S du rseau G
Tous les flots mergent vers un nud de
destination appel puits T du rseau G
Tous les autres nuds sont des nuds de
transit.
Le maximum de flot circulant sur chaque arc est
limit par la capacit de larc.
Lobjectif est de dterminer un flot ralisable entre
S et T da valeur maximale
u u *
uw ( s ) uw (T )

H. Bouchriha Anne universitaire 2007/ 4


Remarque
Pour que les sommets S et T vrifient la
contrainte de conservation du flot, on
rajoute au rseau dorigine un arc
supplmentaire (T,S) de capacit infinie
appel arc de retour du flot not u0

H. Bouchriha Anne universitaire 2007/ 5


Exemples dapplication
Maximiser le flot pour un rseau de distribution dune
entreprise entre ses usines et ses clients
Rajouter un nud fictif unique pour dsigner la source S et un
nuds fictif unique pour reprsenter la destination T.
Maximiser la quantit deau faire circuler lintrieur
dun rseau dirrigation
Maximiser la circulation de courant dans un rseau
lectrique
Maximiser la circulation dinformation travers un rseau
de communication
Maximiser le flot de vhicule travers un rseau de
transport

H. Bouchriha Anne universitaire 2007/ 6


Exemple 1 : Dtermination de la
capacit maximale dun rseau routier
On considre un rseau routier form de m
tronons diffrents. Chaque tronon est
caractris par un nombre maximal de vhicules
qui peuvent lemprunter pendant une unit de
temps. Le problme consiste dterminer le
nombre maximal de vhicules pouvant passer
par unit de temps dun point donn du rseau
vers un autre point.

H. Bouchriha Anne universitaire 2007/ 7


Exemple 2 : Ordonnancement premptif
de tches sur machines parallles
Un ensemble de n tches doivent tre excutes
sur m machines identiques. Chaque tche j est
constitue dune seule opration de dure pj. Elle
doit dbuter au plus tt rj et se terminer au plus
tard dj. Sachant quil est possible dinterrompre
lexcution dune tche et de la reprendre plus
tard sur une autre machine (on parle alors de
premption), le problme consiste dterminer
un ordonnancement des tches sur les m
machines respectant les contraintes temporelles.

H. Bouchriha Anne universitaire 2007/ 8


Exemple 2 : Ordonnancement premptif de
tches sur machines parallles
r , d
n

Soit E = j 1 Ordonner les lments de E permet


j j

dobtenir 2n-1 intervalle de temps [e h, eh+1]. On construit le


rseau en associant
un sommet chaque tche et chaque intervalle de temps [e h, eh+1]
deux sommets supplmentaires S et T relis respectivement toutes
les tches et tous les intervalles de temps.
un arc chaque possibilit dexcution dune tche pendant un
intervalle de temps. Ainsi un arc relie une tche j un intervalle [e h,
eh+1] si et seulement si il est possible dexcuter la tche j pendant cet
intervalle cest--dire rj eh et eh+1 dj
La capacit dun arc (S,j) est pj
La capacit dun arc reliant un sommet associ un intervalle de
temps T est m(eh+1 eh)
La capacit dun arc reliant une tache un intervalle de temps est
(eh+1 eh)
Un ordonnancement ralisable existe ssi le flot maximal entre S et T est
de valeur = pj Anne universitaire 2007/
H. Bouchriha 9
Graphe dcart
Soit = [1, 2,, m]T m / 0 u cu
Le graphe dcart associ est G() est le graphe
ayant le mme ensemble de sommet et les arcs
sont tels que on associe chaque arc u= (i,j) de G,
au plus deux arcs dans G /
Si u < cu, u+ = (i,j) est de capacit rsiduelle c u - u > 0 (la
quantit supplmentaire de flot pouvant tre achemine
de i vers j)
Si u > 0, u- = (j,i) est de capacit rsiduelle u > 0 (cet arc
reprsente la quantit de flot qui peut tre annule de i
vers j)

H. Bouchriha Anne universitaire 2007/ 10


Chemin augmentant
Cest un chemin reliant S T susceptible
daugmenter le flot tout en respectant les
contraintes de capacit sur les arcs
Dans le graphe dcart, cela correspond un chemin
de S T o tous les arcs possdent une capacit
rsiduelle strictement positive.
Le minimum de ces capacits rsiduelle reprsente la
capacit rsiduelle du chemin augmentant car cela
reprsente la quantit de flot qui peut tre rajoute tout le
chemin ce qui augmente le flot travers tous le rseau

H. Bouchriha Anne universitaire 2007/ 11


Algorithme de rsolution
1. Identifier un chemin augmentant entre S et T ayant
une capacit rsiduelle strictement positive sur ses
arcs.
Si pas de chemin augmentant, le flot dj affect constitue
une solution optimale
2. Identifier la capacit rsiduelle c* du chemin
augmentant (le minimum des capacits rsiduelles des
arcs composant ce chemin). Augmenter le flot total de
c*.
3. Mettre jour le graphe des carts en diminuant par c*
la capacit rsiduelle de chaque arc du chemin et en
augmentant de c* la capacit rsiduelle de chaque arc
dans la direction oppose du chemin. Retourner
ltape 1
H. Bouchriha Anne universitaire 2007/ 12
Identification du chemin
augmentant ?
Rseau de grande taille La dtermination
dun chemin augmentant devient un
problme difficile.
Utiliser un algorithme de marquage des
sommets.
Utiliser le thorme de la coupe minimale

H. Bouchriha Anne universitaire 2007/ 13


Marquage dun sommet
Pour un sommet j qui reoit un flot a j
partir du sommet i, nous dfinissons une
tiquette [aj, i] avec aj : le flot achemin du
sommet i vers le sommet j.

H. Bouchriha Anne universitaire 2007/ 14


Algorithme de dtermination du flot maximum
dans un graphe bas sur le marquage des
sommets
Etape 1 : Pour chaque arc (i,j) la capacit
rsiduelle = la capacit initiale. Marquer le
sommet S (i=S) en fixant aS = . Ltiquette du
sommet S est : [, -]. Aller ltape 2.
Etape 2 : Dterminer Si = lensemble des
sommets j non marqus et qui sont relis
directement au sommet i avec un flot rsiduel
positif. Si Si # , aller ltape 3, sinon aller
ltape 4.

H. Bouchriha Anne universitaire 2007/ 15


Algorithme de dtermination du flot
maximum dans un graphe bas sur le
marquage des sommets
Etape 3 : Dterminer k Si / ik = max jSi cij
avec ij : le flot rsiduel de i vers j. ak = ik et marquer le
sommet k avec ltiquette [ak,i].
Si k = T alors la destination est marque et un chemin
augmentant est trouv. Aller ltape 5.
Sinon i=k, aller ltape 2.

Etape 4 :
Si i = 1 et aucun autre chemin augmentant ne peut tre obtenu,
aller ltape 6
Sinon, soit r, le sommet marqu juste avant le sommet i,
liminer i des sommets adjacents r.
i r
Aller ltape 2

H. Bouchriha Anne universitaire 2007/ 16


Algorithme de dtermination du flot
maximum dans un graphe bas sur le
marquage des sommets
Etape 5 : Dtermination du graphe des carts
Soit Np = (S, k1, k2,.,T) dfinissant les sommets du
chemin augmentant de S T. Le flot maximum pouvant
tre achemin sur ce chemin est fp=min {aS,ak1,ak2,,aT}
La capacit rsiduelle de chaque arc du chemin
augmentant est dduite de fp dans le sens du flot et
augment de fp dans le sens oppos du flot
Rinsrer les sommets ayant t liminis ltape 4,
effacer les diffrents marquages.
Poser i=S, retourner ltape 2 et chercher un nouveau
chemin augmentant

H. Bouchriha Anne universitaire 2007/ 17


Algorithme de dtermination du flot
maximum dans un graphe bas sur le
marquage des sommets
Etape 6 : Dtermination de la solution
optimale
Etant donne m chemin augmentant obtenu, ainsi le
flot maximum dans le rseau = f1 + f2 + f3 + + fp
Soient les vecteurs des rsidus relatif larc (i,j)
obtenu partir de la solution initiale et finale
respectivement (ij , ji ) et (ij, ji), le flot maximum qui
circule sur larc (i,j) est calcul comme suit :
(,) = (ij ij , ji - ji)
Si >0, le flot maximum de i vers j est
Sinon, si >0, le flot maximum de j vers i est

H. Bouchriha Anne universitaire 2007/ 18


Exemple dapplication

20
4
10 5
10 5
30
1 20

20 30 3

2 40

H. Bouchriha Anne universitaire 2007/ 19


Dfinition dun graphe connexe
Un graphe est dit connexe si pour tout
couple de nuds i et j, il existe au moins
une chane joignant i et j

B D

A
E
C

Exemple de graphe non connexe


H. Bouchriha Anne universitaire 2007/ 20
Dfinition dune coupe
Un Ensemble darcs Q U est une coupe si le
graphe partiel G(Q)=[X,U/Q] nest pas connexe
et auxun sous-ensemble de Q ne possde cette
proprit.
Une coupe est un ensemble darcs dont llimination
de lensemble des arcs du graphe rend impossible le
passage de S T
Un graphe peut avoir plusieurs coupe
La valeur dune coupe est dfinie comme tant la
somme des capacits de ses arcs

H. Bouchriha Anne universitaire 2007/ 21


Thorme de la coupe minimale
Pour chaque rseau possdant une
source unique et une destination unique,
le flot maximum de la source la
destination est gale la valeur minimale
de la coupe pour toutes les coupes du
rseau

H. Bouchriha Anne universitaire 2007/ 22


Consquences
La valeur de tout flot ralisable est infrieur la valeur
dune coupe quelconque
La valeur dune coupe constitue une borne suprieur du flot
maximum entre S et T

Si on trouve une coupe qui correspond un flot F obtenu


partir dun chemin augmentant quelconque, ce flot
constitue la solution optimale. On arrte lalgorithme et
on ne continue pas chercher dautres chemins
augmentants.

H. Bouchriha Anne universitaire 2007/ 23


Exemple
A 3
1
D 9
5
7 4
S T
B
4 5 1
2 6

C E

H. Bouchriha Anne universitaire 2007/ 24


Exemple
20
4 0
0
5
0 5
10
30 0
1 10
0
20 3 20
30
0
2 40

La coupe donne par les arcs (1,2) ; (1,3) et (1,4) est de capacit 60
La coupe donne par les arcs (1,4) ; (1,3) ; (2,3) et (2,5) est de
capacit = 110
La coupe donne par les arcs (2,5) ; (3,5) et (4,5) est de capacit est
de capacit 70
La flow maximum dans le rseau 60
H. Bouchriha Anne universitaire 2007/ 25
Problme du flot cot minimum
On considre un graphe G = [X,U] connexe dont les arcs
sont munis de deux nombres entiers positifs b u et cu
reprsentant respectivement les bornes infrieures et
suprieures du flot sur larc u.
Larc u U est muni dun cot de passage dune unit de
flot sur larc : u
Si un flot u traverse larc u, le cot associ est u u
Le problme de flot cot minimum consiste
Acheminer un flot de dbit total v fix avec un cot minimal. Si v >
la valeur du flot maximum, le problme ne possde pas de solution.
Chercher parmi les flots maximaux, un flot = [u] compatible (qui
respecte les contraintes de capacit) et de cot total minimal
u u
uU

H. Bouchriha Anne universitaire 2007/ 26


Exemple dapplication
On cherche affecter des personnes n
tches. On considre cij le cot
daffectation dune personne i la tache j.
Dterminer laffectation des personnes aux
tches de faon minimiser le cot total
daffectation.

H. Bouchriha Anne universitaire 2007/ 27


Exemple (suite)
On considre le graphe biparti considr par lensemble
des personnes X1 et lensemble des tches X2
Pour tout i de X1 et j de X2, larc (i,j) est de capacit 1 et de cot
unitaire ij
On rajoute deux sommets supplmentaires S et T
S est reli tout i X1. Chaque arc a un cot nul et une capacit
= 1.
Tout j X2 est reli T. Chaque arc a un cot nul et une capacit
= 1.
Tout flot entre S et T de valeur = n est une affectation
ralisable. Le cot de ce flot correspond au cot de
laffectation.
Dterminer laffectation qui permet davoir le cot total le plus bas

H. Bouchriha Anne universitaire 2007/ 28


Graphe dcart
Soit = [1, 2,, m]T m / bu u cu
Le graphe dcart associ est G() est le
graphe ayant le mme ensemble de sommet et
les arcs sont tels que on associe chaque arc
u= (i,j) de G, au plus deux arcs dans G() /
Sur larc u+ = (i,j), on a un cot u = u et une capacit
rsiduelle cu = cu - u > 0
Sur larc u- = (j,i), on a un cot u = -u et une capacit
rsiduelle cu = u - bu > 0

H. Bouchriha Anne universitaire 2007/ 29


Thorme
Une condition ncessaire et suffisante pour quun flot
compatible avec la contrainte bu u cu soit cot
minimal, est quil nexiste pas de circuit de cot ngatif
relativement aux cots modifis dans le graphe dcart
G()

Si partir dun flot , on trouve dans le graphe dcart


correspondant un circuit cot ngatif on peut augmenter le flot
dans ce circuit dune valeur gale la capacit rsiduelle
minimale. Ainsi le cot total de tout le rseau sera diminu du cot
de ce circuit et la valeur totale du flot reste inchange.
Principe de lAlgorithme de Klein

H. Bouchriha Anne universitaire 2007/ 30


Algorithme de Busacker et Growen
Etape 0 : Prendre pour flot initial 0 un flot nul. Le graphe dcart est
ainsi identique au graphe G. v(0 ) = 0. Poser i=0

Etape 1 : Dterminer, en utilisant un algorithme appropri, un


chemin de cot minimal entre S et T, dans le graphe dcart Gi
Si un tel chemin nexiste pas alors Fin : Le flot obtenu est le flot
cherch.
Sinon, aller ltape 2

Etape 2 : Au chemin trouv correspond une chane amliorante


dans G. Amliorer le flot dans G de la quantit maximale i permise
par cette chane. Do un nouveau flot i+1/ v(i+1 ) = v(i ) + i

Etape 3 : Tracer le graphe dcart Gi+1 associ ce nouveau flot


Poser i=i+1 et aller ltape 1

H. Bouchriha Anne universitaire 2007/ 31


Exemple
Un fleuriste dsire transporter des fleurs depuis sa ferme
vers Tunis. Pour cela, il dispose de camionnettes de
diffrentes capacits. Le rseau routier est donne par la
figure suivante o chaque arc est muni dune capacit
(en cartons/semaine) et dun cot unitaire de transport
(DT/carton)
On dsire envoyer le maximum de fleurs tunis par
semaine avec un cot minimal.
(200,16)
1 T
(400,2) (200,9)

(200,2) 3 (300,0)
F
(200,0) 2 (200,13)

H. Bouchriha Anne universitaire 2007/ 32


Exemple (suite)
Etape 0 : Soit 0 un flot nul. Le graphe dcart
est ainsi identique au graphe G. Poser i=0
Etape 1 : On applique lalgorithme de Ford-
Bellman pour trouver un chemin minimal de F
T dans le graphe dcart G0. On trouve que le
chemin optimal est F2 1 3 T et de cot
unitaire 11DT/carton
Etape 2 : On peut amliorer le flot dans G de la
quantit maximale permise par cette chaine
cest--dire 200. Do v(1) = 200.

H. Bouchriha Anne universitaire 2007/ 33


Exemple (suite)
Etape 3 : Le graphe dcart G1 associe
ce flot est :
(200,16)
1 T
(200,-9) (200,0)
(400,2)

(200,-2) 3 (100,0)
F

2 (200,13)
(200,0)

H. Bouchriha Anne universitaire 2007/ 34


Exemple (suite)
Etape 1 : On applique lalgorithme de Ford-
Bellman pour trouver un chemin minimal de F
T dans le graphe dcart G1. On trouve que le
chemin optimal est F1 2 3 T et de cot
unitaire 13 DT/carton
Etape 2 : On peut amliorer le flot dans G de la
quantit maximale permise par cette chaine
cest--dire 100. Do v(2) = 300.

H. Bouchriha Anne universitaire 2007/ 35


Exemple (suite)
Etape 3 : Le graphe dcart G2 associe
ce flot est :
(200,16)
1 T
(200,-9) (300,0)
(300,2)
(100,-2) (100,-2) 3
F (100,2) (100,-13)

2 (100,13)
(200,0)

H. Bouchriha Anne universitaire 2007/ 36


Exemple (suite)
Etape 1 : On applique lalgorithme de
Ford-Bellman pour trouver un chemin
minimal de F T dans le graphe dcart
G2. On trouve que le chemin optimal est
F1 T et de cot unitaire 18 DT/carton
Etape 2 : On peut amliorer le flot dans G
de la quantit maximale permise par cette
chaine cest--dire 200. Do v(3) = 500.

H. Bouchriha Anne universitaire 2007/ 37


Exemple (suite)
Etape 3 : Le graphe dcart G3 associe ce flot
est :
(200,16)
1 T
(200,-9) (300,0)
(100,2)
(300,-2) (100,-2) 3
F (100,2) (100,-13)

2 (100,13)
(200,0)

Il ny a aucun chemin possible dans le graphe


permettant damliorer le flot. STOP
H. Bouchriha Anne universitaire 2007/ 38
Exemple (suite)
La solution optimale est /
F,1 = 300, F,2 = 200, 2,1 = 100, 2,3 = 100,
1,3 = 200, 1,T = 200, 3,T = 300

Le flot total par semaine est 500 cartons


correspondant un cot total = 7100 DT

H. Bouchriha Anne universitaire 2007/ 39