algorithme "out-of-kilter " dû à ford et fulkerson (1962)

46
Algorithme "out-of-Kilter " à Ford et Fulkerson (1962)

Upload: colombain-leblanc

Post on 04-Apr-2015

106 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

Algorithme "out-of-Kilter "  dûà

Ford et Fulkerson (1962)

Page 2: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

Le problème à une source et une destination avec des bornes inférieureset supérieures sur les arcs et avec une valeur de flot v fixée à l’avances’énonce comme suit :

Min c(x, y) f(x, y) (x, y) A

f(x, y)

{y N | (x, y) A}

- f(y, x)

{y N | (y, x) A}

=

v si x = s

0 si x {s, p}-v si x = p

L(x, y) f(x, y) K(x, y), (x, y) A.

Considérons un algorithme de type primal-dual issu de la théorie de ladualité en programmation linéaire.

Page 3: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

Posons (i) la variable duale associée au sommet i N.

L’optimum d’un flot réalisable f est atteint s’il existe un vecteur dual satisfaisant la condition de complémentarité suivante :

(x, y) A,

(y) - (x) > c(x, y) f(x, y) = K(x, y)

(y) - (x) < c(x, y) f(x, y) = L(x, y)

(y) - (x) = c(x, y) L(x, y) f(x, y) K(x, y)

L’algorithme primal-dual utilise des couples de solutions primale –réalisable et duale-réalisable et tente de les modifier, une à la fois,de telle sorte que la condition de complémentarité soit satisfaite.

Page 4: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

Algorithme primal - dual

Déterminer un flot réalisable f initial dont sa valeur est égale à v.

Choisir un vecteur tel que la condition de complémentarité soitremplie par le plus grand nombre possible d’arcs.

Note : Au pire aller, prenons comme vecteur initial = 0.

Définissons l’état d’un arc (x, y) comme suit :

Condition État

(y) - (x) < c(x, y) et f(x, y) = L(x, y) - arc

(y) - (x) = c(x, y) et L(x, y) f(x, y) K(x, y) - arc

(y) - (x) > c(x, y) et f(x, y) = K(x, y) - arc

(y) - (x) < c(x, y) et f(x, y) > L(x, y) a - arc

(y) - (x) > c(x, y) et f(x, y) < K(x, y) b - arc

Page 5: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

On constate que la condition de complémentarité est satisfaite parles - arcs, les - arcs et les - arcs tandis qu’elle ne l’est paspar les a - arcs et les b - arcs.

Évidemment, si la condition de complémentarité est satisfaite partous les arcs du réseau, le flot est optimal et l’algorithme est terminé.Autrement, on modifie soit le flot f, soit le dual , afin d’amener lesa-arcs et les b-arcs à satisfaire les conditions de complémentaritésans que ceux qui y satisfont déjà ne cessent de le faire.

État Modification requise

a - arc changement de flot Diminuer si possible le flot surl’arc à sa borne inférieure.

a - arc changement de la Augmenter si possible la valeurvariable duale de (y) - (x) à c(x, y).

b - arc changement de flot Augmenter si possible le flot surl’arc à sa borne supérieure.

b - arc changement de la Diminuer si possible la valeurvariable duale. de (y) - (x) à c(x, y).

Page 6: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

1er cas : changement de flot.

Considérons un a-arc (x, y).

La quantité de flot f(x, y) doit être réduite.

Pour réduire cette quantité sans modifier v, il faut expédierdes unités de flot de x à y par un autre chemin :

il s’agit d’un ré-acheminement de flot de x à y.

Considérons un b-arc (x, y).

La quantité de flot f(x, y) doit être augmentée.

Pour augmenter cette quantité sans modifier v, il faut expédierdes unités de flot de y à x par un autre chemin :

il s’agit d’un ré-acheminement de flot de y à x.

Les changements de flots sur chaque arc doivent être tels qu’aucun arcvérifiant la condition de complémentarité ne cesse de le faire.

Page 7: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

Voici un résumé des modifications de flot possibles :

État Type de changement de flot permis

- arc admissible pour augmentation ou diminution (tout enrespectant les contraintes.

a - arc admissible pour diminution seulement.

b - arc admissible pour augmentation seulement.

- arc et - arc aucun changement permis.

Un ré-acheminement de flot de x à y s’opère en obtenant une chaîned’augmentation de x à y au moyen d’un algorithme de marquage.

Cette chaîne d’augmentation, si elle existe, n’est formée que de a-arcs,b-arcs ou -arcs selon les restrictions ci-dessus.

Page 8: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

Si une chaîne d’augmentation existe, il faudra modifier le flot enconséquence sans oublier la modification sur l’arc (x, y).

Autrement, il nous faut modifier les variables duales afin d’augmenterle niveau de satisfaction à la condition de complémentarité.

Page 9: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

Algorithme de marquageSoient f un flot réalisable et le vecteur dual,

Choisir un a-arc ou un b-arc (x, y) A,- poser i = x et j = y si (x, y) est un a-arc,- poser i = y et j = x si (x, y) est un b-arc.

Notre objectif est de déterminer une chaîne d’augmentationde i à j.

0.

S’il n’existe pas de tels arcs, c’est terminé, le flot est optimal.

1. Tous les sommets sont non marqués sauf i.Le sommet i est marqué (-, d(i) = ) et non encore examiné.

2. Choisir n’importe quel sommet r marqué (z, d(r)) etnon encore examiné.

Si t est un sommet non marqué tel que (r, t) A est un -arcou un b-arc, avec f(r, t) < K(r, t), lui assigner la marque(r+, d(t)) où d(t) = min{d(r), K(r, t) – f(r, t)}.

Page 10: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

Si t est un sommet non marqué tel que (t,r) A est un -arcou un a-arc, avec f(t, r) > L(t, r), lui assigner la marque(r-, d(t)) où d(t) = min{d(r), f(t, r) – L(t, r)}.

De tels sommets t sont maintenant marqués et non encoreexaminés.

3. Répéter l’étape précédente, aussi souvent que possible,jusqu’à ce que,

ou bien notre destination j du ré-acheminement soit marquée etnon encore examinée,

aller à l’algorithme de réaménagement du flot;ou bien aucune marque n’ait pu lui être assignée,

aller à l’algorithme de changement du vecteur dual.

Page 11: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

Algorithme de réaménagement du flot

1.

Posons = min{d(j), f(i, j) – L(i, j)}f(i, j) = f(i, j) -

(i, j) est un a-arc.

(j, i) est un b-arc.

Posons = min{d(j), K(j, i) – f(j, i)}f(j, i) = f(j, i) +

2. Si j est marqué (t+, d(j)), poser f(t, j) = f(t, j) + , (t-, d(j)), poser f(j, t) = f(j, t) - .

Si t est marqué (r+, d(t)), poser f(r, t) = f(r, t) + , (r-, d(t)), poser f(t, r) = f(t, r) - .

Reprendre cette dernière étape avec le sommet r et ainsi de suitejusqu’à ce que le réaménagement du flot atteigne la source i.

Page 12: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

3. Lorsque la source i est atteinte, déterminer l’état de chaque arc etconstater qu’il est le même ou meilleur qu’il était au sens d’unemeilleure satisfaction à la condition de complémentarité.

S’il n’existe plus de a-arcs ou de b-arcs,alors c’est terminé, le flot est optimal,sinon effacer toutes les marques,

retourner à l’algorithme de marquage.

Page 13: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

2ième cas : changement des variables duales.

Soient X l’ensemble des sommets marqués etX = N - X, l’ensemble des sommets non marqués.

Il est clair que i X et j X.

Posons :

A1 = {(x, y) A | x X , y X , (x,y) est un a-arc ou un -arc}

A2 = {(x, y) A | x X , y X , (x,y) est un b-arc ou un -arc}

Calculer :

= min{| (y) - (x) - c(x, y) | : (x, y) A1 A2}

(x) = (x) si x X

(x) = (x) + si x X

Déterminer l’état de chaque arc.

Page 14: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

S’il n’existe plus de a-arcs ou de b-arcs,alors c’est terminé, le flot est optimal,sinon effacer toutes les marques,

retourner à l’algorithme de marquage.

Considérons maintenant un exemple où dans les cases associées àchaque arc, nous indiquerons les quantités suivantes :

L(x, y), K(x, y), c(x, y)

état, f(x, y)

Page 15: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

A D G J

B E H

C F I

5, 20, 2 10, 20, 1 5, 20, 1 5, 30, 1 0, 60, 4 0, 90, 5

5, 20, 3 0, 10, 2 0, 10, 1 0, 10, 2 0, 40, 2 0, 70, 3

0, 10, 2 0, 40, 2

0, 15, 4 0, 20, 1

5, 30, 1 0, 30, 2 0, 50, 2

Page 16: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

A D G J

B E H

C F I

5, 20, 2, 20

10, 20, 1, 10

5, 20, 1, 20

5, 30, 1, 10

0, 60, 4, 0

0, 90, 5, 40

5, 20, 3, 20

0, 10, 2, 10

0, 10, 1, 10

0, 10, 2, 0

0, 40, 2, 0

0, 70, 3, 0

0, 10, 2, 10

0, 40, 2, 40

0, 15, 4, 0

0, 20, 1, 0

5, 30, 1, 30

0, 30, 2, 30

0, 50, 2, 30

Flotmaximum

Page 17: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

A0

D1

G3

J8

B2

E4

H6

C3

F7

I5

5, 20, 2, 20

10, 20, 1, 10

5, 20, 1, 20

5, 30, 1, 10

0, 60, 4, 0

0, 90, 5a, 40

5, 20, 3, 20

0, 10, 2a, 10

0, 10, 1a, 10

0, 10, 2b, 0

0, 40, 2, 0

0, 70, 3, 0

0, 10, 2, 10

0, 40, 2, 40

0, 15, 4, 0

0, 20, 1, 0

5, 30, 1, 30

0, 30, 2, 30

0, 50, 2b, 30

Variablesduales

État dechaque

arc

Page 18: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

A0

D1

G3

J8

B2

E4

H6

C3

F7

I5

5, 20, 2, 20

10, 20, 1, 10

5, 20, 1, 20

5, 30, 1, 10

0, 60, 4, 0

0, 90, 5a, 40

5, 20, 3, 20

0, 10, 2a, 10

0, 10, 1a, 10

0, 10, 2b, 0

0, 40, 2, 0

0, 70, 3, 0

0, 10, 2, 10

0, 40, 2, 40

0, 15, 4, 0

0, 20, 1, 0

5, 30, 1, 30

0, 30, 2, 30

0, 50, 2b, 30

Choisirun a-arc :

(C, D).

Il fautdiminuerf(C, D).

ALG.

DE

MARQUAGE (-,)

(C+,15)

(C-,15)

Dn’est pasatteint.

Page 19: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

On procède donc à l’algorithme de changement de variables duales

On a : X = {A, C, F} et X = {B, D, E, G, H, I, J}.

D’où, A1 = {(C, D), (C, G), (F, I)}

A2 = {(G, F)}.

Donc, = min { | (D) – (C) - c(C, D)|, | (G) – (C) - c(C, G)|,| (I) – (F) - c(F, I)|,| (F) – (G) - c(G, F)| }

= min {4, 1, 3, 2} = 1.

On ajoute donc 1 unité à chaque variable duale associée à unsommet non marqué. On a aussi déterminé le nouvel état.

Page 20: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

A0

D2

G4

J9

B3

E5

H7

C3

F7

I6

5, 20, 2, 20

10, 20, 1, 10

5, 20, 1, 20

5, 30, 1, 10

0, 60, 4, 0

0, 90, 5a, 40

5, 20, 3, 20

0, 10, 2a, 10

0, 10, 1, 10

0, 10, 2b, 0

0, 40, 2, 0

0, 70, 3, 0

0, 10, 2, 10

0, 40, 2, 40

0, 15, 4, 0

0, 20, 1, 0

5, 30, 1, 30

0, 30, 2, 30

0, 50, 2b, 30

Choisirde nouveauun a-arc :

(C, D).

Il fautdiminuerf(C, D).

ALG.

DE

MARQUAGE (-,)

(C+,15)

(C-,15)

Dn’est pasatteint.

Page 21: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

On procède donc à l’algorithme de changement de variables duales.

On a : X = {A, C, F} et X = {B, D, E, G, H, I, J}.

D’où, A1 = {(C, D), (F, I)}

A2 = {(G, F)}.

Donc, = min { | (D) – (C) - c(C, D)|, | (I) – (F) - c(F, I)|,| (F) – (G) - c(G, F)| }

= min {3, 2, 1} = 1.

On ajoute donc 1 unité à chaque variable duale associée à unsommet non marqué. On a aussi déterminé le nouvel état de chaquearc.

Page 22: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

A0

D3

G5

J10

B4

E6

H8

C3

F7

I7

5, 20, 2, 20

10, 20, 1, 10

5, 20, 1, 20

5, 30, 1, 10

0, 60, 4, 0

0, 90, 5a, 40

5, 20, 3, 20

0, 10, 2a, 10

0, 10, 1, 10

0, 10, 2, 0

0, 40, 2, 0

0, 70, 3, 0

0, 10, 2, 10

0, 40, 2, 40

0, 15, 4, 0

0, 20, 1, 0

5, 30, 1, 30

0, 30, 2, 30

0, 50, 2b, 30

Choisirde nouveauun a-arc :

(C, D).

Il fautdiminuerf(C, D).

ALG.

DE

MARQUAGE (-,)

(C+,15)

(C-,15)

Dn’est pasatteint.

Page 23: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

On procède donc à l’algorithme de changement de variables duales.

On a : X = {A, C, F} et X = {B, D, E, G, H, I, J}.

D’où, A1 = {(C, D), (F, I)}

A2 = .

Donc, = min { | (D) – (C) - c(C, D)|, | (I) – (F) - c(F, I)| }

= min {2, 1} = 1.

On ajoute donc 1 unité à chaque variable duale associée à unsommet non marqué. On a aussi déterminé le nouvel état de chaquearc.

Page 24: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

A0

D4

G6

J11

B5

E7

H9

C3

F7

I8

5, 20, 2, 20

10, 20, 1, 10

5, 20, 1, 20

5, 30, 1, 10

0, 60, 4, 0

0, 90, 5a, 40

5, 20, 3, 20

0, 10, 2a, 10

0, 10, 1, 10

0, 10, 2, 0

0, 40, 2, 0

0, 70, 3, 0

0, 10, 2, 10

0, 40, 2, 40

0, 15, 4, 0

0, 20, 1, 0

5, 30, 1, 30

0, 30, 2, 30

0, 50, 2b, 30

Choisirde nouveauun a-arc :

(C, D).ALG.

DE

MARQUAGE (-,)

(C+,15)

(C-,15)

(F+,15)

(G-,5) (E-,5) (I+,15)

(E-,10) (H-,15)(J-,15)

Page 25: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

Posons = min{d(D), f(C, D) – L(C, D)} = 5f(C, D) = f(C, D) – 5.

(C, D) est un a-arc.

Appliquons l’algorithme de réaménagement du flot.

Ré-acheminement du flot.

Lorsque la source C est atteinte, déterminer l’état de chaque arc.

Page 26: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

A0

D4

G6

J11

B5

E7

H9

C3

F7

I8

5, 20, 2, 20

10, 20, 1, 10

5, 20, 1, 20

5, 30, 1, 5

0, 60, 4, 0

0, 90, 5a, 35

5, 20, 3, 20

0, 10, 2a, 5

0, 10, 1, 10

0, 10, 2, 0

0, 40, 2, 0

0, 70, 3, 5

0, 10, 2, 10

0, 40, 2, 35

0, 15, 4, 5

0, 20, 1, 5

5, 30, 1, 30

0, 30, 2, 25

0, 50, 2b, 30

(-,)

(C+,15)

(C-,15)

(F+,15)

(G-,5) (E-,5) (I+,15)

(E-,10) (H-,15)(J-,15)

Page 27: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

A0

D4

G6

J11

B5

E7

H9

C3

F7

I8

5, 20, 2, 20

10, 20, 1, 10

5, 20, 1, 20

5, 30, 1, 5

0, 60, 4, 0

0, 90, 5a, 35

5, 20, 3, 20

0, 10, 2a, 5

0, 10, 1, 10

0, 10, 2, 0

0, 40, 2, 0

0, 70, 3, 5

0, 10, 2, 10

0, 40, 2, 35

0, 15, 4, 5

0, 20, 1, 5

5, 30, 1, 30

0, 30, 2, 25

0, 50, 2b, 30

Effacerles marques

Déterminerl’état dechaquearc

Page 28: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

A0

D4

G6

J11

B5

E7

H9

C3

F7

I8

5, 20, 2, 20

10, 20, 1, 10

5, 20, 1, 20

5, 30, 1, 5

0, 60, 4, 0

0, 90, 5a, 35

5, 20, 3, 20

0, 10, 2a, 5

0, 10, 1, 10

0, 10, 2, 0

0, 40, 2, 0

0, 70, 3, 5

0, 10, 2, 10

0, 40, 2, 35

0, 15, 4, 5

0, 20, 1, 5

5, 30, 1, 30

0, 30, 2, 25

0, 50, 2b, 30

Choisirde nouveauun a-arc :

(C, D).ALG.

DE

MARQUAGE (-,)

(C+,10) (F+,10)

(C-,15) (I+,10)

(E-,10) (H-,10)

(J-,10)

Page 29: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

On procède donc à l’algorithme de changement de variables duales.

On a : X = {A, B, C, E, F, H, I, J} et X = {D, G}.

D’où, A1 = {(B, D), (C, D)}

A2 = {(D, E), (G, J)}.

Donc, = min {2, 1, 2, 3 } = 1.

On ajoute donc 1 unité à chaque variable duale associée à unsommet non marqué. On a aussi déterminé le nouvel état de chaquearc.

Page 30: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

A0

D5

G7

J11

B5

E7

H9

C3

F7

I8

5, 20, 2, 20

10, 20, 1, 10

5, 20, 1, 20

5, 30, 1, 5

0, 60, 4, 0

0, 90, 5a, 35

5, 20, 3, 20

0, 10, 2, 5

0, 10, 1, 10

0, 10, 2, 0

0, 40, 2, 0

0, 70, 3, 5

0, 10, 2, 10

0, 40, 2, 35

0, 15, 4, 5

0, 20, 1, 5

5, 30, 1, 30

0, 30, 2, 25

0, 50, 2b, 30

ALG.

DE

MARQUAGE

(-,)

Choisirun b-arc :

(G, J).

Il fautaugmenter

f(G, J).

(J-,5)

(I-,5)

(F-,5)

(C-,5) (C+,5) (D+,5)

(E-,10) (H-,35) (J-,35)

Page 31: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

Posons = min{d(G), K(G, J) – f(G, J)} = 5f(G, J) = f(G, J) + 5.

(G, J) est un b-arc.

Appliquons l’algorithme de réaménagement du flot.

Ré-acheminement du flot.

Lorsque la source J est atteinte, déterminer l’état de chaque arc.

Page 32: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

A0

D5

G7

J11

B5

E7

H9

C3

F7

I8

5, 20, 2, 20

10, 20, 1, 10

5, 20, 1, 20

5, 30, 1, 5

0, 60, 4, 0

0, 90, 5a, 35

5, 20, 3, 20

0, 10, 2, 10

0, 10, 1, 10

0, 10, 2, 0

0, 40, 2, 0

0, 70, 3, 0

0, 10, 2, 10

0, 40, 2, 35

0, 15, 4, 0

0, 20, 1, 0

5, 30, 1, 30

0, 30, 2, 30

0, 50, 2b, 35

(-,)

(J-,5)

(I-,5)

(F-,5)

(C-,5) (C+,5) (D+,5)

(E-,10) (H-,35) (J-,35)

Page 33: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

A0

D5

G7

J11

B5

E7

H9

C3

F7

I8

5, 20, 2, 20

10, 20, 1, 10

5, 20, 1, 20

5, 30, 1, 5

0, 60, 4, 0

0, 90, 5a, 35

5, 20, 3, 20

0, 10, 2, 10

0, 10, 1, 10

0, 10, 2, 0

0, 40, 2, 0

0, 70, 3, 0

0, 10, 2, 10

0, 40, 2, 35

0, 15, 4, 0

0, 20, 1, 0

5, 30, 1, 30

0, 30, 2, 30

0, 50, 2b, 35

Effacerles marques

Page 34: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

A0

D5

G7

J11

B5

E7

H9

C3

F7

I8

5, 20, 2, 20

10, 20, 1, 10

5, 20, 1, 20

5, 30, 1, 5

0, 60, 4, 0

0, 90, 5a, 35

5, 20, 3, 20

0, 10, 2, 10

0, 10, 1, 10

0, 10, 2, 0

0, 40, 2, 0

0, 70, 3, 0

0, 10, 2, 10

0, 40, 2, 35

0, 15, 4, 0

0, 20, 1, 0

5, 30, 1, 30

0, 30, 2, 30

0, 50, 2b, 35

Choisirun b-arc :

(G, J).

(-,)

(E-,10) (H-,35) (J-,35)

Page 35: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

On procède donc à l’algorithme de changement de variables duales.

On a : X = {B, E, H, J} et X = {A, D, G, I, F, C}.

D’où, A1 = {(B, D)}

A2 = {(A, B), (D, E), (G, J)}.

Donc, = min {1, 3, 1 } = 1.

On ajoute donc 1 unité à chaque variable duale associée à unsommet non marqué. On a aussi déterminé le nouvel état de chaquearc.

Page 36: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

A1

D6

G8

J11

B5

E7

H9

C4

F8

I9

5, 20, 2, 20

10, 20, 1, 10

5, 20, 1, 20

5, 30, 1, 5

0, 60, 4, 0

0, 90, 5a, 35

5, 20, 3, 20

0, 10, 2, 10

0, 10, 1, 10

0, 10, 2, 0

0, 40, 2, 0

0, 70, 3, 0

0, 10, 2, 10

0, 40, 2, 35

0, 15, 4, 0

0, 20, 1, 0

5, 30, 1, 30

0, 30, 2, 30

0, 50, 2b, 35

Choisirun b-arc :

(G, J).

(-,)

(E-,10) (H-,35) (J-,35)

ALG.

DE

MARQUAGE

Choisirun b-arc :

(G, J).

(E-,15)(C-,10)

(D-,10)

(C+,10)

(F+,10)

Page 37: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

On procède donc à l’algorithme de changement de variables duales.

On a : X = {A, B, C, D, E, F, H, I, J} et X = {G}.

D’où, A1 =

A2 = {(G, J)}.

Donc, = 1.

On ajoute donc 1 unité à chaque variable duale associée à unsommet non marqué. On a aussi déterminé le nouvel état de chaquearc.

Page 38: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

A1

D6

G9

J11

B5

E7

H9

C4

F8

I9

5, 20, 2, 20

10, 20, 1, 10

5, 20, 1, 20

5, 30, 1, 5

0, 60, 4, 0

0, 90, 5a, 35

5, 20, 3, 20

0, 10, 2, 10

0, 10, 1, 10

0, 10, 2, 0

0, 40, 2, 0

0, 70, 3, 0

0, 10, 2, 10

0, 40, 2, 35

0, 15, 4, 0

0, 20, 1, 0

5, 30, 1, 30

0, 30, 2, 30

0, 50, 2, 35

Choisirun a-arc :

(H, J).

(-,)

(E-,10) (H-,35)

ALG.

DE

MARQUAGE

(E-,15)(C-,10)

(D-,10)

(C+,10)

(F+,10)

Page 39: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

On procède donc à l’algorithme de changement de variables duales.

On a : X = {A, B, C, D, E, F, H, I} et X = {G, J}.

D’où, A1 = {(I, J), (H, J)}

A2 = .

Donc, = min{1, 3} = 1.

On ajoute donc 1 unité à chaque variable duale associée à unsommet non marqué. On a aussi déterminé le nouvel état de chaquearc.

Page 40: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

A1

D6

G10

J12

B5

E7

H9

C4

F8

I9

5, 20, 2, 20

10, 20, 1, 10

5, 20, 1, 20

5, 30, 1, 5

0, 60, 4, 0

0, 90, 5a, 35

5, 20, 3, 20

0, 10, 2, 10

0, 10, 1, 10

0, 10, 2, 0

0, 40, 2, 0

0, 70, 3, 0

0, 10, 2, 10

0, 40, 2, 35

0, 15, 4, 0

0, 20, 1, 0

5, 30, 1, 30

0, 30, 2, 30

0, 50, 2, 35

Choisirun a-arc :

(H, J).

(-,)

(E-,10) (H-,35)

ALG.

DE

MARQUAGE

(E-,15)(C-,10)

(D-,10)

(C+,10)

(F+,10)

(I+,10)

Page 41: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

Posons = min{d(J), f(H, J) – L(H, J)} = min{10, 35}f(H, J) = f(H, J) - 10.

(H, J) est un a-arc.

Appliquons l’algorithme de réaménagement du flot.

Ré-acheminement du flot.

Lorsque la source H est atteinte, déterminer l’état de chaque arc.

Page 42: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

A1

D6

G10

J12

B5

E7

H9

C4

F8

I9

5, 20, 2, 20

10, 20, 1, 10

5, 20, 1, 10

5, 30, 1, 5

0, 60, 4, 0

0, 90, 5a, 25

5, 20, 3, 20

0, 10, 2, 0

0, 10, 1, 10

0, 10, 2, 0

0, 40, 2, 0

0, 70, 3, 10

0, 10, 2, 10

0, 40, 2, 25

0, 15, 4, 10

0, 20, 1, 10

5, 30, 1, 30

0, 30, 2, 30

0, 50, 2, 35

(-,)

(E-,10) (H-,25)

(B+,10)

(D-,10)

(C+,10)

(F+,10)

Page 43: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

Effacerles marques

A1

D6

G10

J12

B5

E7

H9

C4

F8

I9

5, 20, 2, 20

10, 20, 1, 10

5, 20, 1, 10

5, 30, 1, 5

0, 60, 4, 0

0, 90, 5a, 25

5, 20, 3, 20

0, 10, 2, 0

0, 10, 1, 10

0, 10, 2, 0

0, 40, 2, 0

0, 70, 3, 10

0, 10, 2, 10

0, 40, 2, 25

0, 15, 4, 10

0, 20, 1, 10

5, 30, 1, 30

0, 30, 2, 30

0, 50, 2, 35

Page 44: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

Choisirun a-arc :

(H, J).

A1

D6

G10

J12

B5

E7

H9

C4

F8

I9

5, 20, 2, 20

10, 20, 1, 10

5, 20, 1, 10

5, 30, 1, 5

0, 60, 4, 0

0, 90, 5a, 25

5, 20, 3, 20

0, 10, 2, 0

0, 10, 1, 10

0, 10, 2, 0

0, 40, 2, 0

0, 70, 3, 10

0, 10, 2, 10

0, 40, 2, 25

0, 15, 4, 10

0, 20, 1, 10

5, 30, 1, 30

0, 30, 2, 30

0, 50, 2, 35

(-,)

(E-,10) (H-,25)

(B+,10)

Page 45: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

On procède donc à l’algorithme de changement de variables duales.

On a : X = {B, D, E, H} et X = {A, C, F, G, I, J}.

D’où, A1 = {(H, J)}

A2 = {(A, B), (A, D)}.

Donc, = min{2, 2, 4} = 2.

On ajoute donc 2 unités à chaque variable duale associée à unsommet non marqué. On a aussi déterminé le nouvel état de chaquearc.

Page 46: Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)

A3

D6

G12

J14

B5

E7

H9

C6

F10

I11

5, 20, 2, 20

10, 20, 1, 10

5, 20, 1, 10

5, 30, 1, 5

0, 60, 4, 0

0, 90, 5, 25

5, 20, 3, 20

0, 10, 2, 0

0, 10, 1, 10

0, 10, 2, 0

0, 40, 2, 0

0, 70, 3, 10

0, 10, 2, 10

0, 40, 2, 25

0, 15, 4, 10

0, 20, 1, 10

5, 30, 1, 30

0, 30, 2, 30

0, 50, 2, 35

Coûtoptimal :

570