Wykres resztkowy w maksymalnym przepływie

14

Czytam tutaj o problemie z maksymalnym przepływem . Nie mogłem zrozumieć intuicji stojącej za wykresem rezydualnym. Dlaczego podczas obliczania przepływu bierzemy pod uwagę tylne krawędzie?

Czy ktoś może mi pomóc zrozumieć pojęcie wykresu resztkowego?

Jak zmienia się algorytm w niekierowanych grafach?

csds
źródło

Odpowiedzi:

28

Intuicyjna interpretacja wykresu resztkowego w problemie maksymalnego przepływu jest bardzo dobrze przedstawiona w tym wykładzie. Wyjaśnienie jest następujące.

Załóżmy, że próbujemy rozwiązać problem maksymalnego przepływu dla następującej sieci (gdzie każda etykieta oznacza zarówno przepływ przepchnięty przez krawędź i pojemność tej krawędzi):Gfe/cefeece

Przykład działania

Jednym z możliwych chciwych podejść jest:

  1. Odebrać dowolne rozszerzanie ścieżki , która wychodzi z wierzchołka źródło zlewu wierzchołek tak, że ); to znaczy wszystkie krawędzie w mają dostępną pojemność.s t ePst Pe(ePfe<ceP
  2. Popchnij maksymalny możliwy przepływ przez tę ścieżkę. Wartość określa się przez wąskie gardło w ; to znaczy krawędź o minimalnej dostępnej pojemności. Formalnie .ΔΔPΔ=mineP(cefe)
  3. Przejdź do kroku 1, aż nie będzie żadnych ścieżek rozszerzających.

Oznacza to, że znajdź ścieżkę o dostępnej pojemności, wyślij przepływ wzdłuż tej ścieżki i powtórz.

W jedno możliwe wykonanie powyższej heurystyki znajduje trzy ścieżki rozszerzające , i , w tej kolejności. Te ścieżki wypychają odpowiednio 2, 2 i 1 jednostki przepływu, co daje całkowity przepływ 5:GP1P2P3

Możliwe wykonanie chciwego podejścia dla maksymalnego przepływu

Wybór ścieżek w tej kolejności prowadzi do optymalnego rozwiązania; co się jednak stanie, jeśli najpierw wybierzemy (tj. przed i )?P3P1P2

Blokowanie ścieżki

Otrzymujemy tak zwany przepływ blokujący : nie ma już żadnych ścieżek rozszerzających. W takim przypadku całkowity przepływ wynosi 3, co nie jest optymalne. Ten problem można rozwiązać, zezwalając na operacje cofania (tj. Zezwalając na wysyłanie przepływu w odwrotną stronę, cofanie pracy poprzednich iteracji): wystarczy przesunąć 2 jednostki przepływu wstecz od wierzchołka do wierzchołka następujący sposób:wv

Przepływ wstecz

Kodowanie tych dozwolonych operacji cofania jest głównym celem wykresu resztkowego .

Wykres resztkowy sieci ma taki sam zestaw wierzchołków jak i zawiera dla każdej krawędzi :RGGe=(u,v)G

  • Przednia krawędź o pojemności , jeśli .e=(u,v)cefecefe>0

  • krawędź o pojemności , jeśli .e=(v,u)fefe>0

Weźmy na przykład wykres resztkowy który jest uzyskiwany po pierwszej iteracji zachłannej heurystyki, gdy heurystyka najpierw wybiera (to znaczy, kiedy otrzymuje przepływ blokujący):RP3

Wykres resztkowy

Zauważ, że operacja cofania , która popycha 2 jednostki przepływu z do jest kodowana jako ścieżka do przodu (zwiększająca) od do w :wvstR

Ścieżka rozszerzania na wykresie resztkowym

Ogólnie:

Po wybraniu ścieżki rozszerzającej na wykresie resztkowym :PR

  • Każda krawędź w która odpowiada przedniej krawędzi w zwiększa przepływ, stosując krawędź o dostępnej pojemności.PG
  • Każda krawędź w która odpowiada krawędzi cofającej się w cofa przepływ, który w przeszłości był popychany do przodu.PG

Jest to główna idea metody Forda-Fulkersona .

Metoda Forda-Fulkersona postępuje dokładnie tak samo, jak chciwe podejście opisane powyżej, ale zatrzymuje się tylko wtedy, gdy nie ma już ścieżek rozszerzających na wykresie resztkowym (nie w oryginalnej sieci). Metoda jest poprawna (tzn. Zawsze oblicza maksymalny przepływ), ponieważ wykres resztkowy ustanawia następujący warunek optymalności :

Przy danej sieci przepływ jest maksymalny w jeśli nie ma ścieżki na wykresie resztkowym.GfGst

Mario Cervera
źródło
Czy istnieje przykład, w którym ścieżki są dodawane w kolejności najkrótszej długości, jak opisano w algorytmie Edmondsa-Karpa? W twoim kontrprzykładzie pierwsza ścieżka ma długość 3, podczas gdy krótsza (tj. 2) ścieżka może zostać znaleziona i zostanie dodana jako pierwsza, jeśli wykonujemy Edmonds-Karp.
Roy
Możesz po prostu sprawić, aby wszystkie ścieżki na oryginalnym wykresie miały długość . Aby to zrobić, podziel wierzchołek na dwa wierzchołki i . Następnie podziel na i . Dodaj także dwie krawędzie i o pojemności . Krawędź, która pierwotnie przechodziła z na , teraz będzie się z na . Możemy uzyskać ten sam rodzaj przepływu blokującego, jeśli początkowo wybierzemy ścieżkę zawierającą krawędź .st3vv1v2ww1w2(v1,v2)(w1,w2)2vwv1w2(v1,w2)
Mario Cervera
Twój przykład ma sens. Zawsze możemy przedłużyć wykres na innych krawędziach cięcia, aby dana krawędź znajdowała się na jednej z najkrótszych ścieżek.
Roy
3

Intuicyjna sieć rezydualna polega na tym, że pozwala nam „anulować” już przypisany przepływ, tj. Jeśli mamy już przypisane 2 jednostki przepływu z do , wówczas przekazanie 1 jednostki przepływu z do jest interpretowane jako anulowanie jednej jednostki pierwotnego przepływu od do .ABBAAB

Banach Tarski
źródło