Vous êtes sur la page 1sur 21

Le

problème de flot maximum

Algorithme de Ford - Fulkerson

1
exemple 1:
Avant d’établir un projet de construction d’autoroute on désire
étudier la capacité du réseau routier, représenté par le graphe
ci-dessous reliant deux villes E et S:

7
a c 7
10 8
5 g

10 2 4 10
E b d 6 s

8 1 2 2 6

4 f
e

2
Que devient le flot maximum si on modifie le réseau précédent
comme suit:

8
a a’
6 7 c’
c
7
g
10 8 9 g’
5 4 10
E 10 7 2 6
b b’ d d’ s
6

8 1 2 2 5 6
6 f f’
e e’
4
3
Le graphe représente le nombre maximale de véhicules que
chaque route peut écouler par heure.

Question:
Quel est le nombre total maximal de véhicules susceptible
de s’écouler entre les villes E et S ?

c’est-`a-dire :

le flot maximal au-delà duquel il y aura saturation du


réseau.(meme application pour un réseau informatique)

4
On a un graphe orienté et connexe (pour toute paire de
sommets i et j, il existe un chemin joignant i et j)
(Voir l’algorithme de vérification de la connexité d’un réseau : Graphes et
algorithmes de Michel Gondran)& Michel Minoux)

A chaque arc (i,j), on associe une capacité :


u_ij > 0
Il y a deux sommets spéciaux :
• Origine O
• Destination T
• Tous les autres sont des sommets de transfert
On cherche a maximiser la valeur du flot entre O et
T
5
Exemple 2 :
Problème :
• En période de grande affluence(présence de nombreuses personnes en un même lieu), on
dispose d’une flotte d’autobus pour faire visiter les différents postes d’observation d’un parc
touristique.
• La réglementation limite le nombre d’autobus pouvant circuler sur chaque tronçon de route

6
Questions

Comment faire circuler les autobus dans le parc de façon


a maximiser le nombre total d’autobus allant de
l’origine (O) a la destination (T) ? :

7
Quelques Notations
• Supposons qu’on a déjà affecté un flot xij sur les arcs :
• Capacite résiduelle d’un arc (i,j) : uij – xij

• Graphe résiduel :

o Graphe non oriente sous-jacent


o Sur chaque arête, on associe deux valeurs :
Capacité résiduelle
Flot déjà affecté

Exemple : on a affecté 5 unités de flot sur l’arc (O,B)

8
Interprétation du graphe résiduel

7 0
O B
OO

• On a affecté 5 unités de flot sur l’arc (O,B)


* Si on traverse O → B
2 = capacité résiduelle
5 = flot sur (O, B)
* Si on traverse B → O
5 = capacité résiduelle
2 = flot sur (B, O)
9
Chemin d’augmentation

• Chemin allant de l’origine à la destination dans le graphe


oriente dérivé du graphe résiduel.

• Chaque arc du chemin possède une capacité


résiduelle > 0

• Capacité résiduelle d’un chemin d’augmentation :


minimum des capacités résiduelles de tous les arcs
du chemin

10
Algorithme de Ford-Fulkerson
1. Initialiser le flot: 0 unité sur chaque arc
2. Si aucun chemin d’augmentation ne peut être
identifié, arrêter: le flot est maximum
3. Identifier un chemin d’augmentation P ; soit c sa
capacité résiduelle
4. Sur chaque arc de P
a. Augmenter le flot de c
b. Diminuer la capacité résiduelle de c
5. Retourner a l’étape 2

Preuve : Voir Graphes et algorithmes de Michel Gondran&


Michel Minoux 11
Identifier un chemin d’augmentation

1. Marquer la source O (aucun autre sommet n’est


marqué); tous les sommets sont non visités
2. S’il n’y a aucun sommet marqué non visité, arrêter :
il n’existe aucun chemin d’augmentation
3. Choisir un sommet marqué non visité i
4. Visiter i : pour chaque (i,j) de capacité résiduelle >0
dans le graphe oriente dérivé du graphe résiduel,
marquer j
5. Si T est marqué, arrêter: un chemin d’augmentation
a été identifié
6. Retourner a l’étape 2
12
Application à l’exemple 2

Graphe résiduel initial

Identifier un chemin d’augmentation : O->B->E->T


Capacité résiduelle = min{7,5,6} = 5

13
Augmenter le flot et diminuer la capacité résiduelle
de 5 unités sur tous les arcs de O->B->E->T

Identifier un chemin d’augmentation : O->A->D->T


Capacité résiduelle = min{5,3,9} = 3

14
Augmenter le flot et diminuer la capacité résiduelle
de 3 unités sur tous les arcs de O->A->D->T

Chemin d’augmentation : O->A->B->D->T


Capacité résiduelle = min{2,1,4,6} = 1

15
Augmenter le flot et diminuer la capacité résiduelle
de 1 unité sur tous les arcs de O->A->B->D->T

Chemin d’augmentation : O->B->D->T


Capacité résiduelle = min{2,3,5} = 2

16
Augmenter le flot et diminuer la capacité résiduelle
de 2 unités sur tous les arcs de O->B->D->T

Chemin d’augmentation : O->C->E->D->T


Capacité résiduelle = min{4,4,1,3} = 1

17
Augmenter le flot et diminuer la capacité résiduelle
de 1 unité sur tous les arcs de O->C->E->D->T

Chemin d’augmentation : O->C->E->T


Capacité résiduelle = min{3,3,1} = 1

18
Augmenter le flot et diminuer la capacité résiduelle
de 1 unité sur tous les arcs de O->C->E->T

Chemin d’augmentation : O->C->E->B->D->T


Capacité résiduelle = min{2,2,5,1,2} = 1

19
Augmenter le flot et diminuer la capacité résiduelle
de 1 unité sur tous les arcs de O->C->E->B->D->T

Aucun chemin d’augmentation possible


Flot maximum

20
21

Vous aimerez peut-être aussi