Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 26. 06. 2009 10:48 — Editoval nordec (26. 06. 2009 10:54)

nordec
Příspěvky: 122
Reputace:   
 

Ford-Fulkersonův algoritmus

Trochu se zabývám FF algoritmem s iracionálními kapacitami. Možná se ptám špatně, ale
1) jak můžou http://kam.mff.cuni.cz/~kuba/ka/ka.pdf(str. 128 Příklad: Uri Zwick) v orientovaném grafu vést cestu vprotisměru orientované hrany?
2) Jakto, že vedou zlepšující cestu přes hranu s už nulovou kapacitou?

Pozn.: kdybych použil 1) a 2) na grafu s čistě racionálními kapacitami, vyjde tok daleko větší, než maximální, protože tím pádem neberu ohled na kapacitu a orientaci hran.

Offline

 

#2 26. 06. 2009 11:15

Kondr
Veterán
Místo: Linz, Österreich
Příspěvky: 4247
Škola: FI MU 2013
Pozice: Vývojář, JKU
Reputace:   38 
 

Re: Ford-Fulkersonův algoritmus

Můžeme vést vylepšovací cestu i proti směru hrany, místo abychom tok hranou zvyšovali, tak jej snižujeme. Na kapacitě přitom nezáleží, pouze na dosavadním toku (ten nelze snížit na méně než 0). To je vidět už o příklad výše v odkázaných skriptech. Tam střídavě hodnotu toku prostřední hranou o 1 zvyšujeme a snižujeme.


BRKOS - matematický korespondenční seminář pro střední školy

Offline

 

#3 26. 06. 2009 12:15

Lishaak
Veterán
Místo: Praha
Příspěvky: 763
Reputace:   
Web
 

Re: Ford-Fulkersonův algoritmus

Kdyz jsem se kdysi ucil tento algoritmus a jemu podobne, taky mi prislo divne posilat tok proti smeru hrany. Tady je moje pomocka, pomoci ktere jsem tomu porozumel. Mejme sit

          Z
         / \
        /   \
       /     \
      v      v
     A <----B
     \         /
      \       /
       \     /
        v  v
          S

Kde hrany jsou jednosmerne silnice s pouze jednim pruhem (kapacita kazde hrany je 1). Je celkem jasne, ze kdyz chci poslat co nejvic aut z bodu Z do bodu S, tak poslu dve kolony, jedna cestou Z-A-S, druha cestou Z-A-S. Kdybych ale tento tok hledal FF algoritmem, muzu nejdriv objevit cestu Z-B-A-S. Poslu kolunu aut, ale ta druha uz se mi tam nevejde. Kdybych to resil, jako nejaky kontrolor dopravy, tak bych proste rekl, ze auta misto z bodu B do A pojedou z B do S. Tim se mi uvolni cesta A-S, a tedy i cela cesta Z-A-S, kterou muzu poslat opet celou jednu kolonu.  Tento postup ma uplne stejny vysledek, jak kdyz poslu jednotkovy tok zlespujici cestou Z-A-B-S proti smeru hrany B-A. Z tohoto pohledu je taky jasne, proc nemuzu posilat tok proti smeru hrany, pokud v ni po smeru jeste nic netece. Je to vlastne, jako bych ten tok zatlacil zpatky.


Nothing in the world that's worth having comes easy.
Always do what you are most afraid of.

Offline

 

#4 26. 06. 2009 12:38

nordec
Příspěvky: 122
Reputace:   
 

Re: Ford-Fulkersonův algoritmus

↑ Kondr:A kromě toho aktuální průtok hranou asi nemůže překročit její kapacitu, nebo ano?

Offline

 

#5 26. 06. 2009 13:05

nordec
Příspěvky: 122
Reputace:   
 

Re: Ford-Fulkersonův algoritmus

↑ Lishaak:Už je mi to jasnější (názorných vysvětlení není nikdy dost, obzvlášť zde v matematice), když FF algoritmem nešikovně zatarasím jiné potenciální cesty, maximální tok bude stejný, jako kdyby se cesty rovnou vybíraly šikovně (Dinicův/Edmonds-Karpův algoritmus), prostě se to tam musí nějak naskládat.

Offline

 

#6 26. 06. 2009 13:15

nordec
Příspěvky: 122
Reputace:   
 

Re: Ford-Fulkersonův algoritmus

A kdyby hrana měla zápornou kapacitu, pak s ní zacházím jako s kladnou, ale orientovanou opačně.

Ještě jeden dotaz, jak se stane, že se pro iracionální kapacity FF algoritmus zacyklí (doufám, že pro racionální ne) ?

Offline

 

#7 26. 06. 2009 13:28

radekm
Příspěvky: 146
Reputace:   11 
Web
 

Re: Ford-Fulkersonův algoritmus

↑ nordec:

Racionální kapacity snadno pořešíš tak, že vezmeš nejmenší společný násobek jmenovatelů X a tím ty kapacity vynásobíš. Pak máš celočíselné kapacity. Najdeš max. tok, ten je X krát větší než max. tok v původní síti.

Pro iracionální čísla výše zmíněný postup nefunguje. Mj. další algoritmy popsané v tom textu zvládnou i iracionální čísla.

Offline

 

#8 26. 06. 2009 14:00

nordec
Příspěvky: 122
Reputace:   
 

Re: Ford-Fulkersonův algoritmus

↑ radekm:To souhlasím, ale zajímám se speciálně o FF algoritmus a nejde mi na rozum, proč dojde k tomu zacyklení (každou iterací se všechny rezervy kapacit postupně zmenšují, až nakonec nic víc neproteče = konec) ?

Offline

 

#9 26. 06. 2009 14:28

Kondr
Veterán
Místo: Linz, Österreich
Příspěvky: 4247
Škola: FI MU 2013
Pozice: Vývojář, JKU
Reputace:   38 
 

Re: Ford-Fulkersonův algoritmus

↑ nordec:Zacyklí se to, pokud nevhodně vybíráme ty cesty. Může se nám stát, že pořád něco přičítáme, ale jsou to čím dál menší čísla, tu "nejdůležitější" vylepšovací cestu opomíjíme. Můžeme tak třeba do nekonečna přičítat 1+1/f+1/f^2+1/f^3+... , kde f<1 součet bude 1/(1-f), ale někde vedle vede hrana s kapacitou 42/(1-f), ke které se nedostaneme. U racionálních kapacit je tomuto zabráněno tím, že nikdy nevylepšujeme o méně než 1/d, kde d je společný násobek jmenovatelů všech kapacit (použijeme-li trik s vynásobením, pak vždy vylepšujeme alespoň o 1).


BRKOS - matematický korespondenční seminář pro střední školy

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson