Rappel de théorie des graphes et introduction aux différents probłèmes/modèles de flots MSE3211A: Flot et Routage (d après Ahuja, R.K., T.L. Magnanti and J.B. Orlin, Prentice Hall, 1993, et d après les notes des cours de L.A. Wolsey et F. Vanderbeck ) Last update: January 12, 2011 Gautier Stauffer, MAB, Bur. A33:358, Email gautier.stauffer@math.u-bordeaux1.fr
GRAPHES: définitions Un graphe non-orienté G est défini par un ensemble de noeuds (ou sommets) N et un ensemble d arêtes (edges) E (i.e. paire de noeuds): i.e. G = (N, E) Un graphe orienté (digraphe) G est défini par un ensemble de noeuds N et un ensemble d arcs A (i.e. paire de noeuds orientée): i.e. G = (N, A) Pour l arc (i, j), le noeud i est la queue (tail) et le noeud j est la tête (head). Un noeud est incident à une arête (un arc) si ce noeud forme une des extrémités de cette arête (cet arc) et vice-versa. 2 noeuds sont adjacents s ils sont liés par une arête (un arc). 2 arêtes (arcs) sont parallèles si elles (ils) correspondent à la même paire de noeuds.
GRAPHES: définitions Une boucle est une arête (arc) du type (i, i) pour i N Un graphe (digraphe) est simple s il n a ni arêtes (arcs) parallèles, ni boucles. Un graphe simple est complet si toute paire de noeuds définit une arête. Un sous-graphe H d un graphe G est défini par un sous-ensemble de noeuds N(H) N(G) et un sous-ensemble d arêtes E(H) E(G) (d arcs A(H) A(G)) incidentes à ces noeuds. Un sous-graphe H est induit par N(H) si E(H) = E(G(N(H))).
GRAPHES: définitions Un sous-graphe H forme un recouvrement (spanning) des noeuds du graphe G si N(H) = N(G). Un parcours (walk) P dans un graphe (resp. digraphe) est un sous-graphe formé par une séquence de noeuds i 1, i 2,...,i n et les arêtes associées: (i k, i k+1 ) ou (i k+1, i k ) E(P) (resp. A(P)) pour k = 1,...,n. Un parcours orienté (directed walk) P dans un digraphe est un sous-graphe formé par une séquence de noeuds i 0, i 1,...,i n et les arcs associés: (i k 1, i k ) A(P) pour k = 1,...,n Un chemin est un parcours simple, c-à-d un parcours dans lequel aucun noeud n est répété: tous les noeuds de la séquence i 0, i 1,...,i n sont distincts. Un chemin orienté...
GRAPHES: définitions Un cycle est un chemin i 0, i 1,..., i n augmenté d une arête (i n, i 0 ). Un cycle orienté... Un graphe est dit acyclique s il ne contient pas de cycle orienté. Deux noeuds d un graphe sont connectés s il existe au moins un chemin entre ces 2 noeuds. Un graphe est connexe s il existe au moins un chemin entre chaque paire de noeuds. S il existe un parcours entre deux noeuds, alors il existe un chemin entre ces deux noeuds. Un graphe est strictement connexe s il existe au moins un chemin orienté entre chaque paire de noeuds.
GRAPHES: définitions Une coupe dans un graphe est définie par une partition de l ensemble des noeuds: N = S (N \ S). Les arêtes (arcs) de cette coupe, qu on note [S, N \ S], sont celles qui ont leurs extrémités dans S et N \ S respectivement. NOTATION: δ(s) = ensemble des arêtes (arcs) ayant une extrémité (resp. leur origine) dans S Un arbre T est un (sous-)graphe connexe ne présentant pas de cycles PROPRIÉTÉS: E(T) = N(T) 1 un chemin unique entre chaque paire de noeuds. admet au moins deux noeuds de degrés 1.
GRAPHES: définitions Une forêt est un (sous-)graphe ne présentant pas de cycles (il existe au plus un chemin entre chaque paire de noeuds.) Une forêt est une collection d arbres. Un arbre est dit enraciné (rooted) au noeud i N(T) si le noeud i a été désigné comme le noeud racine de l arbre T. Un graphe G(N, A) est biparti si N = N 1 N 2 avec N 1 N 2 = et A (N 1 N 2 ) (N 2 N 1 ). (PROPRIÉTÉ: chaque cycle est pair)
RÉSEAUX (Network): définitions Un réseau est un graphe augmenté de valeurs numériques associées aux noeuds et aux arêtes (arcs): 2 2 5 3 4 1 6 3 1 2 1 2 b i i N demande si b i < 0, offre (production) si b i > 0 c i j (i, j) A coût unitaire pour traverser (i, j) ( C) u i j (i, j) A flot maximum sur (i, j) ( U) l i j (i, j) A flot minimum sur (i, j) ( L) 4 7 6
Algorithmes et Complexité Un algorithme est une procédure pas à pas pour résoudre un problème. Pour comparer la performance de nos algorithmes, on s interessera essentiellement au temps de calcul i.e. le nombre d opérations élémentaires Notation grand O : pour éviter de rentrer dans les détails de certaines opérations, on dira qu on algorithme est en O(f(n)) si c, n 0 tell que le temps pris par l algorithme dans le pire des cas est plus petit ou égal à c f(n) pour tout n n 0. Un algorithme est polynomial si le temps d exécution peut être borné par une fonction polynomiale en la taille du problème e.g. trouver la plus petite arête dans un graphe peut se faire en O(m) où m est le nombre d arêtes. Pour les graphes, un algorithme est polynomial si polynomial en n, m, log C, log U, log L.
MODÈLES DE FLOT DANS DES RÉSEAUX RÉSEAU NOEUDS ARCS FLOT Électrique stations de géné. lignes élec. électricité Téléphone sta. de contrôle câble communications Web serveurs câbles bits Usine machines tapis roulant produits Routier carrefours rue véhicules, biens PROBLÈMES DE BASE Problème du plus court chemin: Trouver la meilleure façon de traverser un réseau (moins coûteuse, plus rapide, plus sûre) OPTIMISATION. Problème de flot maximum: Envoyer autant de flot que possible au travers d un réseau, en respectant les capacités des arcs RÉALISABILITÉ. Problème de flot de coût minimum: envoyer des flots au travers un réseau pour satisfaire les demandes aux noeuds de destination à partir des approvisionnements des noeuds sources en respectant les capacités des arcs et en minimisant les coûts associés RÉALISABILITÉ et OPTIMISATION.
PROBLÈME DU PLUS COURT CHEMIN Dans un réseau orienté avec des arcs de longueur connue, trouver un chemin de longueur minimale entre deux noeuds donnés: la source s et le puits t. APPLICATIONS route de longueur minimale dans un réseau routier; routage le plus sûr dans un réseau télécom. DONNÉES un graphe orienté G = (N, A) connexe; le noeud source s et le puits t N; un coût c i j pour chaque arc (i, j) A. 1 4 6 2 3 2 5 1 2 1 2 4 3 7 6
PROBLÈME DU PLUS COURT CHEMIN VARIANTES Plus court chemin de s vers tous les autres noeuds. Plus court chemin entre chaque paire de noeuds. 1 4 6 2 3 2 5 1 2 1 2 4 3 7 6
FORMULATION VARIABLES: x i j = CONTRAINTES: { 1 si on choisit l arc (i, j) 0 sinon x i j x j i = j N j N +1 i = s 0 i s, t 1 i = t x i j {0, 1} pour tout (i, j) (1) OBJECTIF: min (i,j) A c i j x i j HYPOTHÈSE :PAS DE CYCLE DE COÛT NÉGATIF PROPRIÉTÉ La relaxation linéaire a une solution entière.
CYCLES DE COÛT NÉGATIF Le problème qu ils posent 2 1 5 Cas particuliers arcs à coût positif graphe sans cycle graphe en couches ordre topologique Cas général Détecter la présence d un cycle de coût négatif (facile). Si, il est difficile de trouver un plus court chemin. (reduction au problème du plus long chemin)
PROBLÈME DE FLOT MAXIMUM Dans un réseau orienté avec des capacités sur les arcs, envoyer autant de flot que possible entre un noeud source s et un noeud puits t, sans excéder les capacités. APPLICATIONS maximiser le flux (flot par unité de temps) dans un pipeline ; trafic maximum dans un réseau routier, de télécom. DONNÉES Un graphe orienté G = (N, A) avec les noeuds s & t; Une capacité 0 u i j U entier, pour chaque arc (i, j). 2 10 7 v s 1 t v 6 10 3
PROBLÈME DE FLOT MAXIMUM FORMULATION max v s.a. x i j x j i = j N j N v pour i = s 0 pour i s, t v pour i = t 0 x i j u i j pour tout (i, j) A NB: La programmation linéaire résoud le programme linéaire en nombres entiers (losrque les capacites sont entières)
PROBLÈME DE FLOT À COÛT MINIMUM Établir un flot de coût minimal qui satisfasse à toutes les demandes aux noeuds puits à partir des approvisionnements aux noeuds sources, tout en respectant les capacités des arcs. DONNÉES: un réseaux, c-à-d un graphe orienté G = (N, A) augmenté de b i > 0 aux noeuds source émissions b i = 0 aux noeuds de transit i N b i < 0 aux noeuds de demande coût c i j pour tout arc (i, j) A. capacité (borne supérieure) u i j pour tout (i, j) A. flot minimal (borne inférieure) l i j pour tout (i, j) A.
PROBLÈME DE FLOT À COÛT MINIMUM FORMULATION (LP résoud le IP): Variables de décision: x i j = flot au travers de l arc (i, j) Contraintes: x i j x j i = b i i N j:(i,j) A j:(j,i) A l i j x i j u i j (i, j) A Objectif: min c i j x i j (i,j) A
CAS PARTICULIERS Problème du plus court chemin: l i j = 0, u i j = (i, j) A; b s = b t = 1, b i = 0 autres noeuds. Problème de flot maximum: c i j = 0 (i, j) A b i = 0 i c t s = 1, u t s =.
CAS PARTICULIERS Problème de transport: l ensemble des noeuds se partitionne en un ensemble de fournisseurs, N 1, et un ensemble de clients, N 2 : b i > 0 i N 1 b j < 0 j N 2 et tout arc va d un fournisseur à un client: (i, j) A : i N 1, j N 2 (le graphe est BIPARTI). Exemples: transport de matières premières, de produits finis vers les entrepôts, des entrepôts vers les magasins; transport de personnes.
CAS PARTICULIERS Problème d affectation: le graphe est biparti (comme pour les problèmes de transport) et de plus: b i = 1 i N 1, b j = 1 j N 2 u i j = 1 (i, j) A, N 1 = N 2 Exemples: Affectation de travailleurs aux tâches Affectation de tâches aux machines. Problème de circulation: tous les noeuds sont des noeuds de transit: pas de production, pas de demandes: b i = 0 i Le flot est induit par les bornes inférieures. l i j > 0 pour certains arcs (i, j) Exemple: l affectation du personnel naviguant dans une compagnie aérienne.
GÉNÉRALISATION: Problèmes de flot à coûts convexes: considèrent une fonction coût plus générale que la fonction linéaire Coût c i j x i j (i,j) A Si on fait l hypothèse de coût définit comme une fonction convexe du flot dans l arc Coût (i,j) A c(x i j) où c(x) : est une fonction convexe, on garde beaucoup des bonnes propriétés qui rendent les problèmes de flot relativement facile. Beaucoup d application peuvent être modéliser comme un problème de flot avec coûts convexe. Exemples: Coût représentant la perte de puissance électrique due à la résistance, congestion dans un réseaux urbain.
GÉNÉRALISATION: Problèmes de flot généralisé: Le flot à la sortie d un arc n est pas nécessairement le même que le flot à l entrée: l arc peut consommer ou produire du flot. i x i j µ i j x i j j arc à perte: 0 < µ i j < 1 arc à gain: 1 < µ i j < Exemples: pertes dans réseau électrique ou réseau d eau, transport de biens périssables, flot financier.
GÉNÉRALISATION: Problèmes multi-flot: Plusieurs flots de types différents se partagent la capacité d un réseau. Ces flots se distinguent soit par le fait qu ils représentent des entités différentes (p.e. produits distincts dans un atelier de fabrication) soit simplement par leur origine et /ou destination Problème: partitionner la capacités des arcs entres les flots Exemples: transport de biens distincts, réseau urbain, traffic télécom, sacs de courrier
FLOT SUR ARCS FLOT SUR CHEMINS/CYCLES Etant donné un réseau R = (G, l, u, b), un flot est une solution réalisable pour le système suivant : x i j x j i = b i i N j:(i,j) A j:(j,i) A l i j x i j u i j (i, j) A où x i,j représente le flot au travers de l arc (i, j) 4 units 6 2 4 4 4 +7 1 2 0 2 6-7 2 4 2 units +7 1 6-7 3 3 5 3 3 3 5 3 units
Algorithme de DÉCOMPOSITION DES FLOTS Il est trivial de passer d une représentation sur les chemin et cycles à une représentation sur les arcs. Dans l autre direction, on peut utiliser l algorithme suivant : Supposons qu il existe i 0 un noeud avec un déficit de flot. Il doit alors y avoir un arc (i 1, i 0 ) portant un flot strictement positif. si i 1 est un noeud avec exces de flot, on s arrête sinon le bilan au noeud nous indique qu il y a un arc (i 2, i 1 ) qui porte du flot on repète jusqu à ce qu on trouve un noeud en exces ou qu on revisite un sommet (au plus n fois) Si on a trouvé un chemin P de i k à i 0, on fait passer autant de flot que possible sur ce chemin: f(p) = min{b(i 0 ), b(i k ), min{x ij : (i, j) P}} et on mémorise P et le f(p). si on a trouvé un cycle W, on fait passer autant de flot que possible sur ce cycle : f(w) = min{x ij : (i, j) W }}. On soustrait de x le flot sur P ou sur W : x ij := x ij f(p) pour tout (i, j) P ou x ij := x ij f(w) pour tout (i, j) et on réitère. Une fois tous les noeuds avec un exces/deficit = 0, on applique le même raisonnement sur les arcs portant du flot. Si un tel arc (i 1, i 0 ) existe, ce flot doit arriver en i 1 et on itère comme précédemment pour détecter un cycle W. On soustrait de x le flot sur W et on répète la procédure tant qu il existe des arcs porteurs de flot.
THÉORÈME DE DÉCOMPOSITION D UN FLOT Considérons un digraphe G(N, A) avec N = n et A = m. Theorem Tout flot qui est défini en terme de flot sur des chemins et le long de cycles a une représentation unique en terme de flot sur des arcs. Inversement, tout flot qui est défini en terme de flot sur des arcs peut être représenté comme un flot sur des chemins et le long de cycles (bien que cette représentation ne soit pas unique) avec les propriétés suivantes: (i) Tout chemin portant un flot positif va d un noeud source à un noeud puits. (ii) Il y a au plus m + n chemins et cycles portant un flot positif; et au plus m d entre eux sont des cycles. Un flot de circulation peut être représenté comme des flots le long de, au plus, m cycles.