Vous êtes sur la page 1sur 12

Université Abdelmalek Essâadi Master MBD-SIR ~ A.

GHADI
Faculté des Sciences et Techniques –Tanger S1 2021-2022
Département Génie Informatique Théories des graphes & Applications

Chapitre 5 :
Réseaux de transports-Recherche du flot max

5.1 Problématique
Supposons que en trois dépôts 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
possibilités de transport à l'aide de camions. Ces possibilités sont rapportées dans le tableau
suivant :
D E F
A 15 10 0
B 15 5 5
C 5 0 10
Problème : Déterminer un plan de transport permettant de transporter des origines aux destinations
une quantité maximale.
Nous pouvons modéliser ce problème sous le graphe suivant :

5.2 Réseau de transport


Définition
On appelle réseau de transport un graphe orienté valué G=(V , E , C) , sans boucle et dans
lequel il existe :
• un sommet s sans prédécesseur nommé entré ou source du réseau ( Es− =∅ ),
• un sommet p sans successeur nommé sortie ou puits du réseau ( E p+ =∅ )
• au moins un chemin reliant s à p dans G .
• Chaque étiquette d’un arc est appelée capacité. c (i , j) ou c ij est la capacité de l’arc
(i , j) .
Définition
Soit G=(V , E , C) un réseau de transport. Un flot f dans G est une application f : E→ℝ .

Un flot f est réalisable dans G si


1) contrainte de capacité : 0 ≤ f ij ≤ c ij ∀ (i, j)∈E ( on parle de flot compatible)
2) contraintes de conservation de flot (loi de Kirchhoff)
∑ f (i , j)= ∑ f (k , i) ∀ i∈V ∖ {s , p } (quantité entrante à i = quantité sortante de i )
+ −
j∣ j∈ Ei k∣ j ∈Ei

avec +
Ei est l’ensemble des voisins sortants du sommet i
avec Ei − est l’ensemble des voisins entrants du sommet i

La quantité v (F )= ∑ f (s , j)= ∑ f ( p , j) est la valeur du flot de s à


+ −
j ∈E s j ∈E p
p .

Définition
Pour un flot f su un réseau de transport G=(V , E , C)
On dit qu’un arc (i , j) est saturé si on a f (i, j)=c (i , j) .
On dit qu’un arc (i , j) est insaturé si on a f (i, j )=0 .
Le flot est dit complet si tout chemin allant de s à p contient au moins un arc saturé.

Définition
Une coupe d’un réseau de transport G=(V , E , C) est une partition noté ( X , X̄ ) telle que :
• V = X∪ X̄
• X ∩ X̄=∅
• s ∈X et p∈ X̄
La capacité de la coupe (X , X̄ ) est définie par c ( X , X̄ )=∑i∈ X , j∈ X̄ c (i , j)

Exemple de coupe

X ={S , B , C , F }

X̄ ={ A , D , E , P }

on a bien

X∪ X̄={S , A , B ,C , D , E , F , P }=V
X ∩ X̄=∅
s ∈ X et p∈ X̄

c ( X , X̄ )=c ( S , A)+c (B , D)+c ( B , E)+c (C , D)+c ( F , P)=20+15+ 5+5+20=65


Définition
Un arc (i , j) est dit direct si i∈ X et j∈ X̄ .
Un arc (i , j) est dit indirect si i∈ X̄ et j∈ X .
Une coupe ( X , X̄ ) est dite minimale pour un flot F si tout arc direct est saturé et tout arc indirect
est insaturé.

Exemple
Notation : 35/20 → 35 est la capacité
et 20 est le flux.

Cette coupe n’est pas minimal car par


exemple les arcs direct (F,P) et (B,D)
ne sont pas saturés puisque le flux n’est
pas égale à la capacité sur ces arcs.

Remarque sur cette coupe, on a pas


d’arc indirecte.

Cette coupe est minimale car tout les


arcs directs sont saturés.
Cette coupe est minimale car tout les
arcs directs sont saturés et le seul arc
indirect (D,C) est insaturé.

Théorème de Ford-Fulkerson
Soit G=(V , E , C) réseau de transport, Pour tout flot réalisable F et toute coupe ( X , X̄ ) , on
a v (F )⩽c (X , X̄ ) ou v(F) est la valeur du flot F.

Proposition
S’il existe une coupe minimale pour un flot F, alors ce flot est maximal.

Définition
Soit G=(V , E , C) réseau de transport. Une chaîne C=(s , i₁ ,i ₂ ,... i l ,i k +1 .. , p) est dite chaîne
améliorante (ou augmentante) pour un flot réalisable f donné si :
f (i k , i k+1 )<c (i k ,i k +1) si l’arc (i k ,i k+ 1) est direct.
f (i k+1 ,i k )>0 si l’arc (i k+1 , i k ) est indirect.

En d’autre terme, une chaîne améliorante est une chaîne pour laquelle les arcs dans le sens direct
n'ont pas atteint leur limite maximum et les arcs en sens indirect ont un flot non nul qui les
traverse.

Théorème
Un flot réalisable est maximal si et seulement s’il n’existe pas de chaîne améliorante.

5.3 Algorithme de Ford-Fulkerson


5.3.1 Méthode de marquage
On part d'un flot compatible. Le plus évident est le flot nul, i.e. pour tout arc (i , j), f (i, j)=0 .
Ensuite, on cherche une chaîne reliant la source au puits telle que son flot peut être augmenté. Si on
n'en trouve pas, le problème est résolu. Sinon, on augmente le flot sur cette chaîne. Ensuite, on
recommence à chercher une chaîne améliorante et ainsi de suite.

L'augmentation de flot maximum pour une chaîne est le minimum des écarts entre le flot courant et
le flot maximal pour les arcs directs ou le flot courant pour les arcs indirects.
Algorithme 1 (Marquage)
Initialisation :
Marquer s par (+).
Poser F = 0 (0 est un flot compatible et réalisable)
Boucle - Recherche d’un chaîne améliorante :
Marquer - un sommet qui est extrémité d’un arc dont l’origine est déjà marqué + ou – et sur lequel
le flux peut augmenter :

Marquer + un sommet qui est origine d’un arc dont l’extrémité est déjà marqué + ou – et sur lequel
le flux peut diminuer :

On continue jusqu’à ce que le sommet p soit marqué ( c.à.d trouver un chemin améliorant) ou qu’il
ne soit plus possible de marquer.

On pose ϵ+ =min {c (i , j)−f (i , j) / (i , j)∈A + }

ϵ− =min {f (i , j) / (i , j )∈ A− }

ϵ =min( ϵ+ , ϵ− )
+
A est l’ensemble des arcs directs du chemin améliorant.

A est l’ensemble des arcs indirects du chemin améliorant.

Remarque si A =∅ alors ϵ =ϵ
− +

Calcul du nouveau flot : F=F+ ϵ

Soit par exemple, la chaîne améliorante de S à P suivante :

Dans cette chaîne, on peut améliorer au max le flot de:


• 3 entre S et B (argumentation),
• 2 entre B et C (argumentation),
• 1 entre C et D (diminution),
• 5 entre D et P (argumentation).

ϵ+ =min {c (S , B)−f ( S , B) , c ( B ,C )−f (B , C) , c ( D , P)−f (D , P)}=min {5−2 , 9−7 , 5−0 }=min(3,2,5)=2

ϵ− =min {f ( D , C)}=1 d’où ϵ =min {ϵ+ , ϵ− }=min{2,1}=1


On augmentera/diminuera donc de 1 le flot dans cette chaîne. Ce qui signifie:
• augmenter de 1 le flot entre S et B,
• augmenter de 1 le flot entre B et C,
• diminuer de 1 le flot entre D et C,
• augmenter de 1 le flot entre D et P.
On remarque que pour les arcs en sens inverse, améliorer le flot signifie réduire le flot. Entre D et
C, le flot est réduit de 1 pour permettre l'arrivée d'une unité de flot sur C par B tout en conservant
l'équilibre du nœud. D ayant une unité de trop, son équilibre n'est pas respecté. C'est pourquoi une
unité de flot supplémentaire circule entre D et P.

Exemple
Le graphe suivant est bien un réseau de transport car
• le graphe est orienté pondéré sans boucle,
• on a une source S ( pas de prédécesseur de S),
• on a un puits P ( pas de successeur de P),
• on a un chemin de S vers P ( ex. S→A→P)
Ci-après la trac de l’algorithme de Ford-Fulkerson via la méthode de marquage :
Solution 1 :
Initialisation F=0

On marque S par un +

Étape 1

→ On marque A par + car le sommet A est l’ extrémité de l’arc (S,A) dont


l’origine S est déjà marqué + et que f (S,A) < c(S,A) (0<1).

→ On marque P par + car le sommet P est l’ extrémité de l’arc (A,P) dont


l’origine A est déjà marqué + et que f (A,P) < c(A,P) (0<5).

Donc on a la chaîne améliorante SAP.


ϵ+ =min {c (S , A )−f (S , A), c (A , P)−f ( A , P)}=min{1−0 , 5−0}=1
ϵ =ϵ+ =1 ( car sur cette chaîne on a pas d'arc indirect )

d’où F=0+ ϵ =1
Étape 2
→ On marque S par un +

→ On marque B par + car le sommet B est l’ extrémité de l’arc (S,B) dont


l’origine S est déjà marqué + et que f (S,B) < c(S,B) (0<4).

→ On marque P par + car le sommet P est l’ extrémité de l’arc (B,P) dont


l’origine B est déjà marqué + et que f (B,P) < c(B,P) (0<3).

Donc on a la chaîne améliorante SBP.


ϵ+ =min {c (S , B)−f (S , B) , c ( B , P)−f ( B , P)}=min {4−0 ,3−0 }=3
ϵ =ϵ+ =3 ( car sur cette chaîne, on a pas d'arc indirect )

d’où F=1+ ϵ =1+3=4

Il n’y a plus de chaîne améliorante donc le flot max est Fmax =4

Solution 2 :
Initialisation F=0

On marque S par un +

Étape 1

→ On marque A par + car le sommet A est l’ extrémité de l’arc (S,A) dont


l’origine S est déjà marqué + et que f (S,A) < c(S,A) (0<1).
→ On marque B par + car le sommet B est l’ extrémité de l’ arc (A,B) dont
l’origine A est déjà marqué + et que f (A,B) < c(A,B) (0<2).

→ On marque P par + car le sommet P est l’ extrémité de l’ arc (B,P) dont


l’origine B est déjà marqué + et que f (B,P) < c(B,P) (0<3).

Donc on a la chaîne améliorante SABP.


ϵ+ =min {c (S , A )−f (S , A), c (A , B)−f ( A , B) , c ( B , P)−f (B , P) }
=min{1−0 , 2−0 ,3−0 }=1

ϵ =ϵ+ =1 ( car sur cette chaîne on a pas d'arc indirect )

d’où F=0+ ϵ =1

Étape 2
→ On marque S par un +

→ On marque B par + car le sommet B est l’ extrémité de l’arc (S,B) dont


l’origine S est déjà marqué + et que f (S,B) < c(S,B) (0<4).

→ On marque A par - car le sommet A est l’ origine de l’arc (A,B) dont


l’extimité B est déjà marqué + et que f (A,B) >0 (car f (A,B)=1)).

→ On marque P par + car le sommet P est l’ extrémité de l’arc (A,P) dont


l’origine A est déjà marqué - et que f (A,P) < c(A,P) (0<5).
Donc on a la chaîne améliorante SBAP.

ϵ+ =min {c (S , B)−f (S , B) , c ( A , P)−f ( A , P) }=min( 4,5)=4

ϵ− =min {f ( A , B)}=1

ϵ =min {ϵ + , ϵ− }=min(4,1)=1

d’où F=1+ ϵ =1+1=2

Étape 3
→ On marque S par un +

→ On marque B par + car le sommet B est l’ extrémité de l’arc (S,B) dont


l’origine S est déjà marqué + et que f (S,B) < c(S,B) (1<4).

→ On marque P par + car le sommet P est l’ extrémité de l’arc (B,P) dont


l’origine B est déjà marqué + et que f (B,P) < c(B,P) (1<3)

Donc on a la chaîne améliorante SBP.


ϵ+ =min {c (S , B)−f (S , B) , c ( B , P)−f ( B , P)}=min(3,2)=2

ϵ =ϵ+ =2

d’où F=1+ ϵ =2+2=4


Il n’y a plus de chaîne améliorante donc le flot max est Fmax =4
Soit la coupe ( X , X̄ ) avec X ={S , B } et X̄ ={ A , P}

On a les deux arcs directs (S , A) et ( B , P) sont saturés et l’arc


indirect ( A , B) est insaturé donc la coupe (X , X̄ ) est une coupe
minimale.

D’où Fmax =c( X , X̄)=c (S , A)+c ( B , P)=1+ 3=4 ce qui confirme


le résultat trouvé par l’algorithme de Ford-Fulkerson.

5.3.2 Méthode résiduelle


Définition
Soit un réseau de transport G=(V , E , C) possédant un flot complet f . On appelle graphe
d’écart ou réseau résiduel, le réseau G’=(V , E’ , C ’) tel que :
• si l’arc (i , j)∈E et f (i, j)<c (i , j) alors (i , j)∈E ’ et c ’(i , j)=c (i , j) – f (i , j)
• si l’arc (i , j)∈E et f (i, j)=c (i , j) alors (i , j)∉E ’
• si l’arc (i , j)∈E et f (i, j)>0 alors ( j , i)∈E ’ et c ’ ( j, i)=f (i, j)

En d’autre terme, On peut définir le graphe résiduel comme le graphe non orienté sous-jacent, où,
sur chaque arête, nous associons deux valeurs: la capacité résiduelle et le flot déjà affecté.
Remarque : Dans le graphe d’écart, on ne parle que de capacité (pas de flux) : capacité et capacité
retour.

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 apparaît dans 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 de s à
p dans G’(f ) .

Exemple
Dans le graphe initial Dans le graphe d’écart (résiduel)

0< f (i , j)<c (i , j)

0< f (i , j)=c (i, j)


Soit le graphe suivant :

Initialisation
F=0 ( flot compatible et réalisable)
Étape 1 :
Soit le chemin améliorant SAP ( de la même manière de que la méthode de marquage). ϵ =1
donc flot f =1 . Donc le réseau d’écart sera :

Étape 2 :
Soit le chemin améliorant SBP. ϵ =3 donc flot f =3 . Donc le réseau d’écart sera :

Il n’y a plus de chemin améliorant dans GR2. Donc fin de l’algorithme.

Les flux dans graphe finale seront les capacités retours du dernier graphe d’écart (ici) :
Soit la coupe ( X , X̄ ) avec X ={S , B } et X̄ ={ A , P}

On a les deux arcs directs (S , A) et ( B , P) sont saturés et l’arc


indirect ( A , B) est insaturé donc la coupe (X , X̄ ) est une coupe
minimale.

D’où Fmax =c( X , X̄)=c (S , A)+c ( B , P)=1+ 3=4 ce qui confirme


le résultat trouvé par l’algorithme de Ford-Fulkerson.

Vous aimerez peut-être aussi