La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)"— Transcription de la présentation:

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

2 Le problème à une source et une destination avec des bornes inférieures
et supérieures sur les arcs et avec une valeur de flot v fixée à l’avance s’énonce comme suit : Min  c(x, y) f(x, y) (x, y)  A v si x = s  f(x, y) -  f(y, x) = 0 si x  {s, p} {y  N | (x, y)  A} -v si x = p {y  N | (y, x)  A} 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 la dualité en programmation linéaire.

3 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.

4 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é soit remplie 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

5 On constate que la condition de complémentarité est satisfaite par
les  - arcs, les  - arcs et les  - arcs tandis qu’elle ne l’est pas par les a - arcs et les b - arcs. Évidemment, si la condition de complémentarité est satisfaite par tous 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 les a-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 sur l’arc à sa borne inférieure. a - arc changement de la Augmenter si possible la valeur variable duale de (y) - (x) à c(x, y). b - arc changement de flot Augmenter si possible le flot sur l’arc à sa borne supérieure. b - arc changement de la Diminuer si possible la valeur variable duale. de (y) - (x) à c(x, y).

6 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édier des 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édier des 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 arc vérifiant la condition de complémentarité ne cesse de le faire.

7 Voici un résumé des modifications de flot possibles :
État Type de changement de flot permis - arc admissible pour augmentation ou diminution (tout en respectant 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îne d’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.

8 Si une chaîne d’augmentation existe, il faudra modifier le flot en
conséquence sans oublier la modification sur l’arc (x, y). Autrement, il nous faut modifier les variables duales afin d’augmenter le niveau de satisfaction à la condition de complémentarité.

9 Algorithme de marquage
Soient 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’augmentation de i à j. 0. S’il n’existe pas de tels arcs, c’est terminé, le flot est optimal. Tous les sommets sont non marqués sauf i. Le sommet i est marqué (-, d(i) = ) et non encore examiné. 1. Choisir n’importe quel sommet r marqué (z, d(r)) et non encore examiné. 2. Si t est un sommet non marqué tel que (r, t)  A est un -arc ou 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)}.

10 Si t est un sommet non marqué tel que (t,r)  A est un -arc
ou 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 encore examinés. 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 et non 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. 3.

11 Algorithme de réaménagement du flot
(i, j) est un a-arc. 1. Posons  = min{d(j), f(i, j) – L(i, j)} f(i, j) = f(i, j) -  (j, i) est un b-arc. Posons  = min{d(j), K(j, i) – f(j, i)} f(j, i) = f(j, i) +  Si j est marqué (t+, d(j)), poser f(t, j) = f(t, j) + , (t-, d(j)), poser f(j, t) = f(j, t) - . 2. 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 suite jusqu’à ce que le réaménagement du flot atteigne la source i.

12 Lorsque la source i est atteinte, déterminer l’état de chaque arc et
constater qu’il est le même ou meilleur qu’il était au sens d’une meilleure satisfaction à la condition de complémentarité. 3. 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.

13 2ième cas : changement des variables duales.
Soient X l’ensemble des sommets marqués et X = 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.

14 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)

15 B 0, 10, 2 E 0, 40, 2 H 5, 20, 2 10, 20, 1 5, 20, 1 5, 30, 1 0, 60, 4 0, 90, 5 A D G J 5, 30, 1 0, 30, 2 0, 50, 2 5, 20, 3 0, 10, 2 0, 10, 1 0, 10, 2 0, 40, 2 0, 70, 3 C F I 0, 15, 4 0, 20, 1

16 Flot maximum B 0, 10, 2 , 10 E 0, 40, 2 , 40 H 5, 20, 2 , 20 10, 20, 1 , 10 5, 20, 1 , 20 5, 30, 1 , 10 0, 60, 4 , 0 0, 90, 5 , 40 A D G J 5, 30, 1 , 30 0, 30, 2 , 30 0, 50, 2 , 30 5, 20, 3 , 20 0, 10, 2 , 10 0, 10, 1 , 10 0, 10, 2 , 0 0, 40, 2 , 0 0, 70, 3 , 0 C F I 0, 15, 4 , 0 0, 20, 1 , 0

17 Variables duales État de chaque arc B 2 0, 10, 2 , 10 E 4 0, 40, 2 , 40 H 6 5, 20, 2 , 20 10, 20, 1 , 10 5, 20, 1 , 20 5, 30, 1 , 10 0, 60, 4 , 0 0, 90, 5 a, 40 A D 1 G 3 J 8 5, 30, 1 , 30 0, 30, 2 , 30 0, 50, 2 b, 30 5, 20, 3 , 20 0, 10, 2 a, 10 0, 10, 1 a, 10 0, 10, 2 b, 0 0, 40, 2 , 0 0, 70, 3 , 0 C 3 F 7 I 5 0, 15, 4 , 0 0, 20, 1 , 0

18 Choisir un a-arc : (C, D). B 2 0, 10, 2 , 10 E 4 0, 40, 2 , 40 H 6
Il faut diminuer f(C, D). A L G . D E M A R Q U A G E 5, 20, 2 , 20 10, 20, 1 , 10 5, 20, 1 , 20 5, 30, 1 , 10 0, 60, 4 , 0 0, 90, 5 a, 40 (C-,15) A D 1 G 3 J 8 5, 30, 1 , 30 0, 30, 2 , 30 0, 50, 2 b, 30 5, 20, 3 , 20 0, 10, 2 a, 10 0, 10, 1 a, 10 0, 10, 2 b, 0 0, 40, 2 , 0 0, 70, 3 , 0 (C+,15) D n’est pas atteint. C 3 F 7 I 5 0, 15, 4 , 0 0, 20, 1 , 0 (-,)

19 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 à un sommet non marqué. On a aussi déterminé le nouvel état.

20 Choisir de nouveau un a-arc : (C, D). B 3 0, 10, 2 , 10 E 5 0, 40, 2
, 40 H 7 Il faut diminuer f(C, D). A L G . D E M A R Q U A G E 5, 20, 2 , 20 10, 20, 1 , 10 5, 20, 1 , 20 5, 30, 1 , 10 0, 60, 4 , 0 0, 90, 5 a, 40 (C-,15) A D 2 G 4 J 9 5, 30, 1 , 30 0, 30, 2 , 30 0, 50, 2 b, 30 5, 20, 3 , 20 0, 10, 2 a, 10 0, 10, 1 , 10 0, 10, 2 b, 0 0, 40, 2 , 0 0, 70, 3 , 0 (C+,15) D n’est pas atteint. C 3 F 7 I 6 0, 15, 4 , 0 0, 20, 1 , 0 (-,)

21 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 à un sommet non marqué. On a aussi déterminé le nouvel état de chaque arc.

22 Choisir de nouveau un a-arc : (C, D). B 4 0, 10, 2 , 10 E 6 0, 40, 2
, 40 H 8 Il faut diminuer f(C, D). A L G . D E M A R Q U A G E 5, 20, 2 , 20 10, 20, 1 , 10 5, 20, 1 , 20 5, 30, 1 , 10 0, 60, 4 , 0 0, 90, 5 a, 40 (C-,15) A D 3 G 5 J 10 5, 30, 1 , 30 0, 30, 2 , 30 0, 50, 2 b, 30 5, 20, 3 , 20 0, 10, 2 a, 10 0, 10, 1 , 10 0, 10, 2 , 0 0, 40, 2 , 0 0, 70, 3 , 0 (C+,15) D n’est pas atteint. C 3 F 7 I 7 0, 15, 4 , 0 0, 20, 1 , 0 (-,)

23 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 à un sommet non marqué. On a aussi déterminé le nouvel état de chaque arc.

24 Choisir de nouveau un a-arc : (C, D). B 5 0, 10, 2 , 10 E 7 0, 40, 2
, 40 H 9 (J-,15) (E-,10) (H-,15) A L G . D E M A R Q U A G E 5, 20, 2 , 20 10, 20, 1 , 10 5, 20, 1 , 20 5, 30, 1 , 10 0, 60, 4 , 0 0, 90, 5 a, 40 (G-,5) (E-,5) (I+,15) (C-,15) A D 4 G 6 J 11 5, 30, 1 , 30 0, 30, 2 , 30 0, 50, 2 b, 30 5, 20, 3 , 20 0, 10, 2 a, 10 0, 10, 1 , 10 0, 10, 2 , 0 0, 40, 2 , 0 0, 70, 3 , 0 (C+,15) (F+,15) C 3 F 7 I 8 0, 15, 4 , 0 0, 20, 1 , 0 (-,)

25 Appliquons l’algorithme de réaménagement du flot.
(C, D) est un a-arc. Posons  = min{d(D), f(C, D) – L(C, D)} = 5 f(C, D) = f(C, D) – 5. Ré-acheminement du flot. Lorsque la source C est atteinte, déterminer l’état de chaque arc.

26 B 5 0, 10, 2 , 10 E 7 0, 40, 2 , 35 H 9 (J-,15) (E-,10) (H-,15) 5, 20, 2 , 20 10, 20, 1 , 10 5, 20, 1 , 20 5, 30, 1 , 5 0, 60, 4 , 0 0, 90, 5 a, 35 (G-,5) (E-,5) (I+,15) (C-,15) A D 4 G 6 J 11 5, 30, 1 , 30 0, 30, 2 , 25 0, 50, 2 b, 30 5, 20, 3 , 20 0, 10, 2 a, 5 0, 10, 1 , 10 0, 10, 2 , 0 0, 40, 2 , 0 0, 70, 3 , 5 (C+,15) (F+,15) C 3 F 7 I 8 0, 15, 4 , 5 0, 20, 1 , 5 (-,)

27 Déterminer l’état de chaque arc Effacer les marques B 5 0, 10, 2 , 10 E 7 0, 40, 2 , 35 H 9 5, 20, 2 , 20 10, 20, 1 , 10 5, 20, 1 , 20 5, 30, 1 , 5 0, 60, 4 , 0 0, 90, 5 a, 35 A D 4 G 6 J 11 5, 30, 1 , 30 0, 30, 2 , 25 0, 50, 2 b, 30 5, 20, 3 , 20 0, 10, 2 a, 5 0, 10, 1 , 10 0, 10, 2 , 0 0, 40, 2 , 0 0, 70, 3 , 5 C 3 F 7 I 8 0, 15, 4 , 5 0, 20, 1 , 5

28 Choisir de nouveau un a-arc : (C, D). B 5 0, 10, 2 , 10 E 7 0, 40, 2
, 35 H 9 (J-,10) (E-,10) (H-,10) A L G . D E M A R Q U A G E 5, 20, 2 , 20 10, 20, 1 , 10 5, 20, 1 , 20 5, 30, 1 , 5 0, 60, 4 , 0 0, 90, 5 a, 35 (C-,15) (I+,10) A D 4 G 6 J 11 5, 30, 1 , 30 0, 30, 2 , 25 0, 50, 2 b, 30 5, 20, 3 , 20 0, 10, 2 a, 5 0, 10, 1 , 10 0, 10, 2 , 0 0, 40, 2 , 0 0, 70, 3 , 5 (C+,10) (F+,10) C 3 F 7 I 8 0, 15, 4 , 5 0, 20, 1 , 5 (-,)

29 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 à un sommet non marqué. On a aussi déterminé le nouvel état de chaque arc.

30 Choisir un b-arc : (G, J). B 5 0, 10, 2 , 10 E 7 0, 40, 2 , 35 H 9
Il faut augmenter f(G, J). (E-,10) (H-,35) (J-,35) A L G . D E M A R Q U A G E 5, 20, 2 , 20 10, 20, 1 , 10 5, 20, 1 , 20 5, 30, 1 , 5 0, 60, 4 , 0 0, 90, 5 a, 35 (-,) (C-,5) (C+,5) (D+,5) A D 5 G 7 J 11 5, 30, 1 , 30 0, 30, 2 , 25 0, 50, 2 b, 30 5, 20, 3 , 20 0, 10, 2 , 5 0, 10, 1 , 10 0, 10, 2 , 0 0, 40, 2 , 0 0, 70, 3 , 5 (I-,5) C 3 F 7 I 8 0, 15, 4 , 5 0, 20, 1 , 5 (J-,5) (F-,5)

31 Appliquons l’algorithme de réaménagement du flot.
(G, J) est un b-arc. Posons  = min{d(G), K(G, J) – f(G, J)} = 5 f(G, J) = f(G, J) + 5. Ré-acheminement du flot. Lorsque la source J est atteinte, déterminer l’état de chaque arc.

32 B 5 0, 10, 2 , 10 E 7 0, 40, 2 , 35 H 9 (E-,10) (H-,35) (J-,35) 5, 20, 2 , 20 10, 20, 1 , 10 5, 20, 1 , 20 5, 30, 1 , 5 0, 60, 4 , 0 0, 90, 5 a, 35 (-,) (C-,5) (C+,5) (D+,5) A D 5 G 7 J 11 5, 30, 1 , 30 0, 30, 2 , 30 0, 50, 2 b, 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 (I-,5) C 3 F 7 I 8 0, 15, 4 , 0 0, 20, 1 , 0 (J-,5) (F-,5)

33 Effacer les marques B 5 0, 10, 2 , 10 E 7 0, 40, 2 , 35 H 9 5, 20, 2 , 20 10, 20, 1 , 10 5, 20, 1 , 20 5, 30, 1 , 5 0, 60, 4 , 0 0, 90, 5 a, 35 A D 5 G 7 J 11 5, 30, 1 , 30 0, 30, 2 , 30 0, 50, 2 b, 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 C 3 F 7 I 8 0, 15, 4 , 0 0, 20, 1 , 0

34 Choisir un b-arc : (G, J). B 5 0, 10, 2 , 10 E 7 0, 40, 2 , 35 H 9 (E-,10) (H-,35) (J-,35) 5, 20, 2 , 20 10, 20, 1 , 10 5, 20, 1 , 20 5, 30, 1 , 5 0, 60, 4 , 0 0, 90, 5 a, 35 (-,) A D 5 G 7 J 11 5, 30, 1 , 30 0, 30, 2 , 30 0, 50, 2 b, 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 C 3 F 7 I 8 0, 15, 4 , 0 0, 20, 1 , 0

35 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 à un sommet non marqué. On a aussi déterminé le nouvel état de chaque arc.

36 Choisir un b-arc : (G, J). Choisir un b-arc : (G, J). B 5 0, 10, 2
, 10 E 7 0, 40, 2 , 35 H 9 (E-,10) (H-,35) (J-,35) A L G . D E M A R Q U A G E 5, 20, 2 , 20 10, 20, 1 , 10 5, 20, 1 , 20 5, 30, 1 , 5 0, 60, 4 , 0 0, 90, 5 a, 35 (-,) A 1 D 6 G 8 J 11 5, 30, 1 , 30 0, 30, 2 , 30 0, 50, 2 b, 35 (C-,10) (E-,15) 5, 20, 3 , 20 0, 10, 2 , 10 0, 10, 1 , 10 0, 10, 2 , 0 0, 40, 2 , 0 0, 70, 3 , 0 (C+,10) C 4 F 8 I 9 0, 15, 4 , 0 0, 20, 1 , 0 (F+,10) (D-,10)

37 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 à un sommet non marqué. On a aussi déterminé le nouvel état de chaque arc.

38 Choisir un a-arc : (H, J). B 5 E 7 H 9 A 1 D 6 G 9 J 11 C 4 F 8 I 9
0, 10, 2 , 10 E 7 0, 40, 2 , 35 H 9 (-,) (E-,10) (H-,35) A L G . D E M A R Q U A G E 5, 20, 2 , 20 10, 20, 1 , 10 5, 20, 1 , 20 5, 30, 1 , 5 0, 60, 4 , 0 0, 90, 5 a, 35 A 1 D 6 G 9 J 11 5, 30, 1 , 30 0, 30, 2 , 30 0, 50, 2 , 35 (C-,10) (E-,15) 5, 20, 3 , 20 0, 10, 2 , 10 0, 10, 1 , 10 0, 10, 2 , 0 0, 40, 2 , 0 0, 70, 3 , 0 (C+,10) C 4 F 8 I 9 0, 15, 4 , 0 0, 20, 1 , 0 (F+,10) (D-,10)

39 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 à un sommet non marqué. On a aussi déterminé le nouvel état de chaque arc.

40 Choisir un a-arc : (H, J). B 5 E 7 H 9 A 1 D 6 G 10 J 12 C 4 F 8 I 9
0, 10, 2 , 10 E 7 0, 40, 2 , 35 H 9 (-,) (E-,10) (H-,35) A L G . D E M A R Q U A G E 5, 20, 2 , 20 10, 20, 1 , 10 5, 20, 1 , 20 5, 30, 1 , 5 0, 60, 4 , 0 0, 90, 5 a, 35 A 1 D 6 G 10 J 12 5, 30, 1 , 30 0, 30, 2 , 30 0, 50, 2 , 35 (C-,10) (E-,15) (I+,10) 5, 20, 3 , 20 0, 10, 2 , 10 0, 10, 1 , 10 0, 10, 2 , 0 0, 40, 2 , 0 0, 70, 3 , 0 (C+,10) C 4 F 8 I 9 0, 15, 4 , 0 0, 20, 1 , 0 (F+,10) (D-,10)

41 Appliquons l’algorithme de réaménagement du flot.
(H, J) est un a-arc. Posons  = min{d(J), f(H, J) – L(H, J)} = min{10, 35} f(H, J) = f(H, J) - 10. Ré-acheminement du flot. Lorsque la source H est atteinte, déterminer l’état de chaque arc.

42 B 5 0, 10, 2 , 10 E 7 0, 40, 2 , 25 H 9 (-,) (E-,10) (H-,25) 5, 20, 2 , 20 10, 20, 1 , 10 5, 20, 1 , 10 5, 30, 1 , 5 0, 60, 4 , 0 0, 90, 5 a, 25 A 1 D 6 G 10 J 12 5, 30, 1 , 30 0, 30, 2 , 30 0, 50, 2 , 35 (B+,10) 5, 20, 3 , 20 0, 10, 2 , 0 0, 10, 1 , 10 0, 10, 2 , 0 0, 40, 2 , 0 0, 70, 3 , 10 (C+,10) C 4 F 8 I 9 0, 15, 4 , 10 0, 20, 1 , 10 (F+,10) (D-,10)

43 Effacer les marques B 5 0, 10, 2 , 10 E 7 0, 40, 2 , 25 H 9 5, 20, 2 , 20 10, 20, 1 , 10 5, 20, 1 , 10 5, 30, 1 , 5 0, 60, 4 , 0 0, 90, 5 a, 25 A 1 D 6 G 10 J 12 5, 30, 1 , 30 0, 30, 2 , 30 0, 50, 2 , 35 5, 20, 3 , 20 0, 10, 2 , 0 0, 10, 1 , 10 0, 10, 2 , 0 0, 40, 2 , 0 0, 70, 3 , 10 C 4 F 8 I 9 0, 15, 4 , 10 0, 20, 1 , 10

44 Choisir un a-arc : (H, J). B 5 0, 10, 2 , 10 E 7 0, 40, 2 , 25 H 9 (-,) (E-,10) (H-,25) 5, 20, 2 , 20 10, 20, 1 , 10 5, 20, 1 , 10 5, 30, 1 , 5 0, 60, 4 , 0 0, 90, 5 a, 25 A 1 D 6 G 10 J 12 5, 30, 1 , 30 0, 30, 2 , 30 0, 50, 2 , 35 (B+,10) 5, 20, 3 , 20 0, 10, 2 , 0 0, 10, 1 , 10 0, 10, 2 , 0 0, 40, 2 , 0 0, 70, 3 , 10 C 4 F 8 I 9 0, 15, 4 , 10 0, 20, 1 , 10

45 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 à un sommet non marqué. On a aussi déterminé le nouvel état de chaque arc.

46 B 5 0, 10, 2 , 10 E 7 0, 40, 2 , 25 H 9 5, 20, 2 , 20 10, 20, 1 , 10 5, 20, 1 , 10 5, 30, 1 , 5 0, 60, 4 , 0 0, 90, 5 , 25 A 3 D 6 G 12 J 14 5, 30, 1 , 30 0, 30, 2 , 30 0, 50, 2 , 35 5, 20, 3 , 20 0, 10, 2 , 0 0, 10, 1 , 10 0, 10, 2 , 0 0, 40, 2 , 0 0, 70, 3 , 10 Coût optimal : 570 C 6 F 10 I 11 0, 15, 4 , 10 0, 20, 1 , 10


Télécharger ppt "Algorithme "out-of-Kilter " dû à Ford et Fulkerson (1962)"

Présentations similaires


Annonces Google