Théorie des graphes
Plan du cours Que peut-on faire avec la théorie des graphes ? Concepts généraux en théorie des graphes 2. Le problème du plus court chemin 3. Flots et réseaux de transport
3. Flots dans les réseaux PROBLEME DU FLOT MAXIMUM
Recherche de flots maximaux Objectif : Faire transiter la plus grande quantité (informations, marchandises, personnes) d’une source vers une destination au sein d’un réseau. Un réseau avec capacités R = (X,U,C) d’ordre n est un graphe orienté asymétrique* valué dans lequel : -1(x1) = Ø x1 est le sommet entrée (source) (xn) = Ø xn est le sommet sortie (destination) * (xi,xj) U (xj,xi) U (arc à sens unique) Notation : (xi,xj) U : C(xi,xj) = Cij capacité de l’arc (xi,xj)
Exemple de réseau avec capacités b [3] [7] [5] Entrée a [4] d e Sortie [2] [5] [2] c
Définition du flot réalisable Un flot F sur un réseau avec capacités R = (X,U,C) est une valuation de l’ensemble des arcs U. Le flot correspond à la quantité qui transite sur le réseau. Notation : (xi,xj) U : F(xi,xj) = Fij flot sur l’arc (xi,xj) Un flot F sur R = (X,U,C) est réalisable s’il satisfait les contraintes de : Capacité des arcs Le flot sur un arc ne dépasse pas la capacité de cet arc. Conservation du flux (loi de Kirchhoff) La somme des flots entrant dans un sommet est égale à la somme des flots sortant de ce sommet.
Définition du flot maximal La valeur d’un flot F sur R = (X,U,C) correspond à la quantité totale qui transite sur le réseau. La valeur du flot correspond à la somme des flots sortant de l’entrée qui est égale à la somme des flots convergeant vers la sortie (conservation du flux). Un flot F sur R = (X,U,C) est maximal si F est un flot réalisable qui maximise la valeur du flot.
Connaissant les capacités des arcs d'un réseau de transport, le problème du flot maximum consiste à trouver quelle est la quantité maximum de flot qui peut circuler de la source à la destination. L'algorithme le plus connu pour résoudre ce problème est celui de Ford et Fulkerson. Nous verrons l’approche par cette méthode qui consiste à construire un graphe "d'écart" dans lequel on recherche un chemin.
Construction du graphe d’écart Un arc (xi,xj) du réseau R = (X,U,C) est saturé par le flot F si : Fij = Cij (capacité maximale atteinte) Un arc (xi,xj) du réseau R = (X,U,C) est antisaturé par F si : Fij = 0 (flot inexistant) A partir du réseau R = (X,U,C) et d’un flot F, on peut construire le graphe d’écart G = (X,F(U),E) qui traduit les augmentations ou diminutions possibles du flot F dans le réseau. (xi,xj) U : Si Fij < Cij (non saturé) alors (xi,xj) F(U) , Eij = Cij-Fij (augmentation) Si Fij > 0 (non antisaturé) alors (xj,xi) F(U) , Eji = Fij (diminution)
Exemple de graphe d’écart b b 3 [3] 2 5 [7] 3 5 a 2 [4] d a 2 2 d 1 4 [5] 2 [2] 2 4 c c Réseau R = (X,U,C) Graphe d’écart G = (X,F(U),E)
Construction d’un flot maximal Algorithme de Ford-Fulkerson Initialisation du flot F : Fij = 0 (arcs antisaturés) Fin = FAUX Tant que NON Fin Construction du graphe d’écart G = (X,F(U),E) Recherche d’un chemin C dans G depuis l’entrée vers la sortie Si C existe Alors Calcul de l’augmentation Affectation de l’augmentation Sinon Fin = VRAI
ALGORITHME DE FORD-FULKERSON, GRAPHE D'ECART on part d'un flot compatible. Ensuite, on construit un graphe d'écart à partir de ce flot. Ce graphe d'écart représente les modifications de flot possibles sur chaque arc. Sur ce graphe, les noeuds ont exactement la même signification que dans le réseau de transport. Par contre, un arc indiquera de combien il est possible d'augmenter le flot entre deux noeuds. Ainsi, pour un arc u = (x;y), on créera dans le graphe d'écart: un arc de x à y de capacité c'((x;y)) = c(u) - f(u) si c(u) > f(u), un arc de y à x de capacité c'((y;x)) = f(u) si f(u)> 0. Ensuite, dans ce graphe d'écart, on cherchera un chemin de l’entrée à la sortie. Si on n'en trouve pas, le problème est résolu. Sinon, on augmente le flot sur ce chemin. Le flot sera augmenté de la plus petite capacité des arcs du chemin. Autrement dit, le chemin C sera augmenté de: min{c'(u) | u étant sur le chemin C}
Exemple : réseau et graphe d’écart correspondant
(A,B,C,D,F,G) est un chemin pour aller de A à G (A,B,C,D,F,G) est un chemin pour aller de A à G. On peut augmenter le flot de: 2 entre A et B, 3 entre B et C,1 entre C et D,4 entre D et F, 2 entre F et G. On augmentera donc le flot de 1 sur ce chemin, ce qui signifie: augmenter de 1 entre A et B,réduire de 1 entre C et B,augmenter de 1 entre C et D,augmenter de 1 entre D et F,augmenter de 1 entre F et G.
3. Flots dans les réseaux Flot dans un réseau de transport On veut acheminer un produit à partir de 3 entrepôts (1,2,3) vers 4 clients (a,b,c,d) Quantités en stock : 45, 25, 25 Demande des clients : 30,10, 20, 30 Limitations en matière de transport d’un entrepôt à un client 1 2 3 a b d c [0,10] [0,15] [0,20] [0,5] S [0,30] [0,10] [0,20] a b c d 1 10 15 - 20 2 5 3 E [0,45] [0,25]
3. Flots dans les réseaux Exemple de flot 1 2 3 a b d c S [0,10], 10 [0,15], 5 [0,20], 20 [0,20], 15 [0,5], 5 [0,45], 35 [0,25], 25 [0,25], 20 [0,30], 25 [0,30], 30 Valeur du flot = 80 Ce flot est un flot complet, c-à-d, tout chemin de E à S comporte au moins un arc saturé
3. Flots dans les réseaux Problèmes Détermination d’un flot réalisable ou compatible Détermination d’un flot maximum
3. Flots dans les réseaux Détermination d’un flot maximum Principe de l’algorithme de Ford-Fulkerson Construire un flot complet Améliorer itérativement ce flot Examiner tous les chemins de E à S de façon systématique Pour chaque chemin faire passer un flot égal à la capacité résiduelle minimale de ce chemin