Algorithme de Ford-Fulkerson
| Image manquante Symbole-ordinateur.png | Cet article est une ébauche concernant l'informatique, vous pouvez partager vos connaissances en le modifiant. |
L' algorithme de Ford-Fulkerson, du nom de ses auteurs L.R. Ford et D.R. Fulkerson, consiste en une procédure itérative qui permet de déterminer un flux (ou flot) de valeur maximale (ou minimale) à partir d'un flot constaté. Il s'agit donc d'un problème d'optimisation classique dans le domaine de la recherche opérationnelle.
Ce problème d'optimisation peut être représenté par un graphe comportant une entrée (à gauche) et une sortie (à droite). Le flot représente la circulation de l'entrée vers la sortie d'où l'utilisation de cet algorithme dans les problèmes de réseaux. Les applications sont multiples : problèmes informatiques, routiers, ferroviaires, etc. Il s'applique également à tous les autres problèmes de transferts comme les importations/exportations, les flux migratoires, démographiques mais aussi sur les flux plus abstraits tels que les transferts financiers.
| Sommaire |
Exemple
Une société de fret dispose de 3 centres : un à Paris, le deuxième à Lyon, le troisième à Marseille. Trois destinations sont possibles : la Pologne, la Suède, la Grèce.
Chacun des centres de fret a une capacité maximale de transport ainsi qu'un stock initial de marchandises. De même, chaque pays d'arrivée à une demande maximale pour les importations.
L'algorithme de Ford-Fulkerson va permettre d'optimiser ces flux à l'aide d'un outil de modélisation mathématique. La structure sous-jacente est représentée par un graphe orienté dont le sommet de gauche symbolise le stock initial. Celui-ci est relié à chacun des premiers arcs ou arêtes.
Dans l'exemple présent, la matrice associée porte donc dans sa première colonne les valeurs des dits stocks. Inversement, à l'extrémité de la chaîne, la matrice associée comprendra dans sa dernière colonne les demandes respectives des pays cités. Les sommets centraux comprendront les différentes combinaisons de fret maximal d'un point à l'autre.
Le problème peut être généralisé à toute circulation dans un réseau (véhicules, fluides, monnaie, etc. Les grandeurs mathématiques remplaçant indistinctemnt les faits réels qu'elles sont censées représenter.
Algorithme
La procédure de l'algorithme consiste en une itération.
Considérons un flux possible dont les sous ensembles sont les différents fluxs 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édente.
En pseudo-code informatique, l'algorithme peut se présenter ainsi :
- initialisation
- tant que les sommets ne sont pas marqués
- sélectionner un sommet non marqué, tous les précédents ayant été marqués et en déterminer la marque
- mettre à jour l'ensemble des sommets marqués
- fin
Liens
http://ditrix.free.fr/algorithms/ford_fulkerson.html . Ce site permet de tester l'algorithme à l'aide d'un programme en C++ .
Bibliographie
- A simplex algorithm finding maximal networks flows and an application to the Hitchock problem(FORD LR ,FULKERSON D.R ), Rand Report Rand Corporation ,Santa Monica ,décembre 1955.
- The transhipment problem (ORDEN A ) ,Mgmt Sc.,2 , 1956.
- Sur la déficience d'un réseau infini (BERGE c ) ,C.R. Ac.Sc, 245 , 1957.
- Invitation à la recherche opérationnelle (KAUFMANN A , FAURE R ) Dunod Entreprise , 1979.
