You are on page 1of 39

Problème de flots

dans les réseaux

H. Bouchriha Année universitaire 2007/2008 1
Définitions
Etant donné un graphe orienté G = [X,U]. On
associe à chaque arc u de U, un nombre
entier positif cu appelé la capacité de
l’arc.
Un graphe mené de capacités sur les arcs
est appelé réseau.
Un flot est défini comme étant un vecteur 
= [1, 2,…, m]T  m / 0  u  cu

H. Bouchriha Année universitaire 2007/ 2
Loi de conservation du flot
 Un flot  est dit réalisable s’il vérifie la loi de
conservation du flot exprimée par :


u  
u iX
uw ( i ) uw ( i )

Pour tout nœud i, la somme des flots sur les arcs
incidents extérieurement à i = la somme des flots sur
les arcs incidents intérieurement à i (la somme des
flots entrants = la somme des flots sortants)

H. Bouchriha Année universitaire 2007/ 3
Problème de flot maximal
 Tous les flots possèdent un nœud origine unique
appelé sommet source S du réseau G
 Tous les flots émergent vers un nœud de
destination appelé puits T du réseau G
 Tous les autres nœuds sont des nœuds de
transit.
 Le maximum de flot circulant sur chaque arc est
limité par la capacité de l’arc.
 L’objectif est de déterminer un flot réalisable entre
S et T da valeur maximale
 u   u *
uw  ( s ) uw  (T )

H. Bouchriha Année universitaire 2007/ 4
Remarque
 Pour que les sommets S et T vérifient la
contrainte de conservation du flot, on
rajoute au réseau d’origine un arc
supplémentaire (T,S) de capacité infinie
appelé arc de retour du flot noté u0

H. Bouchriha Année universitaire 2007/ 5
Exemples d’application
 Maximiser le flot pour un réseau de distribution d’une
entreprise entre ses usines et ses clients
 Rajouter un nœud fictif unique pour désigner la source S et un
nœuds fictif unique pour représenter la destination T.
 Maximiser la quantité d’eau à faire circuler à l’intérieur
d’un réseau d’irrigation
 Maximiser la circulation de courant dans un réseau
électrique
 Maximiser la circulation d’information à travers un réseau
de communication
 Maximiser le flot de véhicule à travers un réseau de
transport

H. Bouchriha Année universitaire 2007/ 6
Exemple 1 : Détermination de la
capacité maximale d’un réseau routier
 On considère un réseau routier formé de m
tronçons différents. Chaque tronçon est
caractérisé par un nombre maximal de véhicules
qui peuvent l’emprunter pendant une unité de
temps. Le problème consiste à déterminer le
nombre maximal de véhicules pouvant passer
par unité de temps d’un point donné du réseau
vers un autre point.

H. Bouchriha Année universitaire 2007/ 7
Exemple 2 : Ordonnancement préemptif
de tâches sur machines parallèles
 Un ensemble de n tâches doivent être exécutées
sur m machines identiques. Chaque tâche j est
constituée d’une seule opération de durée pj. Elle
doit débuter au plus tôt à rj et se terminer au plus
tard à dj. Sachant qu’il est possible d’interrompre
l’exécution d’une tâche et de la reprendre plus
tard sur une autre machine (on parle alors de
préemption), le problème consiste à déterminer
un ordonnancement des tâches sur les m
machines respectant les contraintes temporelles.

H. Bouchriha Année universitaire 2007/ 8
Exemple 2 : Ordonnancement préemptif de
tâches sur machines parallèles
r , d 
n

 Soit E =  j 1 Ordonner les éléments de E permet
j j

d’obtenir 2n-1 intervalle de temps [e h, eh+1]. On construit le
réseau en associant
 un sommet à chaque tâche et à chaque intervalle de temps [e h, eh+1]
 deux sommets supplémentaires S et T reliés respectivement à toutes
les tâches et à tous les intervalles de temps.
 un arc à chaque possibilité d’exécution d’une tâche pendant un
intervalle de temps. Ainsi un arc relie une tâche j à un intervalle [e h,
eh+1] si et seulement si il est possible d’exécuter la tâche j pendant cet
intervalle c’est-à-dire rj  eh et eh+1  dj
 La capacité d’un arc (S,j) est pj
 La capacité d’un arc reliant un sommet associé à un intervalle de
temps à T est m(eh+1 – eh)
 La capacité d’un arc reliant une tache à un intervalle de temps est
(eh+1 – eh)
Un ordonnancement réalisable existe ssi le flot maximal entre S et T est
de valeur = pj Année universitaire 2007/
H. Bouchriha 9
Graphe d’écart
 Soit  = [1, 2,…, m]T  m / 0  u  cu
 Le graphe d’écart associé à  est G’() est le graphe
ayant le même 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é résiduelle c u - u > 0 (la
quantité supplémentaire de flot pouvant être acheminée
de i vers j)
 Si u > 0, u- = (j,i) est de capacité résiduelle u > 0 (cet arc
représente la quantité de flot qui peut être annulée de i
vers j)

H. Bouchriha Année universitaire 2007/ 10
Chemin augmentant
 C’est un chemin reliant S à T susceptible
d’augmenter le flot tout en respectant les
contraintes de capacité sur les arcs
 Dans le graphe d’écart, cela correspond à un chemin
de S à T où tous les arcs possèdent une capacité
résiduelle strictement positive.
 Le minimum de ces capacités résiduelle représente la
capacité résiduelle du chemin augmentant car cela
représente la quantité de flot qui peut être rajoutée à tout le
chemin ce qui augmente le flot à travers tous le réseau

H. Bouchriha Année universitaire 2007/ 11
Algorithme de résolution
1. Identifier un chemin augmentant entre S et T ayant
une capacité résiduelle strictement positive sur ses
arcs.
 Si pas de chemin augmentant, le flot déjà affecté constitue
une solution optimale
2. Identifier la capacité résiduelle c* du chemin
augmentant (le minimum des capacités résiduelles des
arcs composant ce chemin). Augmenter le flot total de
c*.
3. Mettre à jour le graphe des écarts en diminuant par c*
la capacité résiduelle de chaque arc du chemin et en
augmentant de c* la capacité résiduelle de chaque arc
dans la direction opposée du chemin. Retourner à
l’étape 1
H. Bouchriha Année universitaire 2007/ 12
Identification du chemin
augmentant ?
Réseau de grande taille  La détermination
d’un chemin augmentant devient un
problème difficile.
 Utiliser un algorithme de marquage des
sommets.
Utiliser le théorème de la coupe minimale

H. Bouchriha Année universitaire 2007/ 13
Marquage d’un sommet
 Pour un sommet j qui reçoit un flot a j à
partir du sommet i, nous définissons une
étiquette [aj, i] avec aj : le flot acheminé du
sommet i vers le sommet j.

H. Bouchriha Année universitaire 2007/ 14
Algorithme de détermination du flot maximum
dans un graphe basé sur le marquage des
sommets
 Etape 1 : Pour chaque arc (i,j) la capacité
résiduelle = la capacité initiale. Marquer le
sommet S (i=S) en fixant aS = . L’étiquette du
sommet S est : [, -]. Aller à l’étape 2.
 Etape 2 : Déterminer Si = l’ensemble des
sommets j non marqués et qui sont reliés
directement au sommet i avec un flot résiduel
positif. Si Si # ø, aller à l’étape 3, sinon aller à
l’étape 4.

H. Bouchriha Année universitaire 2007/ 15
Algorithme de détermination du flot
maximum dans un graphe basé sur le
marquage des sommets
 Etape 3 : Déterminer k  Si / ĉik = max jSi cˆij 
avec ĉij : le flot résiduel de i vers j. ak = ĉik et marquer le
sommet k avec l’étiquette [ak,i].
 Si k = T alors la destination est marquée et un chemin
augmentant est trouvé. Aller à l’étape 5.
 Sinon i=k, aller à l’étape 2.

 Etape 4 :
 Si i = 1 et aucun autre chemin augmentant ne peut être obtenu,
aller à l’étape 6
 Sinon, soit r, le sommet marqué juste avant le sommet i,
 éliminer i des sommets adjacents à r.
 i r
 Aller à l’étape 2

H. Bouchriha Année universitaire 2007/ 16
Algorithme de détermination du flot
maximum dans un graphe basé sur le
marquage des sommets
 Etape 5 : Détermination du graphe des écarts
Soit Np = (S, k1, k2,….,T) définissant 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é résiduelle de chaque arc du chemin
augmentant est déduite de fp dans le sens du flot et
augmenté de fp dans le sens opposé du flot
Réinsérer les sommets ayant été éliminiés à l’étape 4,
effacer les différents marquages.
Poser i=S, retourner à l’étape 2 et chercher un nouveau
chemin augmentant

H. Bouchriha Année universitaire 2007/ 17
Algorithme de détermination du flot
maximum dans un graphe basé sur le
marquage des sommets
 Etape 6 : Détermination de la solution
optimale
 Etant donnée m chemin augmentant obtenu, ainsi le
flot maximum dans le réseau = f1 + f2 + f3 + …+ fp
 Soient les vecteurs des résidus relatif à l’arc (i,j)
obtenu à partir de la solution initiale et finale
respectivement (Ĉij , Ĉji ) et (ĉij, ĉji), le flot maximum qui
circule sur l’arc (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 Année universitaire 2007/ 18
Exemple d’application

20
4
10 5
10 5
30
1 20

20 30 3

2 40

H. Bouchriha Année universitaire 2007/ 19
Définition d’un graphe connexe
 Un graphe est dit connexe si pour tout
couple de nœuds i et j, il existe au moins
une chaîne joignant i et j

B D

A
E
C

Exemple de graphe non connexe
H. Bouchriha Année universitaire 2007/ 20
Définition d’une coupe
 Un Ensemble d’arcs Q  U est une coupe si le
graphe partiel G(Q)=[X,U/Q] n’est pas connexe
et auxun sous-ensemble de Q ne possède cette
propriété.
 Une coupe est un ensemble d’arcs dont l’élimination
de l’ensemble des arcs du graphe rend impossible le
passage de S à T
 Un graphe peut avoir plusieurs coupe
 La valeur d’une coupe est définie comme étant la
somme des capacités de ses arcs

H. Bouchriha Année universitaire 2007/ 21
Théorème de la coupe minimale
 Pour chaque réseau possédant 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
réseau

H. Bouchriha Année universitaire 2007/ 22
Conséquences
 La valeur de tout flot réalisable est inférieur à la valeur
d’une coupe quelconque
 La valeur d’une coupe constitue une borne supérieur du flot
maximum entre S et T

 Si on trouve une coupe qui correspond à un flot F obtenu
à partir d’un chemin augmentant quelconque, ce flot
constitue la solution optimale. On arrête l’algorithme et
on ne continue pas à chercher d’autres chemins
augmentants.

H. Bouchriha Année universitaire 2007/ 23
Exemple
A 3
1
D 9
5
7 4
S T
B
4 5 1
2 6

C E

H. Bouchriha Année 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 donnée par les arcs (1,2) ; (1,3) et (1,4) est de capacité 60
La coupe donnée par les arcs (1,4) ; (1,3) ; (2,3) et (2,5) est de
capacité = 110
 La coupe donnée par les arcs (2,5) ; (3,5) et (4,5) est de capacité est
de capacité 70
La flow maximum dans le réseau  60
H. Bouchriha Année universitaire 2007/ 25
Problème du flot à coût minimum
 On considère un graphe G = [X,U] connexe dont les arcs
sont munis de deux nombres entiers positifs b u et cu
représentant respectivement les bornes inférieures et
supérieures du flot sur l’arc u.
 L’arc u  U est muni d’un coût de passage d’une unité de
flot sur l’arc : u
 Si un flot u traverse l’arc u, le coût associé est u u
 Le problème de flot à coût minimum consiste à
 Acheminer un flot de débit total v fixé avec un coût minimal. Si v > à
la valeur du flot maximum, le problème ne possède pas de solution.
 Chercher parmi les flots maximaux, un flot  = [u] compatible (qui
respecte les contraintes de capacité) et de coût total minimal
    u u
uU

H. Bouchriha Année universitaire 2007/ 26
Exemple d’application
 On cherche à affecter des personnes à n
tâches. On considère cij le coût
d’affectation d’une personne i à la tache j.
 Déterminer l’affectation des personnes aux
tâches de façon à minimiser le coût total
d’affectation.

H. Bouchriha Année universitaire 2007/ 27
Exemple (suite)
 On considère le graphe biparti considéré par l’ensemble
des personnes X1 et l’ensemble des tâches X2
 Pour tout i de X1 et j de X2, l’arc (i,j) est de capacité 1 et de coût
unitaire ij
 On rajoute deux sommets supplémentaires S et T
 S est relié à tout i  X1. Chaque arc a un coût nul et une capacité
= 1.
 Tout j  X2 est relié à T. Chaque arc a un coût nul et une capacité
= 1.
 Tout flot entre S et T de valeur = n est une affectation
réalisable. Le coût de ce flot correspond au coût de
l’affectation.
 Déterminer l’affectation qui permet d’avoir le coût total le plus bas

H. Bouchriha Année universitaire 2007/ 28
Graphe d’écart
 Soit  = [1, 2,…, m]T  m / bu  u  cu
 Le graphe d’écart associé à  est G’() est le
graphe ayant le même 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 l’arc u+ = (i,j), on a un coût ’u = u et une capacité
résiduelle c’u = cu - u > 0
 Sur l’arc u- = (j,i), on a un coût ’u = -u et une capacité
résiduelle c’u = u - bu > 0

H. Bouchriha Année universitaire 2007/ 29
Théorème
 Une condition nécessaire et suffisante pour qu’un flot
compatible avec la contrainte bu  u  cu soit à coût
minimal, est qu’il n’existe pas de circuit de coût négatif
relativement aux coûts modifiés ’ dans le graphe d’écart
G’()

 Si à partir d’un flot , on trouve dans le graphe d’écart
correspondant un circuit à coût négatif on peut augmenter le flot
dans ce circuit d’une valeur égale à la capacité résiduelle
minimale. Ainsi le coût total de tout le réseau sera diminué du coût
de ce circuit et la valeur totale du flot reste inchangée.
 Principe de l’Algorithme de Klein

H. Bouchriha Année universitaire 2007/ 30
Algorithme de Busacker et Growen
 Etape 0 : Prendre pour flot initial 0 un flot nul. Le graphe d’écart est
ainsi identique au graphe G. v(0 ) = 0. Poser i=0

 Etape 1 : Déterminer, en utilisant un algorithme approprié, un
chemin de coût minimal entre S et T, dans le graphe d’écart G’i
 Si un tel chemin n’existe pas alors Fin : Le flot obtenu est le flot
cherché.
 Sinon, aller à l’étape 2

 Etape 2 : Au chemin trouvé correspond une chaîne améliorante
dans G. Améliorer le flot dans G de la quantité maximale i permise
par cette chaîne. D’où un nouveau flot i+1/ v(i+1 ) = v(i ) + i

 Etape 3 : Tracer le graphe d’écart G’i+1 associé à ce nouveau flot
Poser i=i+1 et aller à l’étape 1

H. Bouchriha Année universitaire 2007/ 31
Exemple
Un fleuriste désire transporter des fleurs depuis sa ferme
vers Tunis. Pour cela, il dispose de camionnettes de
différentes capacités. Le réseau routier est donnée par la
figure suivante où chaque arc est muni d’une capacité
(en cartons/semaine) et d’un coût unitaire de transport
(DT/carton)
On désire envoyer le maximum de fleurs à tunis par
semaine avec un coût minimal.
(200,16)
1 T
(400,2) (200,9)

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

H. Bouchriha Année universitaire 2007/ 32
Exemple (suite)
 Etape 0 : Soit 0 un flot nul. Le graphe d’écart
est ainsi identique au graphe G. Poser i=0
 Etape 1 : On applique l’algorithme de Ford-
Bellman pour trouver un chemin minimal de F à
T dans le graphe d’écart G’0. On trouve que le
chemin optimal est F2 1 3 T et de coût
unitaire 11DT/carton
 Etape 2 : On peut améliorer le flot dans G de la
quantité maximale permise par cette chaine
c’est-à-dire 200. D’où v(1) = 200.

H. Bouchriha Année universitaire 2007/ 33
Exemple (suite)
 Etape 3 : Le graphe d’écart G’1 associée à
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 Année universitaire 2007/ 34
Exemple (suite)
 Etape 1 : On applique l’algorithme de Ford-
Bellman pour trouver un chemin minimal de F à
T dans le graphe d’écart G’1. On trouve que le
chemin optimal est F1 2 3 T et de coût
unitaire 13 DT/carton
 Etape 2 : On peut améliorer le flot dans G de la
quantité maximale permise par cette chaine
c’est-à-dire 100. D’où v(2) = 300.

H. Bouchriha Année universitaire 2007/ 35
Exemple (suite)
 Etape 3 : Le graphe d’écart G’2 associée à
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 Année universitaire 2007/ 36
Exemple (suite)
 Etape 1 : On applique l’algorithme de
Ford-Bellman pour trouver un chemin
minimal de F à T dans le graphe d’écart
G’2. On trouve que le chemin optimal est
F1 T et de coût unitaire 18 DT/carton
 Etape 2 : On peut améliorer le flot dans G
de la quantité maximale permise par cette
chaine c’est-à-dire 200. D’où v(3) = 500.

H. Bouchriha Année universitaire 2007/ 37
Exemple (suite)
 Etape 3 : Le graphe d’écart G’3 associée à 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 n’y a aucun chemin possible dans le graphe
permettant d’améliorer le flot. STOP
H. Bouchriha Année 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 coût total = 7100 DT

H. Bouchriha Année universitaire 2007/ 39