Aller au contenu principal

Réseau de flot

Objectifs​

  • Définir le problème du flot maximum
  • Appliquer l'algorithme de Ford-Fulkerson
  • Définir une coupe dans un réseau de flot
  • Connaître le théorème flot-max/coupe-min
  • Trouver la coupe minimum d'un réseau de flot

Cours​

Réseau de flot

Graphes

Problème du flot maximum

Trouver le flot maximum depuis une source vers un puits dans un graphe pondéré.

  • Flot : quantité de matière qui circule dans un réseau.

  • Source (S) : sommet d'où part le flot.

  • Puits (T) : sommet où arrive le flot.

  • Poids : capacité maximale d'un arc.

Problème du flot maximum

https://upload.wikimedia.org/wikipedia/commons/9/94/Max_flow.svg

https://commons.wikimedia.org/wiki/File:Max_flow.svg

  • Flot/Capacité : flot inférieur ou égal à la capacité de l'arc.

  • A chaque sommet : flot entrant = flot sortant.

Réseau de distribution d'eau

https://www.circleofblue.org/wp-content/uploads/2011/10/pipes-and-puddles-655.jpg

https://www.circleofblue.org/2011/world/mixing-art-and-technology-north-americas-largest-membrane-filtration-sewage-plant-opens-near-seattle/attachment/pipes-and-puddles-655/

Réseau routier

https://www.rts.ch/2023/02/22/11/47/13806483.image

https://www.rts.ch/info/suisse/13806396-le-conseil-federal-veut-plus-de-12-milliards-pour-le-reseau-routier.html

Réseau électrique

https://www.ifri.org/sites/default/files/migrated_files/images/thumbnails/image/shutterstock_1230224197.jpg

https://www.ifri.org/fr/espace-media/lifri-medias/de-transition-energetique-transformation-reseau-electrique

Algorithme de Ford-Fulkerson

https://cdn.programiz.com/sites/tutorial2program/files/flow-network.png

https://www.programiz.com/dsa/ford-fulkerson-algorithm

Algorithme de Ford-Fulkerson

https://cdn.programiz.com/sites/tutorial2program/files/flow-network-example.png

https://www.programiz.com/dsa/ford-fulkerson-algorithm

Initialisation des flots à 0.

Algorithme de Ford-Fulkerson

https://cdn.programiz.com/sites/tutorial2program/files/flow-network-1.png

https://www.programiz.com/dsa/ford-fulkerson-algorithm

Recherche d'un chemin existant de S à T (DFS, BFS, ...).

Flot maximum du chemin : capacité minimale = 2

Algorithme de Ford-Fulkerson

https://cdn.programiz.com/sites/tutorial2program/files/flow-network-2.png

https://www.programiz.com/dsa/ford-fulkerson-algorithm

Recherche d'un autre chemin existant de S à T.

Flot maximum du chemin : capacité minimale = 3

Algorithme de Ford-Fulkerson

https://cdn.programiz.com/sites/tutorial2program/files/flow-network-2-update.png

https://www.programiz.com/dsa/ford-fulkerson-algorithm

Plus de chemin possible entre S et T : fin de l'algorithme.

Flot maximum : 2 + 3 = 5

Exercice

Solution

Flot maximum : 1 + 3 + 2 = 6

Solution

https://upload.wikimedia.org/wikipedia/commons/f/fe/FordFulkerson.gif

https://commons.wikimedia.org/wiki/File:FordFulkerson.gif

Coupe

https://upload.wikimedia.org/wikipedia/commons/0/02/Min-cut.svg

https://commons.wikimedia.org/wiki/File:Min-cut.svg

  • Coupe : ensemble d'arcs dont la suppression empêche le flot de passer de S à T.

  • Sépare le graphe en deux sous-graphes.

  • Capacité d'une coupe : somme des capacités des arcs de S à T.

Exercice : Capacité des coupes ?

  1. 15 + 10 = 25

  2. 6 + 6 = 12

  3. 4 + 6 + 6 = 16

  4. 4 + 1 + 5 = 10

  5. 10 + 5 = 15

Coupe minimum

  • Coupe de capacité minimale d'un réseau de flot.

  • Théorème flot-max/coupe-min

    • Capacité de la coupe minimum = Flot maximum

    • Pour vérifier la solution.

Théorème flot-max/coupe-min

https://upload.wikimedia.org/wikipedia/commons/9/94/Max_flow.svg

https://commons.wikimedia.org/wiki/File:Max_flow.svg

  • Flot maximum : 5

  • Coupe minimale : {s, p} / {o, q, r, t} : 5

F pour passer en plein écran ou O pour afficher la vue d'ensemble.
Versions sans animation, plein écran, imprimable.

Exercices​

Ford-Fulkerson​

Appliquer l'algorithme de Ford-Fulkerson et trouver la coupe minimum sur les graphes suivants :

graphviz

Solution

graphviz

Flot maximum : 5 + 5 + 5 = 15

Coupe minimum : {S, U, V} / {T} ou {S} / {T, U, V}

graphviz

Solution

graphviz

Flot maximum : 2 + 3 + 2 = 7

Coupe minimum : {S, A} / {B, C, D, T} ou {S} / {A, B, C, D, T}

Références​

Autres exemples​