Licence d’Informatique Algorithmique des graphes Flots sur les réseaux de transport
Flots sur les réseaux de transport Exemple : problème d’approvisionnement Sites fournisseurs A1 A2 An ... Quantités disponibles a1 a2 an ... Sites demandeurs B1 B2 Bp ... Quantités demandées b1 b2 bp ...
(quantité maximum qui peut Sites fournisseurs A1 A2 ... An Quantités disponibles a1 a2 an ... Sites demandeurs B1 B2 ... Bp Quantités demandées b1 b2 bp ... Réseau d’acheminement : graphe Contraintes d’acheminement : capacités A1 A2 An B1 B2 Bp (quantité maximum qui peut emprunter l’arc) c
Réseau d’acheminement : graphe Sites fournisseurs A1 A2 ... An a1 a2 ... an Quantités disponibles Sites demandeurs B1 B2 ... Bp b1 b2 ... bp Quantités demandées Réseau d’acheminement : graphe Prise en compte des données ai et bj A1 A2 An B1 B2 Bp a1 b1 a2 e b2 s an c bp
Réseau de transport G = ( X {e} {s}, G, c) A1 A2 An B1 B2 Bp a1 b1
Flot sur un réseau de transport Conditions de conservation du flux en chaque nœud e, s Fonction : G N x E(x) S(x) A1 A2 An B1 B2 Bp a1 b1 a2 e b2 s an c bp
Flot sur un réseau de transport Conditions de conservation du flux en chaque nœud e, s Fonction : G N E(x) = S(x) Compatible: Valeur du flot : A1 A2 An B1 B2 Bp a1 b1 a2 e b2 s an c bp
Flot sur un réseau de transport Conditions de conservation du flux en chaque nœud e, s Fonction : G N E(x) = S(x) Compatible: Valeur du flot : A1 B1 a1 b1 A2 B2 a2 e b2 s Un flot compatible représente un approvisionnement possible an c bp An Bp
Exemple Un flot compatible représente un approvisionnement possible 1 2 3 4 5 6 s Flot de valeur 5 1 4 2 2 2 2 e 2 5 s 2 2 3 6 1 Un flot compatible représente un approvisionnement possible
Flot sur un réseau de transport Conditions de conservation du flux en chaque nœud e, s Fonction : G N E(x) = S(x) Compatible: Valeur du flot : Problème : calculer un flot - compatible - de valeur maximale Un flot compatible représente un approvisionnement possible
Résultats fondamentaux Proposition 1 (théorème des flux) e s A
Résultats fondamentaux Proposition 1 (théorème des flux) Démonstration de i) y A z x
Résultats fondamentaux Proposition 1 (théorème des flux) Démonstration de i)
Résultats fondamentaux Proposition 1 (théorème des flux) Démonstration de i)
Résultats fondamentaux Proposition 1 (théorème des flux) Démonstration de i) Arcs « internes » x A y z x
Résultats fondamentaux Proposition 1 (théorème des flux) Démonstration de i)
Résultats fondamentaux Proposition 1 (théorème des flux) Démonstration de ii) A e A ’=A-{e} Sort de A’ (et donc de A) Sort de A, mais pas de A’
Résultats fondamentaux Proposition 1 (théorème des flux) Démonstration de ii) A e A ’=A-{e} Entre dans A’ , mais pas dans A Entre dans A’ (et donc dans A)
Résultats fondamentaux Proposition 1 (théorème des flux) Démonstration de ii)
Résultats fondamentaux Proposition 1 (théorème des flux) Démonstration de ii)
Résultats fondamentaux Notion de coupe Tout chemin de e à s emprunte au moins un arc de la coupe e s A L’ensemble des arcs sortant de A, noté GS(A), constitue une coupe du réseau.
Résultats fondamentaux Notion de coupe Tout chemin de e à s emprunte au moins un arc de la coupe e s A La suppression des arcs d ’une coupe déconnecte le réseau L’ensemble des arcs sortant de A, noté GS(A), constitue une coupe du réseau.
Résultats fondamentaux Lemme de Ford-Fulkerson Démonstration
Résultats fondamentaux Lemme de Ford-Fulkerson Interprétation concrète e s Tout chemin de e à s emprunte au moins un arc de la coupe A Toute coupe constitue une « limitation » du flux sortant de A
Résultats fondamentaux Lemme de Ford-Fulkerson DUALITÉ : Si on trouve un couple , A tel que alors: est de valeur maximum, et GS(A) est de capacité minimum (goulot d’étranglement)
Algorithme de Ford-Fulkerson Invariant : est un flot compatible, A est un ensemble de sommets « marqués », avec e A (procédure marquage()) Arrêt : s A GS(A) est une coupe de capacité minimum, et est un flot compatible de valeur maximum Progression : amélioration de (procédure amélioration(, A))
Exemple Construction d’un flot compatible initial 1 1 4 2 1 1 2 2 2 e 5 s 2 2 3 6 1
Exemple Construction d’un flot compatible initial 1 1 4 2 2 1 1 1 2 2 5 s 2 2 3 6 1
Exemple Construction d’un flot compatible initial 1 1 4 2 2 1 1 1 2 2 5 s 2 2 3 6 1
Exemple Construction d’un flot compatible initial 1 1 4 2 2 1 1 1 2 2 5 s 2 2 3 6 1
Exemple Construction d’un flot compatible initial 1 1 4 2 2 1 1 1 2 2 5 s 2 1 1 2 3 6 1 1
Exemple Flot de valeur 5 Construction d’un flot compatible initial 1 1 4 2 2 1 2 2 1 2 2 1 2 2 e 2 5 s 2 1 1 2 3 6 1 Flot de valeur 5 1
Exemple Mais : Flot de valeur 5 1 Construction d’un flot compatible initial 1 1 4 2 2 1 2 2 1 2 2 1 2 2 e 2 5 s 2 1 1 2 3 6 1 Flot de valeur 5 Ce flot est complet : tout chemin est saturé Mais : Est-il de valeur maximale?
Exemple 1. Le sommet e est « marqué » Comment essayer d’augmenter la valeur de ce flot ? 1 1 4 2 2 1 2 2 1 2 2 1 2 2 e 2 5 s + +3 2 1 1 2 3 6 +e 1 1. Le sommet e est « marqué » 3. L’unité peut repartir vers 5 (marqué +3) 2. Une nouvelle unité peut partir de e vers 3 (marqué +e)
Exemple Comment cette unité peut-elle repartir de 5? 1 Comment essayer d ’augmenter la valeur de ce flot ? -5 1 1 4 2 2 1 2 2 1 2 2 1 2 2 e 2 5 s + +3 2 1 1 2 3 6 +e 1 Comment cette unité peut-elle repartir de 5? Pas en allant vers s (l’arc (5,s) est saturé) Mais en diminuant le flux d’entrée depuis 1 ou 2 1 et 2 sont marqués -5
Exemple 1 Comment essayer d ’augmenter la valeur de ce flot ? -5 1 1 4 2 2 1 2 2 1 2 2 1 2 2 e 2 5 s + +3 2 1 1 2 3 6 +e 1 Si 2 diminue son flux vers 5, il peut compenser en augmentant vers 6 Si 1 diminue son flux vers 5, pas de rééquilibrage possible Mais en diminuant le flux d’entrée depuis 1 ou 2 1 et 2 sont marqués -5
Exemple 1 Comment essayer d ’augmenter la valeur de ce flot ? -5 1 1 4 2 2 1 2 2 1 2 2 1 2 2 e 2 5 s + +3 2 1 1 2 3 6 +e 1 +2 Si 2 diminue son flux vers 5, il peut compenser en augmentant vers 6 Si 1 diminue son flux vers 5, pas de rééquilibrage possible 6 est marqué +2
Exemple L ’unité arrivant en 6 peut repartir vers s s est marqué +6 1 Comment essayer d ’augmenter la valeur de ce flot ? -5 1 1 4 2 2 1 2 2 1 2 2 1 2 2 e 2 5 s + +3 +6 2 1 1 2 3 6 +e 1 +2 L ’unité arrivant en 6 peut repartir vers s s est marqué +6 ON PEUT DONC AUGMENTER LA VALEUR DE CE FLOT
Algorithme de Ford-Fulkerson Procédure de marquage e est marqué (+) Soit x marqué marquer (+x) tout successeur y non marqué tel que (x,y) est non saturé (x,y)<c(x,y) marquer (-x) tout prédécesseur z non marqué tel que (z,x) est chargé (z,x)>0 Arrêt lorsque: s est marqué flot non maximum, ou plus de sommet à marquer flot maximum
Procédure d’amélioration (-5) 1 1 4 2 2 1 2 2 1 2 2 1 2 2 e 2 5 s (-5) (+3) (+) (+6) 2 1 1 2 3 6 (+e) 1 (+2) 1 e 3 5 2 6 s +1 +1 -1 +1 +1
Procédure d’amélioration 1 1 4 2 2 1 2 2 1 2 2 1 2 2 e 2 5 s 1 2 1 1 2 2 3 6 1 1 e 3 5 2 6 s +1 +1 -1 +1 +1
Procédure d’amélioration 1 1 4 2 2 1 2 2 1 2 2 1 2 2 e 2 5 s 1 2 1 1 1 2 2 2 3 6 1 1 e 3 5 2 6 s +1 +1 -1 +1 +1
Flot de valeur 6 Procédure d’amélioration 1 1 4 2 2 1 2 2 1 2 2 1 2 2 2 2 e 2 5 s 1 2 1 1 1 2 2 2 3 6 1 Flot de valeur 6 1 e 3 5 2 6 s +1 +1 -1 +1 +1