Chapitre 7. Problèmes de flots. 7.1 Exemple. 7.2 Notions de base sur les graphes



Documents pareils
Chapitre 5 : Flot maximal dans un graphe

Programmation linéaire

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Leçon 01 Exercices d'entraînement

Continuité en un point

LE PROBLEME DU PLUS COURT CHEMIN

Théorème du point fixe - Théorème de l inversion locale

Cours de Recherche Opérationnelle IUT d Orsay. Nicolas M. THIÉRY. address: Nicolas.Thiery@u-psud.fr URL:

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Algorithmes de recherche

Plus courts chemins, programmation dynamique

Eléments de Théorie des Graphes et Programmation Linéaire

CCP PSI Mathématiques 1 : un corrigé

Optimisation des fonctions de plusieurs variables

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Rappels sur les suites - Algorithme

Université Paris-Dauphine DUMI2E 1ère année, Applications

Optimisation Discrète

Continuité d une fonction de plusieurs variables

Programmation linéaire

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015

Chapitre 3. Mesures stationnaires. et théorèmes de convergence

Méthodes de quadrature. Polytech Paris-UPMC. - p. 1/48

EXERCICE 4 (7 points ) (Commun à tous les candidats)

Pourquoi l apprentissage?

Introduction à la théorie des graphes. Solutions des exercices

Continuité et dérivabilité d une fonction

Programmation linéaire et Optimisation. Didier Smets

Raisonnement par récurrence Suites numériques

Logique. Plan du chapitre

Intégration et probabilités TD1 Espaces mesurés Corrigé

INFO-F Algorithmique 3 et Recherche Opérationnelle

Fonctions de plusieurs variables

Chapitre 2 Le problème de l unicité des solutions

La fonction exponentielle

Image d un intervalle par une fonction continue

Équations non linéaires

Cours d Analyse. Fonctions de plusieurs variables

Chp. 4. Minimisation d une fonction d une variable

Suites numériques 3. 1 Convergence et limite d une suite

Cours 02 : Problème général de la programmation linéaire

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

3 Approximation de solutions d équations

DOCM Solutions officielles = n 2 10.

alg - Classes, instances, objets [oo] Exercices résolus

Résolution d équations non linéaires

Communications collectives et ordonnancement en régime permanent pour plates-formes hétérogènes

CONCOURS D ENTREE A L ECOLE DE 2007 CONCOURS EXTERNE. Cinquième épreuve d admissibilité STATISTIQUE. (durée : cinq heures)

Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

I. Polynômes de Tchebychev

Exercices sur les interfaces

Cours3. Applications continues et homéomorphismes. 1 Rappel sur les images réciproques

CHAPITRE 5. Stratégies Mixtes

Texte Agrégation limitée par diffusion interne

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Chaînes de Markov au lycée

Représentation des Nombres

Limites finies en un point

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

1 Définition et premières propriétés des congruences

Feuille TD n 1 Exercices d algorithmique éléments de correction

L exclusion mutuelle distribuée

Probabilités sur un univers fini

6. Les différents types de démonstrations

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Théorie et codage de l information

Simulation de variables aléatoires

Correction du baccalauréat ES/L Métropole 20 juin 2014

FONCTIONS DE PLUSIEURS VARIABLES (Outils Mathématiques 4)

Probabilités sur un univers fini

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

1 Recherche en table par balayage

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Exercice autour de densité, fonction de répatition, espérance et variance de variables quelconques.

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Programmation Linéaire - Cours 1

MIS 102 Initiation à l Informatique

Fonction inverse Fonctions homographiques

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé.

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé


Quelques Algorithmes simples

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Le théorème de Perron-Frobenius, les chaines de Markov et un célèbre moteur de recherche

IV- Equations, inéquations dans R, Systèmes d équations

Définitions. Numéro à préciser. (Durée : )

Développement décimal d un réel

Groupe symétrique. Chapitre II. 1 Définitions et généralités

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

Dérivées d ordres supérieurs. Application à l étude d extrema.

Fibonacci et les paquerettes

Cours Fonctions de deux variables

III- Raisonnement par récurrence

I - PUISSANCE D UN POINT PAR RAPPORT A UN CERCLE CERCLES ORTHOGONAUX POLES ET POLAIRES

Transcription:

Chapitre 7 Problèmes de flots. 7.1 Exemple. Un réseau electrique est formé de lignes reliant des noeuds (transformateurs, centre de redistributions,...), chaque ligne a une capacité de transport maximale. On veut faire passer une quantité de courant maximale entre le lieu de production (la source, supposée unique) et le lieu de consommation (la cible, aussi supposée unique). 7.2 Notions de base sur les graphes Un graphe orienté G=(V,E) est formé d un ensemble de sommets V = {x 1,...,x n } et d un ensemble d arcs E = {1, 2,...}. L arc k reliant x i à x j est aussi noté (x i, x j ). un chemin est une suite x 1, x 2,...,x p tel que (x i, x i+1 ) E pour i = 1,...,p 1. unechaine est une suite x 1, x 2,..., x p tel que (x i, x i+1 ) E (arc avant)ou (x i+1, x i ) E (arc arrière) pour i = 1,..., p 1. Succésseurs de x V c est l ensemble Suc(x) = {y (x, y) E}. Prédecesseurs de x V c est l ensemble Pred(x) = {y (y, x) E}. A tout arc k (ou (x, y)) on associe sa capacité c k (ou c(x, y)) un nombre > 0. On considèrera uniquement des graphes tels que : 1. il existe un sommet source s (c.a.d. que Pred(s) = ). 2. il existe un sommet cible t (c.a.d. que Suc(t) = ). 3. il existe un chemin de s à t (sinon le problème de flot n a pas de solution). 1

2 CHAPITRE 7. PROBLÈMES DE FLOTS. 7.3 Flots et coupe 7.3.1 Flot Un flot f de valeur v est une fonction qui à chaque arc (x, y) associe une valeur f(x, y) telle que : x V, x s, t Σ z Pred(x) f(z, x) = Σ y Suc(x) f(x, y) v = Σ y Suc(s) f(s, y) v = Σ z Pred(t) f(z, t) Un flot est admissible ssi x, y f(x, y) c(x, y). L arc (x, y) est saturé si f(x, y) = c(x, y). Le problème posé est de trouver un flot admissible de valeur maximale. 7.3.2 Flot et programmation linéaire Le problème de flot maximal est équivalent au problème de P.L. suivant : Max v 0 f(x, y) c(x, y) (x, y) E Σ y Pred(x) f(y, x) = Σ z Suc(x) f(x, z) x s, t v = Σ x Suc(s) f(s, x) v = Σ y Pred(t) f(y, t) 7.3.3 Coupe minimale et flot maximal Une coupe est donnée par un ensemble de sommet W tel que La coupe C est définie par C = {(x, y) x W, y W } { s W t W Proposition 1 Soit C une coupe, alors tout chemin de s à t contient un arc de C. La capacité de la coupe C associée à W est c = Σ (x,y) E,x W,y Wc(x, y). Théorème de la coupe minimale. On note f(h, K) = Σ x H,y K f(x, y). Proposition 2 Pour tout flot f de valeur v, pour toute coupe C (donnée par W), v = f(w, W) f(w, W) La preuve se fait par récurrence sur W. 1. W = 1 (donc W = {s}). Dans ce cas f(w, W) = Σ x Suc(s) f(s, x) et f(w, W) = 0 (pas d arc entrant sur s) ce qui donne le résultat.

7.4. ALGORITHME DE FORD-FULKERSON 3 2. On suppose le résultat vrai pour une coupe W et on considère W = W {x} (on note + et - l union et la soustraction ensembliste). d où f(w, W ) f(w, W ) = f(w + x, W x) f(w x, W + x) f(w, W ) f(w, W ) = f(w, W)+f(x, W) f(w, x) f(w, W)+f(x, W) f(w, x) d ou f(w, W ) f(w, W ) = f(w, W) f(w, W)+f(x, W)+f(x, W) f(w, x) f(w, x) Mais f(x, V ) = f(x, W) + f(x, W) et f(v, x) = f(w, x) + f(w, x) d ou le résultat car f(v, x) = f(x, V ) et par hypothèse d induction v = f(w, W) f(w, W). On a c = f(w, W) f(w, W) f(w, W) = v. Par conséquent la capacité d une coupe est toujours supérieure ou égale à la valeur de tout flot (notamment à celle d un flot maximal). Une égalité induit que le flot est maximal et que la capacité de la coupe est minimale. L algorithme de Ford-Fulkerson nous donnera un flot maximal qui correspond à une coupe minimale, ce qu on résumera en : Une coupe minimale correspond à un flot maximal 7.4 Algorithme de Ford-Fulkerson 7.4.1 Description de l algorithme Chaine augmentant le flot. Soit C une chaine s = x 1, x 2,...,x n = t, alors on pose ǫ 1 = Min i arc avant de C (c i f i ) et ǫ 2 = Min i arc arriere de C (f i ) (f i et c i flots et capacité de i). Si ǫ = min(ǫ 1, ǫ 2 ) est strictement positif, alors on peut augmenter le flot de ǫ sur C : on ajoute +ǫ sur un arc avant de C et ǫ sur un arc arriere de C. Algorithme de calcul d un flot maximal. Principe : partir d un flot et chercher s il existe une chaine sur laquelle on peut augmenter le flot. Si oui augmenter le flot et recommencer, sinon, alors le flot est optimal. Cet algorithme est du à Ford et Fulkerson. 1. Initialiser le flot à 0 (ou à un flot admissible). 2. Tant que c est possible faire chercher une chaine augmentant le flot de ǫ > 0 augmenter le flot de ǫ sur cette chaine. fait Procédure de recherche d une chaine augmentant le flot : (a) Initialisation. Marque = {s} et marque(s) = + V u =

4 CHAPITRE 7. PROBLÈMES DE FLOTS. (b) Itération. Tant que non fini faire { x Marque i. Choisir x tel que x V u ii. y Suc(x) et y Marque { Marque = Marque {y} si (x, y) non saturé alors marque(y) = Min(marque(x), c(x, y) f(x, y)) iii. y Pred(x) et y { Marque Marque = Marque {y} si f(y, x) 0 alors marque(y) = Min(marque(x), f(x, y)) iv. V u = V u {x} v. fini := t Marque (et alors ǫ = marque(t)) ou t Marque mais il n existe plus de x Marque et x V u (pas de chaine possible) fait Retrouver la chaine augmentant le flot se fait en remontant la chaine de marquage. 7.4.2 Exemple. 1 b 7 2 1 d 8 s 5 3 t 7 c 3 e 2 On initialise à 0 (on peut eventuellement trouver à la main un flot meilleur). Plusieurs stratégies sont possibles pour construire marque : en largeur, en file,... On choisit ici de construire Marque comme une pile (on developpe le dernier arrivé), on écrit en même temps la valeur de marque(x), les élements qui sont dans V u sont écrits en gras :

7.4. ALGORITHME DE FORD-FULKERSON 5 Marque = {(s, + )}, V u = Marque = {(s, + ), (b, 1), (c, 7)}, V u = {s} Marque = {(s, + ), (b, 1), (c,7), (e, 3), }, V u = {s, c} Marque = {(s, + ), (b, 1), (c,7), (e,3), (t, 2)}, V u = {s, c, e} On a une chaine s, c, e, t augmentant le flot de 1. La chaine suivante est : s, c, e, d, t qui augmente de 1. Ensuite la nouvelle chaine est s, b, d, t qui augmente de 1 et donne le flot maximal. 7.4.3 Correction et Terminaison Correction. Proposition 3 L algorithme donne un flot maximal quand il termine. La preuve de correction se fait en deux étapes : 1. On montre qu après chaque passage dans l itération pour tout x Marque, il existe une chaine entre s et x formée d éléments de V u sur laquelle on peut augmenter le flot de marque(x). 2. On montre que si fini est vrai et que t Marque, l ensemble Marque des sommets marqués obtenu après la dernière itération est une coupe dont la capacité est celle du flot calculé d où l optimalité. (a) C est une coupe (s Marque et t Marque). (b) Sa capacité est Σ (x Marque,y Marque c(x, y). Montrons qu elle vaut Σ (x Marque,y Marque f(x, y). On remarque que l ensemble Marque est croissant au cours de l algorithme. Prenons x Marque, y Marque tel que l arc (x, y) existe. Le sommet x a été mis dans V u à une itération de la boucle. Lors de cette itération, le sommet y n a pas été ajouté à Marque (sinon il serait dans cette ensemble à la fin du calcul). Cela signifie que soit y est un successeur et l arc (x, y) est saturé, soit y est un prédécesseur et le flot sur (y, x) est nul. Comme y n est pas dans l ensemble Marque à la fin de l algorithme, le flot n est pas modifié sur aucun des arcs (z, y) ou (y, z). Donc le flot vaut la capacité de la coupe, donc est maximal. Terminaison. Proposition 4 Si toutes les capacités sont des nombres rationnels, l algorithme termine. On se ramène à des capacités entieres en calculant le ppcm des dénominateurs et prenant comme unité de mesure 1/ppcm. Dans le cas des capacités entières le flots est augmenté d un nombre entier d unités (calcul de ǫ) à chaque étape et donc on termine après un nombre fini détapes (borné par le min de (somme des capacités sortant de la source,

6 CHAPITRE 7. PROBLÈMES DE FLOTS. somme des capacités entrant sur la cible)). On en tire une borne sur le nombre d itération de ercherche d une chaine augmentant le flot pour des capacités entières : elle est de K si K est la capacité maximale. Par contre l exemple pathologique suivant, avec des capacités irrationnelles, montre que l algorithme peut ne pas terminer et dans cet exemple il ne converge même pas vers le flot optimal! Toutes les implantations utilisant des nombres flottants (ou des entiers) ceci ne se produit pas en pratique. - Sommets : V = {s, (x i ) i=1,...,4, (y i ) i=1,...,4, t} - Arcs spéciaux : A 1 = (x 1, y 1 ) de capacité a 0 = 1, A 2 = (x 2, y 2 ) de capacité a 1 = ( 5 1)/2, A 3 = (x 3, y 3 ) et A 4 = (x 4, y 4 ) de capacité a 2 = a 0 a 1. - Arcs non spéciaux : (s, x i ) et (y i, t), (y j, x i ), (xi, y j ) et (y i, y j ) pour i j tous de capacité C a i (qu on va calculer ensuite). On montre alors que : Proposition 5 A l étape n de l algorithme on peut trouver une chaine qui augmente le flot de ǫ n qui vérifie la récurrence ǫ n+2 = ǫ n ǫ n+1, ǫ 0 = a 0, ǫ 1 = a 1 = ( 5 1)/2. Le flot augmentera indefiniment en tendant vers la valeur C = Σ n 0 a n = 2/(3 5) car on a ǫ n = ( 5 1)/2. On peut facilement voir que le flot maximal est en fait 4C!