Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Problèmes de flots Vincent Mousseau Ecole Centrale Paris, [email protected] January 29, 2009 Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe 1 Réseaux de transports et flots Réseaux de transports Flot, flux Coupe 2 Différents types de problèmes de flot Détermination d’un flot réalisable sur un réseau de transport Détermination d’un flot maximum Détermination d’un flot de coût minimum 3 Recherche d’un flot de valeur maximale Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart 4 Flot de coût minimum Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe 1 Réseaux de transports et flots Réseaux de transports Flot, flux Coupe 2 Différents types de problèmes de flot Détermination d’un flot réalisable sur un réseau de transport Détermination d’un flot maximum Détermination d’un flot de coût minimum 3 Recherche d’un flot de valeur maximale Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart 4 Flot de coût minimum Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe Réseau de transport et flots Définition : un réseau de transport de E à S est un graphe G = (X , U) sans boucle, comporte une racine unique E (appelée entrée ou source) et une antiracine unique S (appelée sortie ou puit), à chaque arc u = (xi , xj ) ∈ U est associé : une capacité notée k(u) (ou k(xi , xj ) ou kij ) représentant la quantité max. de matière pouvant circuler sur u, k(u) ≥ 0, une borne notée b(u) (ou b(xi , xj ) ou bij ) représentant la quantité minimum de matière pouvant circuler sur l’arc u, k(u) ≥ b(u) ≥ 0, un coût unitaire noté c(u) (ou c(xi , xj ) ou cij ) représentant le coût d’acheminement d’une unité de matière sur l’arc u, Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe Réseau de transport Remarque 1 : si G comporte plusieurs racines e1 , e2 , ..., en , on se ramène à un réseau en ajoutant à X un sommet E et à U (E , ei ), ∀i = 1, . . . , n, avec k(E , ei ) = +∞, b(E , ei ) = 0, c(E , ei ) = 0. 1 a b 2 c 3 Vincent Mousseau d Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe Réseau de transport Remarque 1 : si G comporte plusieurs racines e1 , e2 , ..., en , on se ramène à un réseau en ajoutant à X un sommet E et à U (E , ei ), ∀i = 1, . . . , n, avec k(E , ei ) = +∞, b(E , ei ) = 0, c(E , ei ) = 0. 1 ,∞ [0 E a ] [0,∞] [0 ,∞ b 2 c ] 3 Vincent Mousseau d Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe Réseau de transport Remarque 2 : si G n’a pas de racine, 1 a b 2 c 3 Vincent Mousseau d Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe Réseau de transport Remarque 2 : si G n’a pas de racine, on ajoute un sommet E prédécesseur de tous les sommets x t.q. Γ−1 (x) = ∅, k(E , x) = +∞, b(E , x) = 0, c(E , x) = 0. 1 ,∞ [0 E a ] [0,∞] [0 ,∞ b 2 c ] 3 Vincent Mousseau d Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe Réseau de transport Remarque 3 : si G comporte plusieurs antiracines s1 , s2 , ..., sn , 1 ∞ [0, E a ] b [0,∞] [0, ∞ 2 c ] 3 Vincent Mousseau d Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe Réseau de transport Remarque 3 : si G comporte plusieurs antiracines s1 , s2 , ..., sn , on se ramène à un réseau en ajoutant à X un sommet S et à U (si , S), ∀i = 1, . . . , n, avec k(si , S) = +∞, b(si , S) = 0, c(si , S) = 0. 1 ∞ [0, E a [0, ∞ ] b [0,∞] [0, ∞ 2 ] [0,∞ c ] 3 Vincent Mousseau ] [0,∞] ∞ [0, d Problèmes de flots ] S Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe Réseau de transport Remarque 4 : si G n’a pas d’antiracine, 1 ∞ [0, E a ] b [0,∞] [0, ∞ 2 c ] 3 Vincent Mousseau d Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe Réseau de transport Remarque 4 : si G n’a pas d’antiracine, on ajoute un sommet S successeur de tous les sommets x t.q. Γ(x) = ∅, k(x, S) = +∞, b(x, S) = 0, c(x, S) = 0. 1 ,∞ [0 E a [0, ] [0,∞] [0 ,∞ b 2 c ] 3 Vincent Mousseau ∞ ] [0,∞] [0,∞] ] ∞ [0, d Problèmes de flots S Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe Exemple Transport d’un produit d’entrepôts à des clients 3 dépots (1, 2 et 3), quantité en stock : 45, 25 et 25 resp., 4 clients (a, b, c et d), demande : 30, 10, 20 et 30 resp., Les limitations en matière de transport de produit d’un entrepôt à un client sont définies par : 1 2 3 a 10 20 - b 15 5 - c 5 10 d 20 10 Questions : Peut-on satisfaire toutes les demandes ? Si oui, comment? Sinon comment les satisfaire au mieux? Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe Modélisation Remarques : X = {1, 2, 3} ∪ {a, b, c, d} ∪ {E } ∪ {S}, U représente : les possibilités de transport d’un d’entrepôt à un client, les arcs ajoutés pour constituer la racine E et l’antiracine S. le flux représente : le déstockage de produits à un dépôt, le transport de produits d’un dépôt à un client, l’arrivée de produit chez un client. Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe ] [0,10 45] [0, E [0,25] [0, 25] 1 [0,15 ] a ] 20 [0, b [0,5] 2 [0, 30 ] [0,20] [0,5] c ] [0,10 [0,10 ] 0] ,2 [0 3 [0,10] S ] 30 [0, d a r c f l u x | {z } existence d’une disponibilité au dépôt i | {z } existence d’une liaison dépôt i client j | {z } existence d’une demande chez le client j quantité de matière provenant du dépôt i quantité acheminée par la liaison dépôt i client j quantité acheminée au client i On note sur chaque arc u l’intervalle [b(u), k(u)] ainsi que φ(u). Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe Flot, flux La quantité qui transite sur chaque arc u ∈ U s’appelle le flux associé à (ou passant par) l’arc u. On note φ(u), Definition : un flot Φ défini sur un réseau de transport est un vecteur Φ = (φ1 , φ2 , . . . , φm ) avec φi = φ(ui ), i = 1, 2, . . . , m vérifiant la loi de conservation (loi de Kirshhoff), i.e., P P u∈ω − (x) φ(u) = u∈ω + (x) φ(u), ∀x ∈ X \ {E , S} . . . x . . | {z } ω − (x) Vincent Mousseau | {z } ω + (x) Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe Flot, flux Dans certains cas on ajoutera un arc “retour” (S, E ) de sorte que la loi de conservation soit vérifiée ∀x ∈ X , Un flot réalisable (ou compatible) est un flot vérifiant b(u) ≤ φ(u) ≤ k(u), ∀u ∈ U. 0] 0,[0,1 E 45] [0, 20, 25, [0,25] 0,[0,1 5] ] 5, [0,5 2 3 b 5, [0,5 ] ,10] 10, [0 10, [0 ,10] c ] 20 0, ,[ 20 20, [0, 25] 1 a 0] 0,2 ,[ 5 1 15 ,[ 0,3 0] 5, [0,1 0] ,20] 15, [0 0] 0,3 ,[ 0 3 d Figure: exemple de flot réalisable Vincent Mousseau Problèmes de flots S Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe Flot, flux v (Φ), la valeur d’un flot Φ représente la quantité totale de matière P circulant sur le réseau. P Elle est définie par : v (Φ) = u∈ω+ (E ) φ(u) = u∈ω− (S) φ(u) 5 E 2 1 1 0 4 1 3 2 S E 1 5 2 1 0 S 1 3 Le coût d’un flot représente le coût associé au transport de l’ensemble P de la matière sur le réseau, i.e., c(Φ) = u∈U c(u).φ(u), si le coût sur chaque arc des l’exemples est égal à 1, c(Φ1 ) = (2 × 1) + (3 × 1) + (1 × 1) + (1 × 1) + (4 × 1) = 11 c(Φ2 ) = (1 × 1) + (1 × 1) + (5 × 1) + (5 × 1) = 12 Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe Coupe Définition : Soit A ⊂ X , t.q. E ∈ A, S ∈ / A. On appelle coupe engendrée par A (notée ω(A)) l’ensemble des arcs dont une des extrémités appartient à A et l’autre à X \ A, On distingue : ω + (A) = {u ∈ ω(A) t.q. l’extrémité init. de u appartient à A}, ω − (A) = {u ∈ ω(A) t.q. l’extrémité term. de u ∈ A} Exemple : A = {E , 1, 3} ⊂ X . 1 3 E S 2 La coupe engendrée par A est : ω(A) = = 4 ω + (A) ∪ ω − (A) {(e, 2), (1, 2), (3, s)} ∪ {(4, 1), (4, 3)} Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe Coupe Définition : On appelle valeur d’une coupe ω(A) (notée v (ω(A))) la quantité de matière pouvant circuler sur les arcs de la coupe, i.e., P P v (ω(A)) = u∈ω+ (a) k(u) − u∈ω− (a) b(u) Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe Coupe S 0] ,2 [0 Exemple : A = {E , 1, 2, a}, B = {E , 1, b}. a ] [0,10 ] 0 [0, 2 1[0,15 30 [0, ] ] 5] 4 , [0 [0 ,10] b [0,5] [0,25] ] 2 E [0,5] [0,20 [0, 25] ] c ] 30 [0,10 [0, [0,10 3 ] d + − ω(A) = ω (A) ∪ ω (A) v (ω(A)) ω(B) v (ω(B)) = = = = = {(E , 3), (1, b), (1, d), (2, b), (2, c), (a, S)} ∪ ∅ 115 ω + (B) ∪ ω − (B) {(E , 2), (E , 3), (1, a), (1, d), (b, S)} ∪ ∅ 90 Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Réseaux de transports Flot, flux Coupe Coupe Chaque coupe constitue un “goulot d’étranglement” qui limite la valeur du flot. Théorème (relation entre flot et coupe): soit Φ un flot réalisable quelconque, soit un ensemble de sommets A ⊂ X tel que E ∈ A, S ∈ / A, on a : v (Φ) ≤ v (ω(A)) Interprétation : la valeur de tout flot est majorée par la valeur d’une coupe quelconque ; ceci est vrai en particulier pour le flot maximum, La notion de coupe correspond bien à l’idée de goulet d’étranglement. Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Détermination d’un flot réalisable sur un réseau de transport Détermination d’un flot maximum Détermination d’un flot de coût minimum 1 Réseaux de transports et flots Réseaux de transports Flot, flux Coupe 2 Différents types de problèmes de flot Détermination d’un flot réalisable sur un réseau de transport Détermination d’un flot maximum Détermination d’un flot de coût minimum 3 Recherche d’un flot de valeur maximale Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart 4 Flot de coût minimum Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Détermination d’un flot réalisable sur un réseau de transport Détermination d’un flot maximum Détermination d’un flot de coût minimum Différents types de problèmes de flot un flot réalisable est un flot P Φ vérifiant b(u) ≤ φ(u) ≤ k(u), P ∀u ∈ U et u∈ω− (x) φ(u) = u∈ω+ (x) φ(u), ∀x ∈ X \ {E , S}, un réseau de transport n’admet pas nécessairement de flot réalisable, Exemple : ] [0,3 E [0,3 ] 1 [1,2] 3 4] [1, 2 4 [1,3] on a φ(2, 4) ≥ 1 et φ(E , 2) ≤ 3 ⇒ φ(2, 3) ≤ 2 or φ(1, 3) ≤ 2 donc φ(3, S) ≤ 4 ≤ b(3, S) Vincent Mousseau Problèmes de flots [5,7 ] ] [1,3 S Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Détermination d’un flot réalisable sur un réseau de transport Détermination d’un flot maximum Détermination d’un flot de coût minimum Flot réalisable sur un réseau de transport Cas particulier important : si le réseau de transport ne comporte aucune borne (b(u) = 0, ∀u ∈ U) alors il existe toujours un flot réalisable, i.e., le flot nul Φ0 t.q. φ(u) = 0, ∀u ∈ U. Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Détermination d’un flot réalisable sur un réseau de transport Détermination d’un flot maximum Détermination d’un flot de coût minimum Détermination d’un flot maximum Objectif : faire transiter dans le réseau de transport la plus grande quantité de matière, Rechercher parmi tous les flots réalisables, le flot Φ∗ tel que v (Φ∗ ) soit maximale, Ce problème peut s’écrire sous la forme d’un programme linéaire: P max φ(u) + Pu∈ω (E ) P s.c. φ(u) = u∈ω − (x) u∈ω + (x) φ(u), ∀x 6= E , S b(u) ≤ φ(u) ≤ k(u), ∀u ∈ U φ(u) ≥ 0 Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Détermination d’un flot réalisable sur un réseau de transport Détermination d’un flot maximum Détermination d’un flot de coût minimum Détermination d’un flot de coût minimum Objectif : rechercher parmi les flots d’une valeur v donnée, celui (ou ceux) qui minimise(nt) le coût, Ce problème peut s’écrire sous la forme d’un programme linéaire: P min Pu∈U c(u).φ(u) P s.c. u∈ω − (x) φ(u) = u∈ω + (x) φ(u), ∀x 6= E , S b(u) P ≤ φ(u) ≤ k(u), ∀u ∈ U u∈ω + (E ) φ(u) = v φ(u) ≥ 0 Cas particulier : détermination d’un flot maximum à coût minimum (v = v (Φ∗ )) Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Recherche d’un flot de valeur maximale Principe général de l’algorithme de Ford-Fulkerson Principe général : on part d’un flot réalisable (flot nul si b(u) = 0, ∀u ∈ U ) que l’on améliore itérativement, Définitions : un arc u ∈ U est dit saturé si φ(u) = k(u), un flot Φ est dit complet si tout chemin µ de E vers S comporte au moins un arc saturé, Remarque : un flot non complet ne peut pas être maximum Φ maximum ⇒ Φ complet, mais Φ complet ; Φ maximum , Construire un flot complet lors de la première étape de l’algorithme → on part d’un flot complet au lieu de Φ0 , Vincent Mousseau Problèmes de flots Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Construction d’un flot complet Partir d’un flot réalisable (flot nul si b(u) = 0, ∀u ∈ U), Examiner tous les chemins de E à S de façon systématique, Pour chaque chemin µ de E à S, faire passer un flot égal à la capacité résiduelle minimale des arcs de µ. Exemple : 5] [0,4 E a [0,10] [0,25] [0,2 5] 1 [0, 30] 20] [0, [0,15] b [0,5] 2 [0,20] [0,5] [0,10] 3 [0,10] [0 ,2 0] c d Vincent Mousseau [0,10] Problèmes de flots 30] [0, S Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Construction d’un flot complet a [0,10] 5] [0,4 E [0,25] 10, [0,2 5] 1 [0,15] b [0,5] 2 3 [0, 30] 20] [0, [0,20] [0,5] [0,10] 10, [0,1 0] [0 ,2 0] c d E → 3 → d → S : 10 Total : 10 Vincent Mousseau [0,10] Problèmes de flots ] ,30 , [0 10 S Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Construction d’un flot complet a [0,10] 5] [0,4 E [0,25] 10+ 10, [0,2 5] 1 [0, 30] 20] [0, [0,15] [0,5] 2 [0,5] 3 0] 10, [0,1 10, [0,1 0] [0 ,2 0] b [0,10] c 0] 10, [0,2 ] 0 3 , , [0 10 d E → 3 → d → S : 10 E → 3 → c → S : 10 Total : 20 Vincent Mousseau Problèmes de flots S Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Construction d’un flot complet a [0,10] 5] [0,4 E 5, [0,25] 10+ 10, [0,2 5] 1 [0,15] [0,5] 2 3 [0, 30] 20] [0, b [0,10] c [0,20] 10+5, ] ,30 , [0 10 5, [0,5] 0] 10, [0,1 10, [0,1 0] [0 ,2 0] d E → 3 → d → S : 10, E → 3 → c → S : 10 E →2→c →S :5 Total : 25 Vincent Mousseau Problèmes de flots S Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Construction d’un flot complet a [0,10] 5] [0,4 E 5+5, [0,25] 10+ 10, [0,2 5] 1 [0,15] 5, [0,5] 2 3 [0, 30] 20] [0, b 5, [0,1 0] c [0,20] 10+5, ] ,30 , [0 10 5, [0,5] 0] 10, [0,1 10, [0,1 0] [0 ,2 0] d E → 3 → d → S : 10, E → 3 → c → S : 10 E →2→c →S :5 E →2→b→S :5 Total : 30 Vincent Mousseau Problèmes de flots S Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Construction d’un flot complet a [0,10] 5] [0,4 E 5+5+15, [0,25] 10+ 10, [0,2 5] 1 [0,15] ] ,20 , [0 15 2 3 b 5, [0,5] 5, [0,5] 0] 10, [0,1 10, [0,1 0] [0 ,2 0] c 15 , [0 ,30 ] 5, [0,1 0] [0,20] 10+5, ] ,30 , [0 10 d E → 3 → d → S : 10, E → 3 → c → S : 10 E → 2 → c → S : 5, E →2→b→S :5 E → 2 → a → S : 15 Total : 45 Vincent Mousseau Problèmes de flots S Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Construction d’un flot complet a [0,10] E 5] [0,4 20, 5+5+15, [0,25] 10+ 10, [0,2 5] 1 [0,15] ] ,20 , [0 15 b 5, [0,5] 2 5, [0,5] 3 0] 20, 10, [0,1 [0 ,2 0] 10, [0,1 0] c 15 , [0 ,30 ] 5, [0,1 0] [0,20] 10+5, ] ,30 , [0 20 + 10 d E E E E → 3 → d → S : 10, E → 3 → c → S : 10 → 2 → c → S : 5, E →2→b→S :5 → 2 → a → S : 15 → 1 → d → S : 20 Total : 65 Vincent Mousseau Problèmes de flots S Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Construction d’un flot complet a [0,10] E ] 0,45 5, [ 20+ 5+5+15, [0,25] 10+ 10, [0,2 5] 1 5, [0,15 ] 5, [0,5] ] ,20 , [0 15 b 2 5, [0,5] 3 0] 20, 10, [0,1 [0 ,2 0] 10, [0,1 0] c 15 , [0 ,30 ] 5+5, [0 ,10] [0,20] 10+5, ] ,30 , [0 20 + 10 d E E E E → 3 → d → S : 10, E → 3 → c → S : 10 → 2 → c → S : 5, E →2→b→S :5 → 2 → a → S : 15, E → 1 → d → S : 20 →1→b→S :5 Total : 70 Vincent Mousseau Problèmes de flots S Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Construction d’un flot complet 0] 10, [0,1 ] 0,45 0, [ 5+1 E 20+ 5+5+15, [0,25] 10+ 10, [0,2 5] 1 5, [0,15 ] ] 5, [0,5 a ] ,20 , [0 15 b 2 5, [0,5] 3 0] 20, 10, [0,1 [0 ,2 0] 10, [0,1 0] c 15 +1 0, [0, 30] 5+5, [0 ,10] [0,20] 10+5, 30] [0, 0, +2 0 1 d E E E E E → 3 → d → S : 10, E → 3 → c → S : 10 → 2 → c → S : 5, E →2→b→S :5 → 2 → a → S : 15, E → 1 → d → S : 20 →1→b→S :5 → 1 → a → S : 10 Total : 80 Vincent Mousseau Problèmes de flots S Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Flot complet 0] 10, [0,1 E 5] [0,4 35, 25, [0,25] 20, [0,2 5] 1 5, [0,15 ] 5, [0,5] a ] ,20 , [0 15 b 2 5, [0,5] 3 0] 20, 10, [0,1 [0 ,2 0] 10, [0,1 0] c 25 , [0 ,30 ] 10, [0,1 0] 0] 15, [0,2 ] 0 3 , , [0 30 d E E E E → 3 → d → S : 10, E → 3 → c → S : 10 → 2 → c → S : 5, E →2→b→S :5 → 2 → a → S : 15, E → 1 → d → S : 20 → 1 → b → S : 5, E → 1 → a → S : 10 Total : 80 Vincent Mousseau Problèmes de flots S Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Amélioration d’un flot réalisable L’algorithme de Ford-Fulkerson se décompose en deux étapes : procédure de marquage + procédure de changement de flot. 1 : Procédure de marquage début marquer [+] le sommet E répéter - sélectionner un sommet marqué x, - marquer [+] tout sommet y non marqué, extrémité terminale d’un arc (x, y ) non saturé - marquer [-] tout sommet y non marqué, l’extrémité initiale d’un arc (y , x) tel que φ(y , x) > b(y , x) jusqu’à (aucun sommet ne peut e ^tre marqué) ou (S marqué) si S n’est pas marqué alors le flot est maximum sinon le flot peut e ^tre amélioré fin si fin Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart procédure de changement de flot Cette procédure ne s’applique que si S est marqué à l’issue de la procédure de marquage. Soit µ une chaı̂ne de E à S. e Soit xi xi +1 xj xj+1 s µ+ l’ensembles des arcs de la chaı̂ne de type (xi , xi +1 ) “arcs avant”. Soit µ− l’ensembles des arcs de la chaı̂ne de type (xj , xj+1 ) “arcs arrière”. Les arcs de µ+ sont tels qu’il est possible d’augmenter la valeur du flux associé d’une quantité ε+ ≥ 0. Les arcs de µ− sont tels qu’il est possible de diminuer la valeur du flux associé d’une quantité ε− ≥ 0. Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Procédure de changement de flot Une chaı̂ne µ est dite améliorante si ε+ > 0 et ε− > 0. Si on augmente la valeur du flux sur les arcs de µ+ et diminue la valeur du flux d’une même valeur sur les arcs de µ− , la loi de Kirshhoff est préservée en chaque sommet, Procédure de changement de flot (Φ → Φ′ ) : début ε+ ← minu∈µ+ {k(u) − φ(u)} ε− ← minu∈µ− {φ(u) − b(u)} ε ← min{ε+ , ε− } construire Φ′ tel que φ′ (u) ← φ(u) + ε, ∀u ∈ µ+ φ′ (u) ← φ(u) − ε, ∀u ∈ µ− φ′ (u) ← φ(u), ∀u ∈ /µ réappliquer la procédure de marquage fin Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Marquage 0] 10, [0,1 + E 5] [0,4 35, 25, [0,25] 20, [0,2 5] 1 2 3 5, [0,15 ] ] 5, [0,5 a ] ,20 , [0 15 b 5, [0,5] 0] 20, 10, [0,1 [0 ,2 0] 10, [0,1 0] c d Vincent Mousseau Problèmes de flots 25 , [0 ,30 ] 10, [0,1 0] 0] 15, [0,2 ] 0 3 , , [0 30 S Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Marquage + 25, [0,25] 20, [0,2 5] 1 2 + + E 5] [0,4 35, 3 0] 10, [0,1 5, [0,15 ] ] 5, [0,5 a ] ,20 , [0 15 b 5, [0,5] 0] 20, 10, [0,1 [0 ,2 0] 10, [0,1 0] c d Vincent Mousseau Problèmes de flots 25 , [0 ,30 ] 10, [0,1 0] 0] 15, [0,2 ] 0 3 , , [0 30 S Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Marquage 20, [0,2 5] 2 + 25, [0,25] 1 3 5, [0,15 ] ] 5, [0,5 ] ,20 , [0 15 a + + + E 5] [0,4 35, 0] 10, [0,1 b 5, [0,5] 0] 20, 10, [0,1 [0 ,2 0] 10, [0,1 0] c d Vincent Mousseau Problèmes de flots 25 , [0 ,30 ] 10, [0,1 0] 0] 15, [0,2 ] 0 3 , , [0 30 S Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Marquage 2 + 20, [0,2 5] - 25, [0,25] 1 3 5, [0,15 ] ] 5, [0,5 ] ,20 , [0 15 a + + + E 5] [0,4 35, 0] 10, [0,1 b 5, [0,5] 0] 20, 10, [0,1 [0 ,2 0] 10, [0,1 0] c d Vincent Mousseau Problèmes de flots 25 , [0 ,30 ] 10, [0,1 0] 0] 15, [0,2 ] 0 3 , , [0 30 S Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Marquage + 2 + 20, [0,2 5] - 25, [0,25] 1 3 5, [0,15 ] ] 5, [0,5 ] ,20 , [0 15 a + + + E 5] [0,4 35, 0] 10, [0,1 b 5, [0,5] 0] 20, 10, [0,1 [0 ,2 0] 10, [0,1 0] c d Vincent Mousseau Problèmes de flots 25 , [0 ,30 ] 10, [0,1 0] 0] 15, [0,2 ] 0 3 , , [0 30 S Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Marquage + + 20, [0,2 5] 2 3 5, [0,15 ] ] 5, [0,5 a + 25, [0,25] 1 ] ,20 , [0 15 b 5, [0,5] 0] 20, 10, [0,1 [0 ,2 0] 10, [0,1 0] c d Vincent Mousseau Problèmes de flots 25 , [0 ,30 ] 10, [0,1 0] 0] 15, [0,2 ] 0 3 , , [0 30 + + + E 5] [0,4 35, 0] 10, [0,1 S Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart chaı̂ne améliorante + 2 + 20, [0,2 5] 3 5, [0,15 ] 5, [0,5] 5, [0,5] 0] 20, 10, [0,1 [0 ,2 0] 10, [0,1 0] a b c d E →1→b→2→a→S : 5 Vincent Mousseau Problèmes de flots 25 , [0 ,30 ] 10, [0,1 0] 0] 15, [0,2 ] ,30 , [0 30 + + 25, [0,25] 1 ] ,20 , [0 15 + + E 5] [0,4 35, 0] 10, [0,1 S Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Nouveau flot ] 0,45 5, [ 35+ E 25, [0,25] 20, [0,2 5] 1 2 3 0] 10, [0,1 20] [0,15] [0, +5 15 5+5 ] ,5 5-5, [0 5, [0,5] 0] 20, 10, [0,1 [0 ,2 0] 10, [0,1 0] a b c d Vincent Mousseau Problèmes de flots 25 +5 , [0 ,30 ] 10, [0,1 0] 0] 15, [0,2 ] 0 3 , , [0 30 S Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Marquage 0] 10, [0,1 + E 5] [0,4 40, 25, [0,25] 20, [0,2 5] 1 2 3 10, [0,1 5] ] 0, [0,5 a ] ,20 , [0 20 b 5, [0,5] 0] 20, 10, [0,1 [0 ,2 0] 10, [0,1 0] c d Vincent Mousseau Problèmes de flots 30 , [0 ,30 ] 10, [0,1 0] 0] 15, [0,2 ] 0 3 , , [0 30 S Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Marquage + 25, [0,25] 20, [0,2 5] 1 2 + + E 5] [0,4 40, 3 0] 10, [0,1 10, [0,1 5] ] 0, [0,5 a ] ,20 , [0 20 b 5, [0,5] 0] 20, 10, [0,1 [0 ,2 0] 10, [0,1 0] c d Vincent Mousseau Problèmes de flots 30 , [0 ,30 ] 10, [0,1 0] 0] 15, [0,2 ] 0 3 , , [0 30 S Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Marquage + 20, [0,2 5] 2 + 25, [0,25] 1 + 3 10, [0,1 5] 0, [0,5] ] ,20 , [0 20 a + E 5] [0,4 40, 0] 10, [0,1 b 5, [0,5] 0] 20, 10, [0,1 [0 ,2 0] 10, [0,1 0] c d On ne peut plus marquer de sommets, S n’est pas marqué → le flot est maximum. Vincent Mousseau Problèmes de flots 30 , [0 ,30 ] 10, [0,1 0] 0] 15, [0,2 ] 0 3 , , [0 30 S Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Marquage 20, [0,2 5] 2 + 25, [0,25] 1 + 3 10, [0,1 5] 0, [0,5] ] ,20 , [0 20 a + + E 5] [0,4 40, 0] 10, [0,1 b 5, [0,5] 0] 20, 10, [0,1 [0 ,2 0] 10, [0,1 0] c 30 , [0 ,30 ] 10, [0,1 0] 0] 15, [0,2 ] 0 3 , , [0 30 S d On ne peut plus marquer de sommets, S n’est pas marqué → le flot est maximum, v (Φ∗ ) = 85. La coupe de valeur minimale est engendrée par le sous-ensemble A des sommets marqués → v (ω(A∗ )) = 85. Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Justification de l’algorithme Théorème (de Ford-Fulkerson) : La valeur d’un flot maximum est égale à la valeur d’une coupe minimum, Ce théorème traduit le fait que rechercher un flot maximum est équivalent à rechercher une coupe minimum, A la fin de l’algorithme de Ford-Fulkerson, soit A∗ les sommets marqués (E ∈ A∗ , S ∈ / A∗ ), la coupe ω(A∗ ) est de valeur minimale, Lemme 1 : Soit Φ un flot définit sur un réseau de transport (de racine E et d’antiracine S), ∀A ⊂ X t.q. E ∈ A, S ∈ / A, on a : X X v (Φ) = φ(u) − φ(u) u∈ω + (A) u∈ω − (A) i.e.,“la valeur d’un flot peut être déterminée sur toute coupe” Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Preuve P P d’après la loi de Kirshhoff on a : u∈ω + (x) φ(u) = u∈ω − (x) φ(u), ∀x 6= E P P P P d’où : x∈A\{E } u∈ω + (x) φ(u) = x∈A\{E } u∈ω − (x) φ(u) C’est-à-dire P P : P φ(u) − u∈ω + (E ) φ(u) = + x∈A u∈ω P (x) P P x∈A u∈ω − (x) φ(u) − u∈ω − (E ) φ(u), P P or, u∈ω + (E ) φ(u) = v (Φ) et u∈ω − (E ) φ(u) = 0 donc, v (Φ) = = = P x∈A P P u∈ω + (x) (y,z):y∈A,z∈A φ(u) − P φ(y , z) + x∈A P P u∈ω − (x) (y,z):y∈A,z ∈A / φ(u) φ(y , z) P P − φ(y , z) + (y,z):y ∈A,z (y,z):y ∈A,z∈A / / ∈A / φ(y , z) P P u∈ω + (A) φ(u) − u∈ω − (A) φ(u) Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart P Corollaire : v (Φ) = u∈ω− (S) φ(u) Preuve : application du lemme 1 avec A = {S} Lemme 2 (relation fondamentale flot-coupe) : ∀Φ flot réalisable, ∀A ⊂ X t.q. E ∈ A, S ∈ / A, on a : v (Φ) ≤ v (ω(A)) Preuve : d’après le Plemme 1 on a : P v (Φ) = u∈ω+ (A) φ(u) − u∈ω− (A) φ(u), or Φ est réalisable donc b(u) ≤ φ(u) ≤ k(u), ∀u ∈ U, P P d’où + (A) φ(u) ≤ u∈ω P P u∈ω+ (A) k(u) et − u∈ω− (A) φ(u) ≤ − u∈ω− (A) b(u) P P donc v (Φ) ≤ u∈ω + (A) k(u) − u∈ω − (A) b(u) = v (ω(A)) Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Théorème : Si ∃ flot Φ∗ et une coupe engendrée par A∗ tels que v (Φ∗ ) = v (ω(A∗ )), alors Φ∗ est de valeur maximale et la coupe engendrée par A∗ est de valeur minimale. Preuve : d’après le lemme 2, ∀Φ′ un flot réalisable, on a : v (Φ′ ) ≤ v (ω(A∗ )), or v (ω(A∗ )) = v (Φ∗ ) donc v (Φ′ ) ≤ v (Φ∗ ). d’après le lemme 2, ∀A′ ⊂ X t.q. E ∈ A, S ∈ / A, on a : v (ω(A′ )) ≥ v (Φ∗ ), or v (Φ∗ ) = v (ω(A∗ )) donc v (ω(A′ )) ≥ v (ω(A∗ )) Montrons qu’il existe un flot Φ∗ et une coupe engendrée par A∗ tels que v (Φ∗ ) = v (ω(A∗ )), Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart A la fin de l’algorithme de Ford-Fulkerson, on obtient un flot Φff (réalisable par construction) et un ensemble de sommets marqués Aff (avec E ∈ Aff et S ∈ / Aff ), on a: ∀u = (x, y ) ∈ ω + (Aff ), u saturé (i.e. φ(u) = k(u)), sinon on aurait pu marquer + y et donc u = (x, y ) ∈ / ω + (Aff ), − ∀u = (x, y ) ∈ ω (Aff ), φ(u) = b(u), sinon on aurait pu marquer - x et donc u = (x, y ) ∈ / ω − (Aff ), d’après le lemme 1, on P a: P v (Φff ) = u∈ω + (Aff ) φ(u) − u∈ω − (Aff ) φ(u) P P = u∈ω + (Aff ) k(u) − u∈ω − (Aff ) b(u) = v (ω(Aff )) l’algorithme de Ford-Fulkerson fournit permet donc de déterminer un flot de valeur maximum et une coupe de valeur minimum, La preuve du théorème de Ford-Fulkerson est fournit par l’algorithme lui-même. Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Convergence et complexité partant du flot nul Φ0 à chaque étape de l’algorithme (prise en compte d’une chaı̂ne améliorante), le flot est augmenté d’un valeur entière >0 or v (Φ∗ ) ≤ v (ω(A)), ∀A ⊂ X t.q. E ∈ A, S ∈ / A ⇒ il existe un nombre fini de chaı̂nes améliorantes, b(u) et k(u) sont entier ⇒ l’algorithme converge en un nombre fini d’itérations. Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Complexité de l’algorithme de Ford-Fulkerson, nombre d’itérations ≤ v (Φ∗ ) = v (ω + ({E })), à chaque itération, on examine tous les sommets (excepté E ), c’est-à-dire n − 1 sommets examiner un sommet consiste à effectuer un nombre d’opération proportionnel au degré du sommet (pour tester si on peut prolonger une chaı̂ne améliorante), le nombre d’opérations à effectuer à chaque itération est donc borné par la somme des degrés des sommets, i.e., 2m, la complexité est donc de O(m.v (Φ∗ )) ou O(m.v (ω({E }))), or ω({E }) est majoré par n.kmax , où kmax = maxu∈U {k(u)}, donc la complexité est de O(m.n.kmax ) Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Graphe d’écart On peut associer à un réseau de transport G = (X , U) antisymétrique et un flot Φ, un graphe G e (Φ) = (X , U e (Φ)) appelé graphe d’écart. U e (Φ) est défini par : à tout arc (x, y ) ∈ U tel que b(u) < φ(u) < k(u), on associe : un arc (x, y ) ∈ U e (Φ) t.q. k e (x, y ) = k(u) − φ(u) et c e (x, y ) = c(u), un arc (y , x) ∈ U e (Φ) t.q. k e (x, y ) = φ(u) − b(u) et c e (y , x) = −c(u), à tout arc (x, y ) ∈ U tel que φ(u) = k(u), on associe un arc (y , x) ∈ U e (Φ) t.q. k e (x, y ) = φ(u) − b(u) et c e (y , x) = −c(u), à tout arc (x, y ) ∈ U tel que φ(u) = b(u), on associe un arc (x, y ) ∈ U e (Φ) t.q. k e (x, y ) = k(u) − φ(u) et c e (x, y ) = c(u), Vincent Mousseau Problèmes de flots Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Graphe d’écart Dans le graphe G e (Φ) = (X , U e (Φ)), tout chemine de E à S représente une chaı̂ne améliorante , Considérons le flot Φ correspondant au flot complet déterminé au §3.2. le graphe G e (Φ) est le suivant. On retrouve la chaı̂ne améliorante E 1b2aS 1 ] [10 E ] [35 [25] a ] [15 [5] 2 b [5] [5] [15] c [10] 3 [10] [5] [25 ] [10] d Vincent Mousseau [5] ] [30 0] [2 [20 ] [5] [10] ] [10] [5 Problèmes de flots S Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Changement de flot avec G e (Φ) Soit µe un chemin de E à S dans G e (Φ) et µ la chaı̂ne correspondante (concept non-orienté) dans G , Soit δ = Minu∈µe k e (u), On peut obtenir un flot réalisable Φ′ en faisant varier les flux sur les arcs de G comme suit : ∀u ∈ µ t.q. l’arc correspondant dans µe a la même orientation : φ′ (u) = φ(u) + ε (ε ≤ δ), ∀u ∈ µ pour lequel l’arc correspondant dans µe a l’orientation inverse : φ′ (u) = φ(u) − ε (ε ≤ δ), ∀u ∈ / µ, φ′ (u) = φ(u) Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Principe général de l’algorithme de Ford-Fulkerson Construction d’un flot complet Amélioration d’un flot réalisable Justification de l’algorithme, convergence et complexité Graphe d’écart Changement de flot avec G e (Φ) Φ est un flot (loi de Kirshhoff préservée) réalisable (ε ≤ δ), En appliquant la procédure à un chemin de E à S, on augmente la valeur du flot Φ de ε, En appliquant la procédure à un circuit, onP ne modifie pas la valeur du flot mais on a : c(Φ′ ) = c(Φ) + u∈µe c e (u).ε, Exemple : circuit 1b2a1, δ = min{10, 5, 10, 10} = 5 ajouter 5 à φ(1, b), retirer 5 à φ(2, b), ajouter 5 à φ(2, a), retirer 5 à φ(1, a), Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Flot de coût minimum Soit un réseau de transport G = (X , U) sur lequel sont associés à chaque arc u ∈ U, b(u) (borne), k(u) (capacité) et c(u) (coût unitaire), Le problème consiste à déterminer parmi les flots réalisables de valeur v , un flot de coût minimum, Formulation en Programmation Linéaire : P min Pu∈U c(u).φ(u) P s.c. u∈ω − (x) φ(u) = u∈ω + (x) φ(u), ∀x 6= E , S b(u) ≤ φ(u) ≤ k(u), ∀u ∈U P c(u).φ(u) = v + u∈ω (E ) φ(u) ≥ 0, ∀u ∈ U Les variables du PL sont φ(u), ∀u ∈ U, les deux premières contraintes assurent que le flot est réalisable, Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Flot de coût minimum Théorème : Φ, un flot de valeur v , est de coût minimum ssi G e (Φ) ne contient pas de circuit de valeur négative au sens des coûts, Algorithme de construction d’un flot de valeur v et de coût minimum : début construire un flot Φ de valeur v de co^ ut k répéter - construire G e (Φ), - si ∃µ un circuit de valeur kµ < 0 dans G e (Φ), alors construire Φ′ en appliquant la procédure de changement de flot sur µ avec ε = δ Finsi - le flot′ Φ′ est de valeur v ′ = v et de co^ ut k = k − δ.kµ jusqu’à ∄µ circuit de valeur négative dans G e (Φ) fin Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Flot de coût minimum On peut appliquer différents algorithmes pour la détection de circuits de valeur négative (Bellman-Kalaba, Floyd,...). Problème : A partir d’un flot Φ de valeur v (v < v (Φ∗ )) et de coût minimum, comment déterminer un flot Φ′ de valeur v ′ > v et de coût minimum ? Théorème : Soit Φ un flot de valeur v (v < v (Φ∗ )) et de coût minimum, soit µe un chemin de coût minimum de E à S dans G e (Φ). On obtient un flot Φ′ de valeur v ′ > v et de coût minimum en appliquant la procédure de changement de flot sur µe . Algorithme de construction d’un flot Φ′ de valeur v ′ > v et de coût minimum à partir d’un flot Φ de valeur v et de coût minimum : Vincent Mousseau Problèmes de flots Réseaux de transports et flots Différents types de problèmes de flot Recherche d’un flot de valeur maximale Flot de coût minimum Flot de coût minimum début - soit Φ un flot de co^ ut minimum parmi les flots de valeur v - construire G e (Φ), - choisir dans G e (Φ) un chemin µe de E à S minimal au sens des co^ uts ′ - construire Φ en appliquant la procédure de changement de flot en utilisant avec ε = δ fin Problème : pour appliquer l’algorithme, il faut disposer d’un flot de coût minimum. On peut soit appliquer l’algorithme précédent, soit considérer le flot nul. Vincent Mousseau Problèmes de flots