Vous êtes sur la page 1sur 14

Problème du flot maximum

1
Introduction

 Le problème du flot dans les réseaux concerne la circulation


de matière sur les arcs d’un graphe. Parmi les nombreuses
applications qui relèvent de ce problème, on trouve les
réseaux de transport de marchandises (urbain, ferroviaires,
ou aériennes) dans différents points distributeurs à
différents points consommateurs.

2
Réseau de transport

 Un réseau de transport est un graphe sans boucle, où chaque


arc est valué par un nombre positif c(u) appelé capacité de l’arc
u. Ce réseau comporte un sommet sans prédécesseurs appelé
« l’entrée du réseau» ou « la source » et un autre sans
successeurs appelé « la sortie du réseau » ou « le puits ». On
note un réseau par R = (X, U, C)

3
Exemple :

4
Flot
 Un flot « f» dans un réseau de transport, associe à chaque arc
u une quantité f(u) qui représente la quantité de flux qui
passe par cet arc en provenance de la source vers le puits.

 Remarque : Un flot est conservatif, s’il obéit à la règle de


Kirchoff aux sommets suivante :
La somme des quantités de flux sur les arcs entrant dans un
sommet doit être égale à la somme des quantités de flux sue
les arcs sortant de ce même sommet.

5
Un flot compatible

 Un flot est compatible dans un réseau si pour tout arc u =(x,


y), 0 ≤ f(u) ≤ c(u) autrement dit pour chaque arc u, le flux
qui le traverse ne dépasse pas sa capacité. On retiendra dans
ce qui suit la représentation suivante :

6
Exemple :

 Soit le réseau de transport suivant : ce flot est compatible

7
Flot complet

 Un flot est complet si pour tout chemin allant de la source au


puits il y’a au moins un arc saturé, c.à.d : le flux qui le
traverse est égal à sa capacité (f(u) = C(u))

8
Le problème de la recherche du flot maximum

 Le problème du flot maximum consiste à trouver la quantité


maximum de flot à acheminer de la source s vers le puits p,
en tenant compte des capacités de transport et de la quantité
disponible en s.

9
Graphe d’écart ou réseau résiduel

Soit un réseau de transport G = (X, U, C) possédant un flot complet f


On appelle graphe d’écart ou réseau résiduel, le réseau G’(f) = (X, U’, C’) tel que :

 Si u  U et f(u) < C(u) alors u  U’ et C(u) = C(u) - f(u)


 Si u  U et f(u) = C(u) alors u  U’
 Si u = (x, y) U et f(u) > 0 alors u-1 = (y, x) U’ et C’(u-1) = f(u)

Le réseau résiduel indique le long de quels arcs on peut augmenter ou diminuer


le flot. L’intérêt du graphe d’écart apparait sans le théorème suivant :

Théorème :
Soit f un flot de G(de S à p) et G’(f)le réseau résiduel associé à f. Une condition
nécessaire et suffisante pour que le flot f soit maximal est qu’il n’existe pas de
chemin allant de s à p dans G’(f)

10
Algorithme de Ford et Fulkerson pour la
recherche d’un flot maximum
 A l’itération k, soit fk le flot courant
 Rechercher un chemin Uk de s à p dans le graphe d’écart G’(fk) s’il n’en
existe pas. FIN : le flot fk est maximal
 Soit k la capacité résiduelle du chemin Uk (minimum des capacités
résiduelles) définir le flot fk+1 par :

fk+1 (u)= fk (u)+ k Si u  Uk et si u est orienté dans le sens de Uk.

fk+1 (u) = fk(u) -k Si u  Uk et si u est orienté dans le sens contraire


de Uk.

Faire k  k+1
Fin

11
Algorithme de Ford et Fulkerson (Autre version)

 L’idée générale est de faire passer un flot compatible dans le réseau, le plus évident est le
flot nul, puis de l’améliorer jusqu’à ce qu’on obtienne un flot maximal

 Une chaine pour laquelle le flot peut être augmenté est une chaine dont tous les arcs dans le
sens direct n’ont pas atteint leur limite et les arcs dans le sens indirect ont un flux non nul
qui les traverse

Autrement dit : une chaine est dite augmentante si :


Pour tout arc u direct de C, c.à.d u  C+ : f(u) < c(u)
Pour tout arc u indirect de C, c.à.d u  C- : f(u) >0

 Le flot de cette chaine C peut être augmenté de la valeur suivante :


 = minimum entre {C(u) – f(u) / u  C+} et { f(u) / u  C-}

 Pour améliorer le flot, on ajoute  au flot des arcs de C+, c.à.d les arcs directs dans la
chaine, et on retranche au flot des arcs de C-, c.à.d les arcs indiercts dans la chaine

12
Algorithme
Enoncé : Données : un graphe valué G= (X, U, C)
Résultat : un flot f maximum

(1) Initialisation
Marquer un sommet S et poser C+ =  ; C- =  ; fk = 0 ; A = {S} ; k = 0

(2) Soit A l’ensemble des sommets marqués et soit X un sommet de A


 Marquer le sommet y successeur de X tel que f(x, y) < C(x, y)
On pose C+ = C+  {(x, y)} ; A = A  {y}
 Marquer le sommet y prédécesseur de X tel que f(y, x) > 0
On pose C- = C-  {(y, x)} ; A = A  {y}

Quand on ne peut plus marquer, deux cas se présentent


1. P est marqué aller en (2)
2. P n’est pas marqué, terminé le flot est maximum

13
Algorithme
(2) On a obtenu une chaine augmentante C = C+  C- de s à p
Pour améliorer le flot on calcule
1 = min [C(u) – f(u) ; u  C+]
2 = min [f(u) ; u  C-]
D’où  = min {1, 2}

On définit le nouveau flot


fk(u) +  pour u  C+
fk+1 (u) = fk(u) -  pour u  C-
fk(u) pour u  C

Effacer toutes les marques sauf en s et aller en (1).

14

Vous aimerez peut-être aussi