ProblĂšme de flot maximum
Le problÚme de flot maximum consiste à trouver, dans un réseau de flot, un flot réalisable depuis une source unique et vers un puits unique qui soit maximum[1]. Quelquefois, on ne s'intéresse qu'à la valeur de ce flot. Le s-t flot maximum (depuis la source s vers le puits t) est égal à la s-t coupe minimum du graphe, comme l'indique le théorÚme flot-max/coupe-min.
Applications
Ce type de problÚme est proche de ce qui est rencontré dans le remplissage optimisé de boßtes.
Algorithmes
Ătant donnĂ© un graphe orientĂ© , oĂč chaque arc a une capacitĂ© , on cherche un flot maximum depuis la source vers le puits , sous contrainte de capacitĂ©. DiffĂ©rents algorithmes ont Ă©tĂ© dĂ©veloppĂ©s pour rĂ©soudre ce problĂšme de complexitĂ©s diffĂ©rentes. On utilise, dans la description des complexitĂ©s, la notation simplifiĂ©e qui remplace le cardinal d'un ensemble par l'ensemble lui-mĂȘme : on Ă©crit au lieu de .
Algorithme | Complexité | Description |
---|---|---|
Programmation linĂ©aire | Les contraintes sont donnĂ©es par flot admissible, oĂč on considĂšre comme admissible un flot qui n'excĂšde pas la capacitĂ© d'un arc. On maximise | |
Algorithme de Ford-Fulkerson | dans le cas entier |
Tant qu'il existe un chemin entre la source et le puits dans le graphe résiduel, envoyer le minimum des capacités résiduelles sur ce chemin. |
Algorithme d'Edmonds-Karp | SpĂ©cialisation de l'algorithme de Ford-Fulkerson, oĂč les chemins augmentants sont des plus courts chemins (en nombre d'arcs) dans le graphe rĂ©siduel (on utilise un parcours en largeur) | |
Algorithme de flot bloquant de Dinitz | Ă chaque phase l'algorithme construit un graphe en couches avec une recherche en profondeur d'abord sur le graphe rĂ©siduel. Le flot maximum dans le graphe en couche peut ĂȘtre calcule en temps , et le nombre maximum de phase est de . | |
Algorithme de flot maximum par poussage/rĂ©Ă©tiquetage | Cet algorithme maintient un prĂ©flot, i.e. une fonction de flot avec une possibilitĂ© d'excĂšs dans les sommets. L'algorithme fonctionne tant qu'il existe un sommet avec un excĂšs strictement positif, appelĂ© sommet actif du graphe. L'opĂ©ration de poussage augmente le flot sur une arĂȘte rĂ©siduelle, et une fonction de hauteur contrĂŽle sur les sommets contrĂŽle quelles arĂȘtes rĂ©siduelles doivent ĂȘtre poussĂ©es. Cette fonction est changĂ©e avec la fonction d'Ă©tiquetage. Les dĂ©finitions de ces opĂ©rations garantissent que le flot rĂ©sultant est un flot maximum. | |
Poussage/rĂ©Ă©tiquetage avec rĂšgle de sĂ©lection des sommets par FIFO | Variante qui sĂ©lectionne toujours le sommet le plus actif formellement, et fait les opĂ©rations jusqu'Ă ce que l'excĂšs soit positif ou qu'il existe des arĂȘtes rĂ©siduelles admissibles depuis ce sommet. | |
Algorithme de flot bloquant de Dinitz avec arbre dynamique[2] | La structure d'arbre dynamique accélÚre le calcul de flot maximum dans le graphe en couche pour obtenir par phase. | |
Poussage/re-étiquetage avec usage des arbres dynamiques[3] | L'algorithme construit des arbres de taille limitée sur le graphe résiduel en considérant la fonction de hauteur, ces arbres fournissent des opérations de poussage multi-niveau. | |
Algorithme de flot bloquant binaire[4] | La valeur correspond à la capacité maximum du réseau. | |
KRT : Algorithme de King, Rao et Tarjan[5] | ||
Algorithme de James B Orlin + KRT[6] | L'algorithme d'Orlin calcule le flot maximum en temps O(VE) pour et KRT résout le problÚme en O(VE) pour . | |
Algorithme de Chen, Kyng, Liu, Peng, Gutenberg et Sachdeva [7] | L'algorithme de Chen, Kyng, Liu, Peng, Gutenberg et Sachdeva' résout le problÚme de flot maximum et cout minimum en temps presque linéaire en construisant le flot par une série de cycles non-orientés de ratios minimums approchés, chacun calculé et utilisé en temps amorti avec une strucutre de donnée dynamique. |
Une liste plus complĂšte figure dans le livre de Cormen, Leiserson, Rivest et Stein[1]. Le problĂšme du flot maximal est complet pour la classe P[8].
Extensions
Le problĂšme du flot maximum peut ĂȘtre vu comme un cas particulier de plusieurs autres problĂšmes de flots dans les rĂ©seaux, comme le flot multi-commoditĂ©s.
Références bibliographiques
- (en) Cet article est partiellement ou en totalitĂ© issu de lâarticle de WikipĂ©dia en anglais intitulĂ© « Maximum flow problem » (voir la liste des auteurs).
- (en) Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein, Introduction to Algorithms, Cambridge, MIT Press and McGraw-Hill, , 2e Ă©d., 1180 p., reliĂ© (ISBN 978-0-262-53196-2, LCCN 2001031277), « Chap. 26. Maximum Flow », p. 643â700.
- (en) Daniel D. Sleator and Robert E. Tarjan, « A data structure for dynamic trees », Journal of Computer and System Sciences, vol. 26, no 3,â , p. 362â391 (ISSN 0022-0000, DOI 10.1016/0022-0000(83)90006-5, lire en ligne).
- (en) Andrew V. Goldberg and Robert E. Tarjan, « A new approach to the maximum-flow problem », Journal of the ACM, New York, NY, USA, ACM Press, vol. 35, no 4,â , p. 921â940 (ISSN 0004-5411, DOI 10.1145/48014.61051).
- (en) Andrew V. Goldberg and S. Rao, « Beyond the flow decomposition barrier », J. Assoc. Comput. Mach., vol. 45,â , p. 753â782 (DOI 10.1145/290179.290181).
- V. King, S. Rao et R. Tarjan, « A Faster Deterministic Maximum Flow Algorithm », Journal of Algorithms, vol. 17, no 3,â , p. 447â474 (DOI 10.1006/jagm.1994.1044)
- James B. Orlin, « Max flows in O(nm) time, or better », STOC '13 Proceedings of the forty-fifth annual ACM symposium on Theory of computing,â , p. 765â774 (DOI 10.1145/2488608.2488705)
- L. Chen, R. Kyng, Y.P. Liu, M.P. Gutenberg et S. Sachdeva, « Maximum Flow and Minimum-Cost Flow in Almost-Linear Time », preprint ArXiv,â
- (en) « The maximum flow problem is log space complete for P », Theoretical Computer Science, vol. 21, no 1,â , p. 105â111 (ISSN 0304-3975, DOI 10.1016/0304-3975(82)90092-5, lire en ligne, consultĂ© le )