Algorytm de Ford-Fulkeson-Wikipédia
Przykład wykonania algorytmu Forda-Fulkerson. Animacja wyświetla wykres resztkowy odpowiadający każdej iteracji.
W informatyce, Algorytm Forda-Fulkerson jest algorytmem problemu maksymalnego przepływu, klasycznego problemu optymalizacji w dziedzinie badań operacyjnych. Jest to spowodowane Lester Randolph Ford Junior i D. R. Fulkerson [[[ Pierwszy ] I jest to wariant algorytmu Busackera i Gowen.
Definicja problemu [[[ modyfikator |. Modyfikator i kod ]
Ten problem optymalizacji może być reprezentowany przez wykres z wejściem (po lewej) i wyjściem (po prawej). Przepływ reprezentuje krążenie wejścia do wyjścia, stąd użycie tego algorytmu w problemach sieciowych. Aplikacje są wiele: problemy komputerowe, drogi, koleje itp. Dotyczy to również wszystkich innych problemów transferowych, takich jak import/eksport, migracyjne, przepływy demograficzne, ale także na przepływach czysto cyfrowych, takich jak transfery finansowe. W przypadku bardzo dużych danych istnieje kilka bardziej wydajnych algorytmów do rozwiązania problemu maksymalnego przepływu.
Przykład aplikacji [[[ modyfikator |. Modyfikator i kod ]
Firma towarowa ma trzy centra: jeden w Paryżu, drugi w Lyonie, trzeci w Marsylii. Możliwe są trzy miejsca: Polska, Szwecja, Grecja. Każde z centrów towarowych ma początkowe zapasy towarów (Paryż: 100; Lyon: 80; Marsylia: 150). Podobnie każdy kraj przybycia ma maksymalne żądanie importu (Polska: 120; Szwecja: 140; Grecja: 50).
Algorytm Forda-Fulkerson zoptymalizuje te przepływy za pomocą narzędzia do modelowania matematycznego. Podstawowa struktura jest reprezentowana przez zorientowany wykres, którego po lewej stronie symbolizuje początkowy zapas. Trzy łuki odchodzą, każde prowadzące do szczytu reprezentującego centrum towarowe. Ostatni szczyt symbolizuje koniec dostawy, do którego trzy łuki pochodzą ze szczytów reprezentujących cel dostawy.
W niniejszym przykładzie macierz sąsiedniej przenosi zatem w pierwszym wierszu wartości wspomnianych zapasów. I odwrotnie, pod koniec łańcucha powiązana macierz uwzględni w ostatniej kolumnie odpowiednie żądania cytowanych krajów. Pomiędzy szczytami „centrum towarowego” a „docelowym” szczytami można znaleźć na szczytach i pośrednie łuki, pojemności tych łuków odpowiadające maksymalnej frachcie od jednego punktu do drugiego.
Paris Polska
/ /
100 --- ------- ... ------- ---- 120
/ 80 węzłów 140
Wyjazd ------- Lyon ----- Intermé- ---- Szwecja -------- End
Pamiętniki /
150 --- ------- ... ------- --- 50
/ /
Marsylia Grecja
Problem można uogólnić na krążenie w sieci (pojazdy, płyny, pieniądze itp.), Ilości matematyczne bezkrytycznie zastępują rzeczywiste fakty, które mają reprezentować.
Formalizowanie [[[ modyfikator |. Modyfikator i kod ]
Sieć [[[ modyfikator |. Modyfikator i kod ]
Lub sieć
z :
- wykres zorientowany na niezaprzeczalny;
- pojemność Z konwencją: jeśli łuk nie istnieje, ;
- ŹRÓDŁO S Sans Arcs uczestnicy;
- Studnia T Bez wychodzących łuków.
Zakłada się, że nie ma anty-równoległych łuków, to znaczy, że istnienie łuku
wyklucza istnienie ARC
.
Ładny [[[ modyfikator |. Modyfikator i kod ]
Przepływ sieci jest funkcją
Kto sprawdza:
- Dla wszystkich szczytów , na ;
- na każdy szczyt Jak na przykład I : (Przychodzący przepływ jest równy przepływowi wychodzącemu: właściwość ochrony).
Wartość przepływu F Wschód
.
Jest to algorytm iteracyjny.
Z każdą iteracją obecne rozwiązanie jest przepływem, który spełnia ograniczenia pojemności (jest to zatem możliwy do osiągnięcia przepływ), a algorytm próbuje zwiększyć wartość tego przepływu.
Może to wymagać anulowania niewłaściwych wyborów. Aby to zrobić, definiujemy resztkowy wykres G i F co wskazuje możliwe modyfikacje (dodanie lub anulowanie): jest to wykres ważony
gdzie mamy
I
Pseudo kod [[[ modyfikator |. Modyfikator i kod ]
Wejście Sieć Wyjście Maksymalny przepływ F Funkcjonować Ford_fulkerson ( ) Ładne zero Dopóki Istnieje prosta ścieżka z S ma T Na wykresie resztkowym : Dla cała krawędź : I : W przeciwnym razie : Odrzucać F
Algorytm nie określa, jak znaleźć każdą ścieżkę
. Algorytm Edmonds-Karp, specjalizacja algorytmu Forda-Fulkersona, oferuje trasę szerokości.
Każda znaleziona ścieżka ma gwarancję zwiększenia wartości przepływu, ponieważ koniecznie zaczyna się od łuku opuszczającego lato źródła i kończy się łukiem, który dobrze wpisuje się na szczyt.
Przykład wykonania [[[ modyfikator |. Modyfikator i kod ]
Rozważamy sieć przepływu , składający się z wykresu na czterech szczytach i pięć krawędzi , ze źródła , Wellsa i funkcja pojemności .
Zaczynamy od pustego przepływu wartość Każda krawędź. Początkowo wykres resztkowy i resztkowe zdolności Następnie odpowiadają dokładnie sieci z pojemnością . |
Wykres (z pojemnością ) |
|
||||||||||||||||||
Ładny |
|
|||||||||||||||||||
Resztkowy wykres (Z resztkową pojemnością ) |
|
|||||||||||||||||||
Załóżmy, że algorytm najpierw wybiera ścieżkę (niebieski). Na tej ścieżce możesz jak najwięcej zwiększyć natężenie przepływu Od grzbietu ogranicza ( ). Rezultatem jest nowy przepływ (który zawsze będzie nazywany ) z .
Grzbiet ma pojemność . Jest używany w przepływie: . Na wykresie resztkowym jego pojemność resztkowa będzie zatem . Podobnie I . Trzy krawędzie są ściśle pozytywne w przepływie. Te wagi przepływu mogą nie być najbardziej optymalne. Nowe tylne krawędzie (na czerwono) na wykresie resztkowym zaznacz fakt, że zawsze możemy zmniejszyć przepływ tych krawędzi. |
Poprawa ścieżki (Z resztkowymi zdolnościami ) | |||||||||||||||||||
Ładny |
|
|||||||||||||||||||
Resztkowy wykres wynikowe (z nowymi możliwościami resztkowymi ) |
|
|||||||||||||||||||
Załóżmy, że algorytm wybiera poprawę ścieżki . Maksymalny wzrost przepływu jest ograniczony przez pojemność resztkową . Po raz pierwszy przechodzimy przez tylną krawędź ( ). Podczas przepływu F Zwiększa 1 wzdłuż krawędzi (S, V) I (u, t) , zmniejsza się o 1 wzdłuż (u, v) .
Można zauważyć, że resztkowe pojemności tylnych krawędzi są zawsze równe ciężarowi przepływu. |
Poprawa ścieżki (Z resztkowymi zdolnościami ) | |||||||||||||||||||
Ładny |
|
|||||||||||||||||||
Resztkowy wykres wynikowe (z nowymi możliwościami resztkowymi ) |
|
|||||||||||||||||||
Załóżmy, że algorytm ponownie wybiera ścieżkę . Tym razem przepływ wzdłuż ścieżki można zwiększyć tylko o 1. To dokładnie odpowiada ilości, o którą zmniejszyliśmy (u, v) w poprzednim kroku. Rzeczywiście, algorytm może zrobić wiele tam iz powrotem. | Poprawa ścieżki (Z resztkowymi zdolnościami ) | |||||||||||||||||||
Ładny |
|
|||||||||||||||||||
Resztkowy wykres wynikowe (z nowymi możliwościami resztkowymi ) |
|
|||||||||||||||||||
Tutaj tylko ścieżka jest możliwe. To następnie zwiększa przepływ 1. przepływ ma następnie wartość . Wychodzące krawędzie źródła są w pełni używane, więc ten przepływ jest maksymalnym przepływem. Cięcie na poziomie (S, U) I (S, V) jest zatem minimalnym cięciem. Dlatego szanujemy twierdzenie Flu-Max/minmin, które twierdzi, że maksymalny przepływ ma taką samą wartość jak minimalne cięcie.
Algorytm następnie kończy się, ponieważ nie ma ścieżki S ma T nie istnieje na uzyskanym wykresie resztkowym. Mamy więc maksymalny przepływ. |
Poprawa ścieżki (Z resztkowymi zdolnościami ) | |||||||||||||||||||
Niezłe maksima |
|
|||||||||||||||||||
Resztkowy wykres wynikowe (z nowymi możliwościami resztkowymi ) |
|
Złożoność [[[ modyfikator |. Modyfikator i kod ]
Maksymalny przepływ jest osiągany, gdy nie można znaleźć więcej poprawy ścieżki. Nie ma jednak pewności, że ta sytuacja zostanie osiągnięta, ale odpowiedź będzie poprawna, jeśli algorytm się skończy. W przypadku, gdy algorytm działa w nieskończoność, przepływ może nawet nie zbiegać się w kierunku maksymalnego przepływu. Jednak sytuacja ta występuje tylko w przypadku irracjonalnych wartości powodziowych. [Ref. niezbędny] Gdy zdolności są liczbami całkowite, czas wykonania algorytmu Forda-Fulkersona jest ograniczony
(Zobacz notacje Landau), gdzie
to liczba krawędzi w sieci przepływu i
jest wartością maksymalnego przepływu. Rzeczywiście, każdą rosnącą ścieżką można znaleźć w
i zwiększa przepływ co najmniej całej ilości
z
jako górny terminal.
Wariantem algorytmu Forda-Fulkersona z gwarantowanym zakończeniem i czasem wykonania niezależnym od maksymalnej wartości przepływu jest algorytm Edmonds-Karp, który ma złożoność czasową
.
Zakończenie [[[ modyfikator |. Modyfikator i kod ]
Jeśli krawędzie krawędzi są całe, algorytm kończy się.
Absurd może to wykazać, zakładając, że algorytm się nie kończy. Biorąc pod uwagę kontynuację obliczonych fal, istnieje kilka właściwości:
- Kontynuacja wzrasta ściśle;
- Zwiększa go wartość maksymalnego przepływu;
- Ma całe wartości.
Cały ten apartament jest nieskończony, zwiększony i ściśle rosnący, co jest absurdalne.
Przykład, dla którego algorytm nie kończy [[[ modyfikator |. Modyfikator i kod ]
Jesteśmy zainteresowani następującym wykresem, który ma źródło źródła
, dla studni
. Krawędzie
W
I
mieć odpowiednie zdolności
W
I
. Pojemność innych krawędzi jest ustawiona
. Wybraliśmy stałą
aby
. Rozważamy wykonanie algorytmu wybierającego następujące ścieżki, w których zauważamy
W
I
.
Zauważamy, że po etapie 1 i 5 zdolności resztkowe krawędzi
W
I
są odpowiednio w formie
W
I
A dodany przepływ jest
Lub
. Zatem poprzez nawrót zawsze możemy powtórzyć pętlę drogową
W
W
I
jednocześnie dodając ściśle dodatni przepływ, ponieważ możliwości resztkowe zawsze pozostaną
W
I
Na końcu egzekucji na ścieżkach. Algorytm nie kończy zatem na tym wpisie. Fakt, że mamy pojemność niezwiązaną z całością, ma kluczowe znaczenie, ponieważ pozwala on na ściśle rosnący i zwiększony nieskończony apartament przepływu. [[[ 2 ]
- (W) L. R. Bród i D. R. Fulkerson W ‘ Maksymalny przepływ przez sieć » W Canadian Journal of Mathematics W tom. 8, 1956/ed, P. 399–404 (ISSN 0008-414X I 1496-4279 , Doi 10.4153/CJM-1956-045-5 W Czytaj online , skonsultuałem się z )
- Typ Zwick « Najmniejsze sieci, na których procedura maksymalnego przepływu Forda – Fulkersona może nie zakończyć », Teoretyczna informatyka W tom. 148, N O 1, W P. 165–170 (Doi 10.1016/0304-3975 (95) 00022-O )
Powiązany artykuł [[[ modyfikator |. Modyfikator i kod ]
- Algorytm Edmonds-Karp jest specjalizacją w algorytmie Forda-Fulkersona do rozwiązania problemu maksymalnego przepływu w sieci.
Linki zewnętrzne [[[ modyfikator |. Modyfikator i kod ]
Bibliografia [[[ modyfikator |. Modyfikator i kod ]
- Prosty algorytm znajdowania maksymalnych przepływów sieci i aplikacji do problemu zaczepowego (Ford L.R., Fulkerson D.R), Rand Report Rand Corporation, Santa Monica, .
- Lester R. Bród ET Delbert R. Fulkerson « Maksymalny przepływ przez sieć », Canadian Journal of Mathematics W tom. 8, N O 3, W P. 399-404
- Problem z transportem (Zamów A.), Nauka o zarządzaniu 2, 1956.
- O niedoborze nieskończonej sieci (Berge C.), Raporty Akademii Nauk 245, 1957.
- Zaproszenie na badania operacyjne (Kaufmann A., Faure R.) Dunod Entreprise, 1979.
- Wkład teorii wykresów w badanie problemów związanych z zamawianiem (Roy B.) Międzynarodowy Kongres Badań Operacyjnych, 1960.
- Lester Randolph Bród ET Delbert Ray Fulkerson W Przepływy w sieciach , Princeton, NJ, Princeton University Press,
- Ravindra K. Ajuaha , Thomas L. Magnanti i James B. Orlin W Przepływy sieci – teoria, algorytmy i aplikacje , Prentice Hall,
- Thomas H. Corm , Charles E. Leiseron , Ronald L. Ravest ET Clifford Stein W Wprowadzenie do algorytmów , Z prasą,
- Jon Kleinberg Et Eva TARDOS W Projektowanie algorytmów , Pearson Education India,
Recent Comments