Ford-Fulkersonův algoritmus

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 29. dubna 2022; kontroly vyžadují 3 úpravy .

Algoritmus Ford-Fulkerson řeší problém nalezení maximálního toku v dopravní síti .

Myšlenka algoritmu je následující. Hodnota průtoku je zpočátku nastavena na 0: pro všechny . Množství toku se pak iterativně zvyšuje hledáním rozšiřující cesty (cesta od zdroje k jímce, po které lze vysílat více toku). Proces se opakuje, dokud není nalezena rozšiřující cesta.

Algoritmus

Neformální popis

  1. Obnovili jsme všechny streamy. Zbytková síť se zpočátku shoduje s původní sítí.
  2. Ve zbytkové síti najdeme libovolnou cestu od zdroje k jímce. Pokud taková cesta není, zastavíme se.
  3. Necháme přes nalezenou cestu (říká se tomu rostoucí cesta nebo rostoucí řetězec ) maximální možný tok:
    1. Na nalezené cestě ve zbytkové síti hledáme hranu s minimální kapacitou .
    2. Pro každou hranu na nalezené cestě průtok zvýšíme o , v opačném směru snížíme o .
    3. Upravujeme zbytkovou síť. Pro všechny hrany na nalezené cestě a také pro hrany k nim protilehlé (antiparalelní) vypočítáme novou kapacitu. Pokud bude nenulová, přidáme do zbytkové sítě hranu, a pokud bude nulová, vymažeme ji.
  4. Vrátíme se ke kroku 2.

Je důležité, aby algoritmus přesně neurčoval, jakou cestu hledáme v kroku 2 nebo jak to děláme. Z tohoto důvodu je zaručeno, že algoritmus bude konvergovat pouze pro celočíselné šířky pásma, ale i pro ně, pro velké šířky pásma, může běžet velmi dlouho. Pokud jsou kapacity reálné, algoritmus může běžet neomezeně dlouho, aniž by došlo k konvergování k optimálnímu řešení (viz příklad níže ).

Pokud nehledáte žádnou cestu, ale tu nejkratší, dostanete Edmonds- Karpův algoritmus nebo Dinitsův algoritmus . Tyto algoritmy konvergují pro jakékoli reálné váhy v čase , resp.

Formální popis

Daný graf s kapacitou a tokem pro hrany od do . Je potřeba najít maximální průtok ze zdroje do dřezu . V každém kroku algoritmu platí stejné podmínky jako pro všechny toky:

Zbytková síť  je síť s šířkou pásma a bez toku.

Vstupní graf se šířkou pásma , zdrojem a jímkou ​​Výstup Maximální průtok od do

  1. pro všechny hrany
  2. Pokud existuje cesta od do do taková, že pro všechny hrany :
    1. Nalézt
    2. Pro každou hranu

Cestu lze najít například prohledáváním do šířky ( algoritmus Edmonds-Karp ) nebo prohledáváním do hloubky v .

Obtížnost

V každém kroku algoritmus přidá proud rozšiřující cesty k existujícímu proudu. Pokud jsou kapacity všech hran celá čísla, lze snadno indukcí dokázat, že toky přes všechny hrany budou vždy celá čísla. Proto v každém kroku algoritmus zvýší tok alespoň o jeden, takže bude konvergovat ve většině kroků, kde f je maximální tok v grafu. Každý krok je možné dokončit v čase , kde je počet hran v grafu, pak je celková doba běhu algoritmu omezena .

Pokud je kapacita alespoň jedné z hran iracionální číslo, pak může algoritmus běžet neomezeně dlouho, aniž by dokonce nutně konvergoval ke správnému řešení. Příklad je uveden níže.

Příklad nekonvergujícího algoritmu

Uvažujme síť zobrazenou vpravo se zdrojem , sink , hranami , , a kapacitou všech ostatních hran rovnou celému číslu . Konstanta je zvolena tak, že . Použijeme cesty ze zbytkového grafu uvedené v tabulce a , a .

Krok Nalezená cesta Přidáno vlákno Zbytkové kapacity
0
jeden
2
3
čtyři
5

Všimněte si, že po kroku 1, stejně jako po kroku 5, zbytkové schopnosti hran , a mají tvar , respektive , pro některé přirozené . To znamená, že můžeme použít rozšiřující cesty , , a nekonečně mnohokrát a zbytková kapacita těchto hran bude vždy ve stejném tvaru. Celkový průtok po kroku 5 je . V nekonečném čase bude celkový průtok konvergovat k , zatímco maximální průtok je . Algoritmus tedy nejen běží donekonečna, ale ani nekonverguje k optimálnímu řešení. [jeden]

Příklad

Následující příklad ukazuje první kroky Ford-Fulkersonova algoritmu v transportní síti se čtyřmi uzly, zdrojem A a jímkou ​​D . Tento příklad ukazuje nejhorší případ. Při použití prohledávání do šířky potřebuje algoritmus pouze 2 kroky.

Cesta Šířka pásma Výsledek
Počáteční dopravní síť


Po krocích 1998...
Cílová síť

Viz také

Odkazy

Literatura

Poznámky

  1. Zwick, Uri. Nejmenší sítě, na kterých se Ford-Fulkersonova procedura maximálního toku nemusí podařit ukončit  //  Teoretická informatika : deník. - 1995. - 21. srpna ( roč. 148 , č. 1 ). - S. 165-170 . - doi : 10.1016/0304-3975(95)00022-O .