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?

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 P∀e(e∈P→fe<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Δ=mine∈P(ce−fe)
  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)ce−fece−fe>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 :P′R

  • 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.P′G
  • 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.P′G

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.GfGs−t


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ź .s−t3vv1v2ww1w2(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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.