Vous êtes sur la page 1sur 26

Problème de flot MAX

Le problème des flots dans les réseaux


concerne la circulation de matière sur les
arcs d ’un graphe.

Il s'agit d'acheminer la plus grande


quantité possible de matière entre une
source et une destination.
Parmi les nombreuses applications qui
relèvent de ce problème, on trouve :

q les réseaux de transport de marchandises


de différents points distributeurs à
différents points consommateurs
q l ’écoulement de liquides à l’intérieur de
tuyaux
q le courant dans les réseaux électriques
q l ’informatique à travers les réseaux de
communication
q le coût de réalisation d ’un projet en
ordonnancement, etc.
2
I- Définitions

réseau de flots :
Un réseau de flots est un graphe valué, orienté,
connexe, sans boucles G=(V,E,W) tel que:
- Le graphe est valué : chaque arc (x,y) de E a
une capacité de transport associée positive
c(x,y).
- On distingue 2 sommets particuliers: la source
(s) de degré entrant nul et le puits (ou
destination) (p) de degré sortant nul.
- ∀v ∈V, il existe un chemin qui va de s à p et qui
passe par v.
Exemple de réseau de flots :

A
110 50
40 80
S C P
90
100 B 60
flot réalisable:
Un flot est une fonction f: E→ R+ qui vérifie les
propriétés suivantes:
- Le flot est limité par la capacité:
f(x,y) ≤ c(x,y), ∀(x,y) ∈ E.
- La valeur du flot sortant de la source est égale à la
valeur du flot entrant dans le puits.
Σv ∈ X f(s,v) =Σv ∈ X f(v,p)
- Loi de Kirchoff (1847, circuits électriques), Loi des
nœuds: flot total entrant dans un sommet x égal au
flot total sortant de x:
Σ(x,y)∈Vf(x,y)=Σ(x,y)∈Vf(y,x)
Exemple de flot réalisable :
A
80 110 40 50

40 40 75 80
S C P

35 90
75 100 40 60
B

En S : 80 <=110 et 75<=100 (flot limité par la capacité)


En A : 80=40 +40 (loi de kirchoff) avec : 40 <=50 et 40 <=40
En B : 75=35+40 (loi de kirchoff) avec 35 <=90 et 40 <= 60
En C : 40 + 35 = 75 (loi de kirchoff) avec 75 <= 80
80 + 75 = 40 +75+ 40 (La valeur du flot sortant de la source
est égale à la valeur du flot entrant dans le puits)
Flot maximum :
C’est un flot de valeur optimale. On ne peut plus l’améliorer.
II- flot complet(ou encore flot maximal)
1) Définitions :
Capacité résiduelle d’un arc :
C’est la quantité de flot pouvant encore Passer par l’arc (x,y).
cf(x,y) =c(x,y) –f(x,y)
Arc saturé :
si sa capacité résiduelle est nulle
Capacité résiduelle d’un chemin:
La plus petite capacité résiduelle de ses arcs.
Chemin saturé
si l’un de ses arcs est saturé.
Flot saturé ou flot complet :
est un flot réalisable tel que sur tout chemin de s à p il existe
un arc ayant un flot égal à sa capacité. (c’est à dire tous les
chemins sont saturés)
2) Algorithme de recherche de flot complet
1) Initialisation: f initialisé à 0,
2) Itération i:
Trouver un chemin non saturé L de s à p.
S’il n’en existe pas, Stop (flot complet). Sinon aller à 3.
3) Mettre à jour G comme suit:
Soit ℇi le minimum des capacités des arcs du chemin L.
Définir les nouvelles capacités :
ci+1(x,y)=ci(x,y) - ℇi si (x,y) ∈ L
ci+1(x,y)=ci(x,y) sinon
Définir le flot fi+1 par:
fi+1(x,y)=fi(x,y) + ℇi si (x,y) ∈ L
fi+1(x,y)=fi(x,y) sinon
Mettre i:=i+1 et retourner à 2
Exercice 1 :
Pour le réseau ci-dessous trouver le flot complet

A
110 50
40
S C
80 P

90
100 60
B
Exercice 2 :

Le serveur S est connecté à la machine P par un réseau avec les nœuds A, B,


C, D,
les capacités de connexions entre les nœuds sont exprimés (en Mbit/s)
dans la matrice d’adjacence suivante :

L’utilisateur de la machine P télécharge un très grand fichier du serveur S.


On veut trouver un routage possible.

1.A Quel problème correspond ce routage ?


2.Déterminer la modélisation S A B C D P

3.Trouver une solution du problème. S 0 2 6 1 0 0

A 0 0 3 0 7 0

B 0 0 0 0 3 5

C 0 0 2 0 6 0

D 0 0 0 0 0 4

P 0 0 0 0 0 0
Correction Exercice 2 :

1.
1) La diagonale de la matrice est nulle donc ce graphe n’a pas de boucle
Il y a des valeurs positives dans la matrice c’est un graphe pondéré
d-(S) =0 , donc il s’agit d’un sommet source (colonne S nulle)
d+(P)=0 , donc il s’agit d’un sommet destination (ligne P nulle)
Le graphe et aussi orienté (matrice non symétrique)
Le graphe est connexe (vérification sur le graphe avec une seule application de
parcours)
Il existe aussi un chemin de S à P passant par n’importe quel sommet intermédiaire
il s’agit donc d’un réseau de flot

Le routage correspond donc à la recherche d’un flot


2) Modélisation
Soit G=(V,E,W) le réseau de flot
modélisant la situation
V= {S,P,A,B,C,D}={Serveur, machine,
nœuds}
E={Connexion entre les nœuds}
W={Capacité de connexion en M/s}
En appliquant l’algorithme de flot Complet :
SADP : Min(2,7,4) = 2 -> v(f)= 2
SBDP : Min (6,3,2) = 2 -> v(f) = 4
SBP : Min (4,5) = 4 -> v(f) = 8
SCBP: Min (1,2,1)=1 -> v(f) =9
Solution :
III- Problème de calcul du Flot
maximum dans un réseau

L'algorithme de Ford-Fulkerson, du nom de ses


auteurs L.R. Ford et D.R. Fulkerson, consiste en
une procédure itérative qui permet de
déterminer un flot (ou flux) de valeur maximum à
partir d'un flot constaté.

L'algorithme de Ford et Fulkerson est le


premier à avoir été spécialement conçu pour la
résolution du problème de flot max

16
1) Définitions :
Graphe résiduel:
Etant donnés : G=(V,E,W) et un flot f dans G,
le graphe résiduel de f pour G (noté
Gf=(V,Ef,Wf) est un réseau tel que pour tout
arc (x,y) ∈ E, on associe deux arcs dans Ef :
1) L’arc (x,y), tel que: cf (x,y)=c(x,y)-f(x,y) si f(x,y) < c(x,y)
2)L’arc (y,x), tel que cf (y,x)=f(x,y) si f(x,y) > 0

Chemin améliorant ou augmentant:


c’est un chemin de Gf, allant de s à p et sans
former de cycle.
A
80/110 40/50

G: 40/40 75/80
S C P

35/90
75/100 40/60
B

40
80 A
10
30
40
Gf : 5 P
S C
25 35
75
55
75 B 20
40
2) Algorithme de Ford-Fulkerson (1956)

1) Initialisation: f initialisé à fc, (ou un flot nul, ou un flot réa)


2) Itération i:
Construire G résiduel: Gf
Trouver un chemin augmentant L de s à p dans Gf.
S’il n’en existe pas, Stop (flot max). Sinon aller à 3.
3) Mettre à jour Gf comme suit:
Soit ℇi le minimum des capacités des arcs du chemin L.
Définir le flot fi+1 par:
fi+1(x,y)=fi(x,y) - ℇi si (x,y) ∈ L
fi+1(x,y)=fi(x,y) + ℇi si (y,x) ∈ L
fi+1(x,y)=fi(x,y) sinon
4) Réécrire la nouvelle solution f
Mettre i:=i+1 et retourner à 2
EXERCICE 3

20
Correction Exercice 3 :
1. Soit le graphe G (V, E,W)
S= {les villes}
E= {Les voies ferrées}
E= {La capacité de transport des trains}

2. Ce graphe est simple, connexe, orienté et pondéré


Il existe un sommet source A tel que ∑ 𝑑!(A) =0
Il existe un sommet destination F tel que ∑ 𝑑"(F) =0
∀ 𝑣 ∈ 𝑉, ∃ Un chemin de A à F passant par les autres sommets.
Ainsi ce graphe représente un réseau de flot.
3. Il s’agit de trouver un flot réalisable ou un flot complet

Initialisation : f=0 ; v(f)=0


ABDF: min (15, 11, 20) = 11; v (f) = 0+11=11
ACEF: min (12, 13, 3) = 3; v (f) =11+3=14
ACEDF: min (9, 10, 6, 9) = 6; v (f) =14+6=20
Tous les chemins sont saturés, il s’agit donc d’un flot complet.
Un plan de transport possible est donc donné ci-dessous :
4. La solution f et v(f) ne sont pas uniques puisqu’il ne s’agit pas de la solution optimale
5. Pour déterminer un plan de transport optimal, on doit appliquer l’algorithme de Ford-Fulkerson

On trace le graphe résiduel correspondant à la solution trouvée dans 3) et on


trouve qu’il n’existe pas de chemin augmentant dans ce cas, le flot est max et est
de valeur 20.

6. Cette solution f n’est pas unique mais sa valeur v(f) est unique.
7. Cette solution vérifie au niveau de chaque ville la loi des nœuds. La valeur de flots
entrants est égale à la valeur de flots sortants.
EXERCICE 4

On considère un réseau constitué de 6 sommets.


Il s'agit de calculer un flot maximum entre les sommets
source (noté S) et puits (noté P).
Le tableau ci dessous donne les arcs du réseau, leurs
capacités, et deux flot f1 et f2 .

Arcs SA SC AB AC AD BD BP CD DP
Capacités 5 5 2 2 4 2 3 5 7
Flot f1 5 3 1 2 2 0 1 5 7
Flot f2 5 2 2 1 2 2 0 3 7
1) Vérifier que ces flots sont complets. Que remarquez vous ?
2) Chercher le flot max en utilisant l’algorithme approprié .

24
Correction Exercice 4 :
1. Le réseau de flot

Le flot f1 :

Le flot f2:

Ø Tous les chemins sont saturés pour ces deux flots, donc ces deux flots sont
complets.
2. On remarque que pour le flot f1 v (f1)= 8 et pour le flot f2 v (f2) = 7. Ainsi on va
appliquer l’algorithme de Ford-Fulkerson sur le flot f1 car v (f1)>v (f2).
On trace le graphe résiduel :

Chemin augmentant : SCABP : ∑ min (2, 2, 1,2) = 1, v(f)=8+1= 9


Il n’existe pas de chemins augmentant.
Ø Le flot max est v(f) = 9.

Vous aimerez peut-être aussi