Graphe - Le problème du flot maximal
Un système dans lequel un matériau s'écoule, tel l'eau ou l'électricité, peut être modélisé à l'aide d'un graphe. Une question anturelle se pose : quelle est la capacité maximale de ce système ? Ce problème est connu sous le nom de flot maximal et admet plusieurs solutions algorithmiques efficaces. Nous en présenterons ici quelques unes.
Définitions
Un réseau
est un 5-uplet noté où
- est un graphe simple orienté où est supposé être
- associe à chaque arc sa capacité, c'est à dire un réel positif ou nul noté
- est un sommet appelé la source
- est un sommet distinct de appelé le puits
Un flot de est une fonction qui associe à chaque arc un réel appelé le flot réel de à et tel que
- contrainte de capacité : pour tout arc , on a
- symétrie : pour tout arc , on a :
- conservation du flot: tout sommet vérifie :
La valeur du flot , notée est la quantité
Le problème du flot maximal consiste à calculer pour tout réseau un flot de vlaeur maximale. Dans la suite de ce chapitre, nous noterons flot net positif d'un sommet la somme des flots nets positifs sortant de c'est à dire plus formellement . Afin d'établir la correction des algorithmes résolvant le problème du flot maximal, nous établissons ci dessous un lemme portant sur le flot entre deux ensembles de sommets et . Cette quantité définie pour tout couple d'ensembles de sommets et est noté et est égale à
Propriétés
Réseau résiduel
LA propriété qui suit implique que tout flot de valeur non nulle est, si il n'est pas maximal, un début de réponse. En effet nous pouvons définir à partir de ce flot défini sur un réseau un nouveau réseau "plus simple" pour lequel tout flot maximal permettra de définir le flot maximal sur .
Définition
La capacité résiduelle d'un réseau induit par un flot est la fonction notée qui associe à tout arc le réel positif ou nul . Le réseau résiduel d'un réseau induit par un flot est le réseau .
Chemin améliorant
Définir un flot peut se réaliser simplement en choisissant dans le réseau un chemin de à et en prenant pour valeur la capacité minimale des arcs de ce chemin.
Définition
Soit un réseau et un chemin élémentaire dans de à . La capacité de est le minimum des capacités des arcs que possède et est noté . Le flot induit par est la fonction notée qui associe à tout arc la quantité définie par
- si appartient à
- si appartient à
- sinon
Un chemin allant de à améliore un flot de si la capacité de dans le réseau résiduel de induit par est positive.
Lemme
La fonction induit par un chemin élémentaire de la source au puits dans un réseau est un flot de valeur .
Maxiflot & MiniCoupe
Nous allons établir le théorème minimax
qui caractérise un entier maximal à vérifier une certaine propriété comme étant minimal à en vérifier une seconde. Ce genre de résultat est à remarquer car il augure souvent favorablement la possibilité de calculer efficacement un tel entier.
Définition
Une coupe
dans un réseau est un couple d'ensembles de sommets de la forme avec tel que et . Sa capacité
, notéée , est la somme . Une coupe est minimale si sa capacité est au plus égale à la capacité de toute coupe de ce réseau. Le flot d'une coupe relativement à un flot est la quantité .
Lemme
Tout flot et toute coupe d'un même réseau de capacité vérifient
Théorème
Soit un flot dans un réseau . Les quatre assertions suivantes sont équivalentes
- est un flot maximal
- n'admet aucun chemin améliorant
- il existe une coupe dans le réseau résiduel induit par de capacité nulle
- il existe une coupe de capacité égale au flot
Corollaire (MaxiFlot & MiniCoupe)
Pour tout réseau, la valeur maximale des flots est égale à la capacité minimale des coupes.
Deux solutions au problème du flot maximal
Ford Fulkerson
L'algorithme de Ford-Fulkerson est un algorithmes pour le problème du flot maximum. Il s'agit d'un algorithme itératif. A chaque itération, la solution courante est un flot qui satisfait les contraintes de capacité (c'est donc un flot réalisable) et l'algorithme essaie d'augmenter la valeur de ce flot. Considérons un flux possible dont les sous-ensembles sont les différents flux associés à chaque arête ou arc du graphe. A chaque itération de la boucle, deux sous-procédures viennent compléter le processus.
- le marquage qui consiste à tester si une amélioration du flux est possible
- le changement de flux, soit la procédure qui donne la meilleure solution à partir de l'observation précédent
fonction FordFulkerson(G=(V,E,c,s,t):réseau):flot
fmax = 0
tant qu'il existe un chemin de s à t de capacité positive faire
calculer un chemmin p élémentaire de s à t de capacité positive
f = flotInduit(G,p)
G = réseauRésiduel(G,f)
fmax = fmax + f
retourner fmax
Pour garantir une complexité polynomiale, le marquage doit être fait dans le même ordre que la découverte des commets. La complexité de l'algorithme est alors en pour un graphe avec sommets et arcs.
Une amélioration de Ford Fulkerson qui termine
Dans la définition de FordFulkerson
, aucune précision n'a été indiquée sur la façon de calculer un chemin de à non nulle. Cette question est pourtant cruciale, sur des graphes à valeur réelles, l'algorithme ne se termine pas.
Cette grande faiblesse de FordFulkerson
peut être facilement corrigée : en effet, si l'on utilise un simple parcours en largeur à partir de pour calculer un plus court chemin de à , on obtient un algorithme qui termine et donc de bien meilleure complexité en temps dans le pire des cas
fonction EdmondKarpsRec(G=(V,E,c,s,t):réseau):flot
si il n'existe aucun chemin de s à t de capacité positive faire
retourner 0
sinon
calculer un plus court chemin p de s à t de capacité positive
f = flotInduit(G,p)
H = réseauRésiduel(G,f)
retourner f + EdmondKarpsRec(K)
Le temps d'exécution de s'obtient en constatant que chaque chemin augmentant peut être trouvé en temps , qu'à chaque fois au moins un arc de est saturé, que la distance de la source à un arc saturé par le chemin augmentant croît à chaque fois que l'arc est saturé, et que cette longueur est au pllus . Une autre propriété de cet algorithme est que la longueur du plus court chemin augmentant croît .
Théorèmes de Menger
Nous conclurons ce chapitre en présentant les Théorèmes de Menger. Chacun de ces théorèmes établit pour tous sommets l'égalité de deux entiers
- le plus petit nombre d'objet qu'il faut retirer pour déconnecter de
- le plus grand nombre de chemins objet disjoint connectant à Fait remarquable, cette propriété concerne des graphes orientés ou non et des "séparateurs" formés de sommets, d'arcs ou d'arêtes.
Un ensemble d'arc (resp. d'arêtes, de sommets) d'un graphe séparer un sommet d'un sommet si il ne contient ni ni et si tout chemin allant de à contient un élément de . Un tel ensemble est dit séparateur.
Cette définition en appelle d'autres, qui permettent de quantifier le nombre de sommets, d'arcs ou d'arêtes nécessaires à déconnecter le graphe, c'est à dire à séparer deux sommets.
Soit un entier. Un graphe est :
- arc connexe si tout ensemble d'arcs séparateur est de cardinalité supérieur à
- arête connexe si tout ensemble d'arêtes séparateur est de cardinalité supérieur à
- connexe si tout ensemble de sommets séparateur est de cardinalité supérieur à