Graphique résiduel dans le débit maximal


14

Je lis sur le problème de débit maximum ici . Je ne pouvais pas comprendre l'intuition derrière le graphique résiduel. Pourquoi considérons-nous les bords arrière lors du calcul du débit?

Quelqu'un peut-il m'aider à comprendre le concept de graphique résiduel?

Comment l'algorithme change-t-il dans les graphiques non dirigés?

Réponses:


28

L'intuition derrière le graphique résiduel dans le problème de débit maximal est très bien présentée dans cette conférence. L'explication est la suivante.

Supposons que nous essayons de résoudre le problème de débit maximal pour le réseau (où chaque étiquette f e / c e désigne à la fois le flux poussé à travers un bord et la capacité de ce bord):gFe/ce e c eFeece

Exemple d'exécution

Une approche gourmande possible est la suivante:

  1. Choisissez un chemin d' augmentation arbitraire qui va du sommet source s au sommet puits tel que ); c'est-à-dire que tous les bords de ont une capacité disponible.Pset Pe(ePFe<ceP
  2. Δ P Δ = min e P ( c e - f e )ΔΔPΔ=mineP(ce-Fe)
  3. Passez à l'étape 1 jusqu'à ce qu'aucun chemin d'augmentation n'existe.

Autrement dit, recherchez un chemin avec la capacité disponible, envoyez le flux le long de ce chemin et répétez.

Dans , une exécution possible de l'heuristique ci-dessus trouve trois chemins d'augmentation , et , dans cet ordre. Ces chemins poussent respectivement 2, 2 et 1 unités de débit, pour un débit total de 5:P 1 P 2 P 3gP1P2P3

Exécution possible de l'approche gourmande pour un débit maximum

Le choix des chemins dans cet ordre conduit à une solution optimale; cependant, que se passe-t-il si nous sélectionnons premier (c'est-à-dire avant et )?P 1 P 2P3P1P2

Chemin de blocage

Nous obtenons ce qu'on appelle un flux de blocage : il n'existe plus de chemins d'augmentation. Dans ce cas, le débit total est de 3, ce qui n'est pas optimal. Ce problème peut être résolu en autorisant les opérations d' annulation (c'est-à-dire en autorisant l'envoi de flux à l'envers, en annulant le travail des itérations précédentes): il suffit de pousser 2 unités de flux vers l'arrière du sommet au sommet comme ceci:vwv

Flux vers l'arrière

L'encodage de ces opérations d'annulation autorisées est l'objectif principal du graphique résiduel .

Un graphe résiduel d'un réseau a le même ensemble de sommets que et inclut, pour chaque arête :G G e = ( u , v ) GRgge=(u,v)g

  • Un bord avant de capacité , si .c e - f e c e - fe=(u,v)ce-Fece-Fe>0

  • Un bord arrière de capacité , si .f e f e > 0e=(v,u)fefe>0

Par exemple, considérons le graphe résiduel qui est obtenu après la première itération de l'heuristique gourmande lorsque l'heuristique sélectionne premier (c'est-à-dire lorsqu'elle obtient le flux de blocage):P 3RP3

Graphique résiduel

Notez que l' opération d' annulation qui pousse 2 unités de flux de à est codée comme un chemin direct (augmentant) de à dans :v s t RwvstR

Augmenter le chemin dans le graphique résiduel

En général:

Lorsqu'un chemin d'augmentation est sélectionné dans le graphe résiduel : RPR

  • Chaque bord en qui correspond à un bord avant en augmente le débit en utilisant un bord avec une capacité disponible. GPg
  • Chaque bord en qui correspond à un bord qui recule en annule le flux qui a été poussé vers l'avant dans le passé. GPg

C'est l'idée principale derrière la méthode Ford – Fulkerson .

La méthode Ford – Fulkerson procède exactement de la même manière que l'approche gourmande décrite ci-dessus, mais elle ne s'arrête que lorsqu'il n'y a plus de chemins d'augmentation dans le graphique résiduel (pas dans le réseau d'origine). La méthode est correcte (c'est-à-dire qu'elle calcule toujours un débit maximum) car le graphique résiduel établit la condition d'optimalité suivante :

Etant donné un réseau , un flux est maximum dans s'il n'y a pas de chemin dans le graphe résiduel.f G s - tgFgs-t


Existe-t-il un exemple où des chemins sont ajoutés dans l'ordre de la plus courte longueur comme décrit dans l'algorithme d'Edmonds-Karp? Dans votre contre-exemple, le premier chemin est de longueur 3 tandis qu'un chemin plus court (c'est-à-dire 2) peut être trouvé et serait ajouté en premier si nous faisons Edmonds-Karp.
Roy

Vous pouvez simplement faire en sorte que tous les chemins du graphique d'origine aient une longueur de . Pour ce faire, divisez le sommet en deux sommets et . Ensuite, en et . Ajoutez également deux arêtes et de capacité . Le bord qui, à l'origine, passait de à passera désormais de à . Nous pouvons obtenir le même type de flux de blocage si nous choisissons initialement le chemin qui contient le bord .s-t3vv1v2ww1w2(v1,v2)(w1,w2)2vwv1w2(v1,w2)
Mario Cervera

Votre exemple est logique. Nous pouvons toujours étendre le graphique sur d'autres bords de la coupe pour que le bord en question soit sur l'un des chemins les plus courts.
Roy

3

L'intuition derrière le réseau résiduel est qu'il nous permet «d'annuler» un flux déjà attribué, c'est-à-dire si nous avons déjà attribué 2 unités de flux de à B , alors le passage de 1 unité de flux de B à A est interprété comme annulant une unité. de l'écoulement initial de A à B .UNEBBUNEUNEB

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.