Vous êtes sur la page 1sur 13

Procédure de marquage

Cette procédure permet, étant donné un flot réalisable, de


déterminer si elle existe, une chaı̂ne augmentante par rapport à f .
Cette procédure est basée sur 2 opérations de marquage dits :
marquage direct et marquage indirect.

Chapitre 8 : Flots dans les réseaux - Algorithme de Ford et Fulkerson (1961) 26/57
Marquage direct
Marquage direct :
Si pour un arc (i, j) on a
i marqué
j non marqué
* f (i, j) < c(i, j)
i j
f (i, j) < c(i, j) alors
on marque j
et on pose
(j) =min( (i), c(i, j) f (i, j))
(j) est la quantité max avec laquelle on peut augmenter le flot de
s à j.
( (i) est une valeur associée à i, elle est initialisée à l’infini pour s.)

Chapitre 8 : Flots dans les réseaux - Algorithme de Ford et Fulkerson (1961) 27/57
Marquage indirect

Marquage indirect :
Si pour un arc (j, i) on a
i marqué
j non marqué
* f (j, i) > 0
i j
f (j, i) > 0 alors
on marque j
et on pose
(j) =min( (i), f (j, i))

Chapitre 8 : Flots dans les réseaux - Algorithme de Ford et Fulkerson (1961) 28/57
Algorithme de la chaı̂ne augmentante

Supposons que l’on dispose d’un flot réalisable


~ ) entre s et t.
f = (f (i, j), (i, j) 2 E

Étape 1 : (initialisation)
Marquer s par (s, +).
Poser (s) = +1.
Étape 2 : Répéter les opérations suivantes jusqu’à ce que t
soit marqué ou qu’il ne soit plus possible de mar-
quer.

Chapitre 8 : Flots dans les réseaux - Algorithme de Ford et Fulkerson (1961) 29/57
Algorithme de la chaı̂ne augmentante

Opération a)
Si il existe un arc (i, j) tel que
i marqué
j non marqué
f (i, j) < c(i, j)
Alors
Marquer j par (i, +)
Poser (j) = min( (i), c(i, j) f (i, j))

Chapitre 8 : Flots dans les réseaux - Algorithme de Ford et Fulkerson (1961) 30/57
Algorithme de la chaı̂ne augmentante

Opération b)
Si il existe un arc (j, i) tel que
i marqué
j non marqué
f (j, i) > 0
Alors
Marquer j par (i, )
Poser (j) = min( (i), f (j, i))

Chapitre 8 : Flots dans les réseaux - Algorithme de Ford et Fulkerson (1961) 31/57
Algorithme de la chaı̂ne augmentante

Étape 3 : Si t est marqué Alors


une chaı̂ne augmentante C entre s et t est
détectée et on pose ✏ = (t)
Sinon
le flot f est maximum.

Chapitre 8 : Flots dans les réseaux - Algorithme de Ford et Fulkerson (1961) 32/57
Algorithme de la chaı̂ne augmentante
Exemple :
Considérons le réseau suivant où le flot de départ est nul (donc
uniquement marquage direct possible).
2

(5) (3)
(1) (1)

(7) (4) (9)


1 3 5 7

(1)
(4) (2) (5) (1) (6)

(4)
4 6

Chapitre 8 : Flots dans les réseaux - Algorithme de Ford et Fulkerson (1961) 33/57
Algorithme de Ford et Fulkerson
~)
On suppose que l’on dispose d’un flot initial f = (f (i, j), (i, j) 2 E
entre s et t (on peut prendre f = 0).
Étape 1 : Appliquer l’algorithme de la chaı̂ne augmentante à
f.
Si t est marqué,
STOP f est optimal.
Sinon
une chaı̂ne augmentante C est détectée, aller à
l’étape 2.
Étape 2 : Changer le 8 flot f comme suit :
< f (i, j) si (i, j) 62 C
f (i, j) = f (i, j) + ✏ si (i, j) 2 C +
:
f (i, j) ✏ si (i, j) 2 C
Aller à l’étape 1.
Chapitre 8 : Flots dans les réseaux - Algorithme de Ford et Fulkerson (1961) 34/57
Algorithme de Ford et Fulkerson

Exemple :
2

(5) 1 0 (3)
4 (1) (1) 3

(7) (4) (9)


1 3 5 7
9 5 4 7 9
0 (1) 1 2
1 (1)
(4) (2) (5) (6)
2 0

(4)
4 6
2

Chapitre 8 : Flots dans les réseaux - Algorithme de Ford et Fulkerson (1961) 35/57
Algorithme de Ford et Fulkerson

Exemple :
2

(5) 1 0 (3)
4 (1) (1) 3

(7) (4) (9)


1 3 5 7
11 7 4 7 11
0 (1) 1 4
1 (1)
(4) (2) (5) (6)
2 2

(4)
4 6
2

Chapitre 8 : Flots dans les réseaux - Algorithme de Ford et Fulkerson (1961) 36/57
Algorithme de Ford et Fulkerson

Exemple :
2

(5) 1 0 (3)
4 (1) (1) 3

(7) (4) (9)


1 3 5 7
13 7 4 7 13
2 (1) 1 6
1 (1)
(4) (2) (5) (6)
2 2

(4)
4 6
4

Chapitre 8 : Flots dans les réseaux - Algorithme de Ford et Fulkerson (1961) 37/57
Algorithme de Ford et Fulkerson

Exemple :
2

(5) 1 0 (3)
4 (1) (1) 3

(7) (4) (9)


1 3 5 7
14 7 4 8 14
3 (1) 1 6
0 (1)
(4) (2) (5) (6)
1 3

(4)
4 6
4

Chapitre 8 : Flots dans les réseaux - Algorithme de Ford et Fulkerson (1961) 38/57

Vous aimerez peut-être aussi