4. Goldbergův algoritmus

Podobné dokumenty
1. Toky v sítích Toky v sítích

1. Toky v sítích Toky v sítích

0. Ukázka použití maker (zapsal Martin Mareš) 1. Toky v sítích (zapsala Markéta Popelová)

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

1. Toky, řezy a Fordův-Fulkersonův algoritmus

Dijkstrův algoritmus

2.Tokyvsítích. Čajovod

Stromové rozklady. Definice 1. Stromový rozklad grafu G je dvojice (T, β) taková, že T je strom,

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

Vrcholová barevnost grafu

= je prostý orientovaný graf., formálně c ( u, v) 0. dva speciální uzly: zdrojový uzel s a cílový uzel t. Dále budeme bez

5 Orientované grafy, Toky v sítích

Algoritmus pro hledání nejkratší cesty orientovaným grafem

8 Přednáška z

1. Minimální kostry Od mìsteèka ke kostøe

1. Toky v sítích (zapsala Markéta Popelová)

PRIMITIVNÍ FUNKCE. Primitivní funkce primitivní funkce. geometrický popis integrály 1 integrály 2 spojité funkce konstrukce prim.

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry.

Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT

TOKY V SÍTÍCH II. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

prof. RNDr. Čestmír Burdík DrCs. prof. Ing. Edita Pelantová CSc. BI-ZMA ZS 2009/2010

PRIMITIVNÍ FUNKCE DEFINICE A MOTIVACE

IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)

12. Lineární programování

Algoritmizace složitost rekurzivních algoritmů. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Diskrétní matematika. DiM /01, zimní semestr 2018/2019

z nich byla poprvé dokázána v 19. století velikány analytické teorie čísel (Pafnutij Lvovič Čebyšev, Charles-Jean de la Vallée Poussin a další).

Riemannův určitý integrál

5. Lokální, vázané a globální extrémy

TGH10 - Maximální toky

Nechť je číselná posloupnost. Pro všechna položme. Posloupnost nazýváme posloupnost částečných součtů řady.

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

9. T r a n s f o r m a c e n á h o d n é v e l i č i n y

Rovnoměrně zrychlený = zrychlení je stále stejné = velikost rychlosti se každou sekundu zvýší (případně sníží) o stejný díl

Výroková a predikátová logika - IV

3. Prohledávání grafů

1 Linearní prostory nad komplexními čísly

fakulty MENDELU v Brně (LDF) s ohledem na disciplíny společného základu (reg. č. CZ.1.07/2.2.00/28.

9. T r a n s f o r m a c e n á h o d n é v e l i č i n y

Výroková a predikátová logika - II

Doba běhu daného algoritmu/programu. 1. Který fragment programu z následujících dvou proběhne rychleji?

M - Kvadratické rovnice a kvadratické nerovnice

Tento text je stručným shrnutím těch tvrzení Ramseyovy teorie, která zazněla

LDF MENDELU. Simona Fišnarová (MENDELU) Základy lineárního programování VMAT, IMT 1 / 25

y +q 1 (t)y = 0 (1) z +q 2 (t)z = 0 (2)

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

EXTRÉMY FUNKCÍ VÍCE PROMĚNNÝCH

AVDAT Nelineární regresní model

STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach fronta

Základy maticového počtu Matice, determinant, definitnost

PŘEDNÁŠKA 2 POSLOUPNOSTI

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

Matice. Předpokládejme, že A = (a ij ) je matice typu m n: diagonálou jsou rovny nule.


Numerické řešení nelineárních rovnic

VZOROVÝ TEST PRO 1. ROČNÍK (1. A, 3. C)

NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Determinant matice řádu 5 budeme počítat opakovaným použitím rozvoje determinantu podle vybraného řádku nebo sloupce. Aby byl náš výpočet

PLANARITA A TOKY V SÍTÍCH

Regulární výrazy. Definice Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto:

Označení derivace čárkami, resp. římskými číslicemi, volíme při nižším řádu derivace, jinak užíváme horní index v závorce f (5), f (6),... x c g (x).

Jan Březina. 7. března 2017

2. LIMITA A SPOJITOST FUNKCE

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Mimo samotné správnosti výsledku vypočteného zapsaným algoritmem je ještě jedno

PQ-stromy a rozpoznávání intervalových grafů v lineárním čase

10 Přednáška ze

Predik atov a logika - pˇredn aˇska () Predik atov a logika - pˇredn aˇska / 16

Poznámka. V některých literaturách se pro označení vektoru také používá symbolu u.

Těleso racionálních funkcí

+ 2y. a y = 1 x 2. du x = nxn 1 f(u) 2x n 3 yf (u)

Základy matematické analýzy

Cvičení 5 - Inverzní matice

Naproti tomu gramatika je vlastně soupis pravidel, jak

Matematická analýza III.

Kolik existuje různých stromů na pevně dané n-prvkové množině vrcholů?

TEORIE GRAFŮ TEORIE GRAFŮ 1

Často potřebujeme hledat mezi dvěma vrcholy grafu cestu, která je v nějakém

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

(4x) 5 + 7y = 14, (2y) 5 (3x) 7 = 74,

4EK213 LINEÁRNÍ MODELY

ANALYTICKÁ GEOMETRIE V ROVINĚ

Výroková a predikátová logika - V

Operace s maticemi. 19. února 2018

H {{u, v} : u,v U u v }

1 Determinanty a inverzní matice

Zpracoval: 7. Matematická indukce a rekurse. Řešení rekurentních (diferenčních) rovnic s konstantními koeficienty.

10. cvičení - LS 2017

Parametrické rovnice křivky

M - Kvadratické rovnice

Ukážeme si lineární algoritmus, který pro pevné k rozhodne, zda vstupní. stromový rozklad. Poznamenejme, že je-li k součástí vstupu, pak rozhodnout

1 Analytická geometrie

Číselné posloupnosti

Úlohy nejmenších čtverců

Hledáme efektivní řešení úloh na grafu

Toky v sítích. Ruský petrobaron vlastní ropná naleziště na Sibiři a trubky vedoucí do Evropy. Trubky vedou mezi nalezišti, uzlovými

Množinu všech slov nad abecedou Σ značíme Σ * Množinu všech neprázdných slov Σ + Jazyk nad abecedou Σ je libovolná množina slov nad Σ

Matematika III 10. přednáška Stromy a kostry

Polynomy. Mgr. Veronika Švandová a Mgr. Zdeněk Kříž, Ph. D. 1.1 Teorie Zavedení polynomů Operace s polynomy...

Rovnice se separovanými proměnnými

Transkript:

4. Goldbergův algoritmus Představíme si ještě jeden algoritmus pro hledání maximálního toku v síti. Bude daleko jednodušší než Dinicův algoritmus z předchozí kapitoly a po pár snadných úpravách bude mít stejnou nebo dokonce lepší časovou složitost. Jednoduchost algoritmu bude ale vykoupena trochu složitějším rozborem jeho správnosti a efektivity. Vlny a přebytky Značení z minulých kapitol, které se nám bude hodit: síť S = (V,E,z,s,c): V je množina vrcholů, E množina hran, z zdroj, s spotřebič a c funkce udávající kapacity hran. nudávápočetvrcholůgrafu, mpočetjehohran. f (v) jepřebytek vrcholu v přiohodnoceníhranfunkcí f,tedy součethodnotfnahranáchvedoucíchdovminussoučetnahranách vedoucíchzvven. r(uv)=c(uv) f(uv)+f(vu)jerezervahrany uv;taříká,kolikjednotektokumůžemepotétohraněještěposlat,atobuďpřičtenímpo směru hrany nebo odečtením proti směru. Hranám s kladnou rezervou říkáme nenasycené, stejně říkáme cestám složeným ze samých takových hran. Předchozí algoritmy začínaly s nulovým tokem a postupně ho zlepšovaly, až se stal maximálním. Goldbergův algoritmus naproti tomu začne s ohodnocením hran, kteréaninemusíbýttokem,apostupněhoupravujeazmenšuje,ažseznějstane tok, a to dokonce maximální. Definice:Funkce f: E Ê + 0 jevlnavsíti S,splňuje-lioběnásledujícípodmínky: e E: f(e) c(e)(vlnanepřekročíkapacityhran), v V \{z,s}: f (v) 0(přebytekvevrcholechjenezáporný). Každýtokjetedyvlnou,aleopačnětomutakbýtnemusí potřebujemese postupně zbavit nenulových přebytků ve všech vrcholech kromě zdroje a spotřebiče. K tomu nám bude sloužit následující operace: Definice:Převedenípřebytkupohraněuv,přičemžf (u) >0ar(uv) >0,provedeme tak,žepohraně uvpošleme δ=min(f (u),r(uv))jednotektoku,podobnějako v předchozích algoritmech buď přičtením po směru nebo odečtením proti směru. Pozorování: Převedení změní přebytky a rezervy následovně: f (u)=f (u) δ f (v)=f (v)+δ r (uv)=r(uv) δ r (vu)=r(vu)+δ Rádi bychom postupným převáděním všechny přebytky buď přepravili do spotřebičenebo,pokudjevlnapřílišvelká,jepřelilizpětdozdroje.chcemeseovšem 1 2012-11-14

vyhnout přelévání přebytků tam a zase zpět, takže vrcholům přiřadíme výšky to budou nějaká přirozená čísla h(v). Přebytek pak budeme ochotni převádět pouze z vyššího vrcholu do nižšího. Pokud se stane, že nalezneme vrchol s přebytkem, ze kterého nevede žádná nenasycená hrana směrem dolů, budeme tento vrchol zvedat tedy zvyšovat mu výšku po jedné, než se dostane dostatečně vysoko, aby z něj přebytek mohl odtéci. Získáme tak následující algoritmus: Algoritmus Goldberg Vstup: Síť. 1. Nastavíme počáteční výšky: (zdroj ve výšce n, ostatní ve výšce 0) 2. h(z) n 3. h(v) 0provšechny v z 4. Vytvoříme počáteční vlnu: (všechny hrany ze z na maximum, jinde 0) 5. f všude nulová funkce 6. f(zv) c(zv),kdykoliv zv E 7.Dokud u V \{z,s}:f (u) >0: 8. Pokud v V : uv E, r(uv) >0ah(u) > h(v), převedeme přebytek po hraně uv. 9. Vopačnémpřípadězvedneme u: h(u) h(u)+1. Výstup: Maximální tok f. Analýza algoritmu Algoritmusjejednoduchý,alenaprvnípohlednenívidětanito,žesevždy zastaví, natož že by měl vydat maximální tok. Postupně o něm dokážeme několikinvariantůalemmatapomocínichsedoberemekdůkazusprávnostiačasové složitosti. Invariant A(základní): 1.Funkce fjevkaždémkrokualgoritmuvlna. 2. Výška h(v) žádného vrcholu v nikdy neklesá. 3. h(z)=nah(s)=0poceloudobuběhualgoritmu. Důkaz: Indukcí dle počtu průchodů cyklem(7. 9. krok algoritmu): Po inicializaci algoritmu je vše v pořádku: přebytky všech vrcholů mimo zdroj jsou nezáporné, výšky souhlasí. Při převedení přebytku: Z definice převedení přímo plyne, že neporušuje kapacity a nevytváří záporné přebytky. Výšky se nemění. Přizvednutívrcholu:Tehdysenaopakměníjenvýšky,alepouze u vrcholů různých od zdroje a stoku. Výšky navíc pouze rostou. Invariant S(o Spádu): Neexistuje hrana uv, která by měla kladnou rezervu a spád h(u) h(v)většínež1. Důkaz: Indukcí dle běhu algoritmu. Na začátku mají všechny hrany ze zdroje rezervu 2 2012-11-14

nulovouavšechnyostatnívedoumezivrcholysvýškou0.vprůběhuvýpočtuby se tento invariant mohl pokazit pouze dvěma způsoby: Zvednutímvrcholu u,zekteréhovedehrana uvskladnourezervou a spádem 1. Tento případ nemůže nastat, neboť algoritmus by dal přednost převedení přebytku po této hraně před zvednutím. Zvětšenímrezervyhranysespádemvětšímnež1.Tototakénemůže nastat, neboť rezervu bychom mohli zvětšit jedině tak, že bychom poslali něco v protisměru a to nesmíme, jelikož bychom převáděli přebytek z nižšího vrcholu do vyššího. Lemma K(o Korektnosti): Když se algoritmus zastaví, je f maximální tok. Důkaz: Nejprve ukážeme, že f je tok: Omezení na kapacity splňuje tok stejně jako vlna, takže postačí dokázat, že platí Kirchhoffův zákon. Ten požaduje, aby přebytky ve všech vrcholech kromě zdroje a spotřebiče byly nulové. To ovšem musí být, protože nenulový přebytek by musel být kladný a algoritmus by se dosud nezastavil. Zbývá zdůvodnit, že f je maximální: Pro spor předpokládejme, že tomu tak není. Ze správnosti Fordova-Fulkersonova algoritmu plyne, že tehdy musí existovat nenasycená cesta ze zdroje do stoku. Uvažme libovolnou takovou cestu. Zdroj je stálevevýšce naspotřebičvevýšce0(vizinvarianta).tatocestatedypřekonává spád n,alemůžemítnejvýše n 1hran.Protosevnínacházíalespoňjednahrana se spádem alespoň 2. Jelikož je tato hrana součástí nenasycené cesty, musí být sama nenasycená, což je spor s invariantem S. Tok je tedy maximální. LemmaC(Cestadozdroje):Mějmevrchol v,jehožpřebytek f (v)jekladný.pak existuje nenasycená cesta z tohoto vrcholu do zdroje. Důkaz: Buď v vrchol s kladným přebytkem. Uvažme množinu A := {u V existuje nenasycená cesta z v do u}. Ukážeme, že tato množina obsahuje zdroj. Použijeme už mírně okoukaný trik: sečteme přebytky ve všech vrcholech množiny A. Všechny hrany ležící celé uvnitř A nebo celé venku přispějí dohromady nulou. Nenulou mohou přispět pouze hrany vedoucí ven z A nebo naopak zvenku dovnitř. Získáme: f (u)= f(ba) f(ab) 0. u A ba E(V \A,A) } {{ } =0 ab E(A,V\A) } {{ } 0 Ukažmesi,pročjeprvnísvorkarovnanule.Mějmehranu ab(a A, b V \A). Tamusímítnulovourezervu jinakbytotiživrchol bpatřildo A.Protopohraně ba nemůže nic téci. Obrázek k důkazu lemmatu C 3 2012-11-14

Druhá svorka je evidentně nezáporná, protože je to součet nezáporných ohodnocení hran. Proto u A f (u) 0.ZároveňvšakvAležíaspoňjedenvrcholskladným přebytkem, totiž v, tudíž v A musí být také nějaký vrchol se záporným přebytkem ajedinýtakovýjezdroj.tímjedokázáno,že zležíva,tedyževedenenasycená cestazvrcholu vdozdroje. InvariantV(Výška):Prokaždývrchol vje h(v) 2n. Důkaz:Kdybyexistovalvrchol vsvýškou h(v) >2n,mohlsedotétovýškydostat pouzezvednutímzvýškyalespoň2n.tehdymuselmítkladnýpřebytek f (v) >0 (jinak by nemohl být zvednut). Dle lemmatu C musela existovat nenasycená cestazvdozdroje.tatocestanicméněpřekonávalaspádalespoň n,alemohlamít nejvýše n 1 hran(na cestách se vrcholy neopakují). Tudíž musela obsahovat nenasycenouhranusespádemalespoň2,cožjesporsinvariantems. LemmaZ(početZvednutí):Běhemvýpočtunastanenejvýše2n 2 zvednutí. Důkaz: Z předchozího invariantu plyne, že každý vrchol mohl být zvednut nejvýše 2n-krát. Vrcholů je n. Teď nám ještě zbývá určit počet provedených převedení. Bude se nám hodit, když převedení rozdělíme na dva druhy: Definice: Řekneme, že převedení po hraně uv je nasycené, pokud po převodu rezerva r(uv)kleslananulu.vopačnémpřípadějenenasycené,atehdyurčitěklesne přebytek f (u)nanulu(tosenicméněmůžestátipřinasycenémpřevedení). Lemma S(naSycená převedení): Počet všech nasycených převedení je nejvýš nm. Důkaz: Pro každou hranu uv spočítejme počet nasycených převedení(tedy takových převedení, že po nich klesne rezerva hrany na nulu). Abychom dvakrát nasyceně převedlipřebytek(nebojehočást)zvrcholu udovrcholu v,takjsmemuseli u mezitím alespoň dvakrát zvednout: Po prvním nasyceném převedení z vrcholu u do vrcholu v se vynulovala rezerva hrany uv.uvědommesi,žepřitétooperacimuselobýt uvýšenež v,adokoncevíme, žebylovýšepřesněo1(vizinvariants).nežnastanedalšípřevedenípotétohraně, musíme její rezervu z nuly opět zvýšit. Jediný způsob, jak toho lze dosáhnout, je převéstčástpřebytkuzvzpátkydo u.ktomusemusí v dostat(alespoňo1) výše než u. Po přelití bude rezerva uv opět kladná. A abychom provedli nasycené převedeníznovuvesměruzudo v,musímezase udostat(alespoňo1)výšenež v. Protomusíme ualespoňo2zvednout nejprvenaúroveň vapakještěo1výše. Ukázali jsme tedy, že mezi každými dvěma nasycenými převedeními musel být vrchol u zvednut alespoň dvakrát. Podle lemmatu V se u mohlo zvedat maximálně 2n-krát za celý výpočet, takže všech nasycených převedení po hraně uv je nejvýše n a po všech hranách dohromady nejvýše nm. Potenciálovámetoda:Předchozídvělemmatajsmedokazovali lokálním způsobem zvednutí jsme počítali pro každý vrchol zvlášť a nasycená převedení pro každou hranu. Tento přístup pro nenasycená převedení nefunguje, jelikož jich lokálně může být velmi mnoho. Podaří se nám nicméně omezit jejich celkový počet. 4 2012-11-14

Jedímzezpůsobů,jaktaková globální tvrzeníochováníalgoritmůdokazovat, je použít potenciál. To je nějaká nezáporná funkce, která popisuje stav výpočtu. Pro každou operaci pak stanovíme, jaký vliv má na hodnotu potenciálu. Z toho odvodíme, že operací, které potenciál snižují, nemůže být výrazně více než těch, které ho zvyšují. Jinak by totiž potenciál musel někdy během výpočtu klesnout pod nulu. Stímtodruhemdůkazujsmesevlastněužsetkali.Tokdyžjsmevkapitoleovyhledávání v textu odhadovali počet průchodů po zpětných hranách. Roli potenciálu tam hrálo číslo stavu. V následujícím lemmatu bude potenciál trochu složitější. Zvolíme ho tak, aby operace, jejichž počty už známe(zvednutí, nasycené převedení), přispívaly nanejvýš malými kladnými čísly, a nenasycená převedení potenciál vždy snižovala. LemmaN(Nenasycenápřevedení):Početvšechnenasycenýchpřevedeníje O(n 2 m). Důkaz: Důkaz provedeme potenciálovou metodou. Uvažujme následující potenciál: Φ:= h(v). v z,s f (v)>0 Nyní se podívejme, jak se náš potenciál během algoritmu vyvíjí: NapočátkujeΦ=0. BěhemceléhoalgoritmujeΦ 0,neboťpotenciáljesoučtemnezáporných členů. Zvednutí vrcholu zvýší Φ o jedničku.(aby byl vrchol zvednut, musel mít kladný přebytek, takže vrchol do sumy již přispíval. Teď jen přispěječíslemo1vyšším.)jižvíme,žezacelýprůběhalgoritmu jevšechzvednutímaximálně2n 2,protozvedánímvrcholůzvýšíme potenciáldohromadynejvýšeo2n 2. NasycenépřevedenízvýšíΦnejvýšeo2n,protožebuďpopřevoduhranou uvv uzůstalnějakýpřebytek,takžesemohlpotenciál zvýšitnejvýšeoh(v) 2n,nebojepřebytekvupopřevodunulovýapotenciálsedokonceojednasnížil.PodlelemmatuSnastane nejvýše nm takových nasycených převedení a ta celkově potenciál zvýšímaximálněo2n 2 m. Konečně když převádíme po hraně uv nenasyceně, tak od potenciálu určitě odečteme výšku vrcholu u(neboť se vynuluje přebytek ve vrcholu u)amožnápřičtemevýškuvrcholu v.jenže h(v)=h(u) 1, a proto nenasycené převedení potenciál vždy sníží alespoň o jedna. Potenciálcelkověstoupneonejvyše2n 2 +2n 2 m=o(n 2 m),klesápouzepřinenasycených převedeních a pokaždé alespoň o 1. Proto je všech nenasycených převedení O(n 2 m). Implementace Zbývá vyřešit, jak síť a výšky reprezentovat, abychom dokázali rychle hledat vrcholy s přebytkem a nenasycené hrany vedoucí s kopce. 5 2012-11-14

Budeme si pamatovat seznam P všech vrcholů s kladným přebytkem. Když měníme přebytek nějakého vrcholu, můžeme tento seznam v konstantním čase aktualizovat buďtovrcholdoseznamupřidatnebohonaopakodebrat.(ktomusehodí, abysivrcholypamatovalyukazatelnasvoupolohuvseznamu P).Vkonstantním čase také umíme odpovědět, zda existuje nějaký vrchol s přebytkem. Dálesiprokaždývrchol u V budemeudržovatseznam L(u).Tenbude obsahovat všechny nenasycené hrany, které vedou z u dolů(mají spád alespoň 1). Opět při změnách rezerv můžeme tyto seznamy v konstantním čase upravit. Jednotlivé operace budou mít tyto složitosti: Inicializace algoritmu trivialně O(m). Výběr vrcholu s kladným přebytkem a nalezení nenasycené hrany vedoucí dolů O(1)(stačí se podívat na počátky příslušných seznamů). Převedenípřebytkupohraněuv změnyrezervr(uv)ar(vu)způsobípřepočítáníseznamůl(u)al(v),změnypřebytkůf (u)af (v) mohouzpůsobitzměnuvseznamu P.Vševčase O(1). Zvednutívrcholu u musímeobejítvšechnyhranydo uazu,kterých je nejvýše 2n, porovnat výšky a případně tyto hrany uv odebrat zeseznamu L(v)resp.přidatdo L(u).Totrvá O(n). Vidíme,žekaždézvednutíjesicedrahé,alejejichzasepoměrněmálo.Naopak převádění přebytků je častá operace, takže je výhodné, že trvá konstantní čas. Věta:Goldbergůvalgoritmusnajdemaximálnítokvčase O(n 2 m). Důkaz:Inicializacealgoritmutrvá O(m).Pakalgoritmusprovedenejvýše2n 2 zvednutí(vizlemmaz),nejvýše nmnasycenýchpřevedení(lemman)anejvýše n 2 m nenasycených převedení. Vynásobením složitostmi jednotlivých operací dostaneme čas O(n 3 +nm+n 2 m)=o(n 2 m).podlelemmatukpozastavenívydámaximální tok. Vylepšení Goldbergova algoritmu Základní verze Goldbergova algoritmu tedy dosáhla stejné složitosti jako Dinicův algoritmus. Nyní ukážeme, že pokud budeme volit vrchol, ze kterého budeme převádět přebytek, šikovněji totiž jako nejvyšší z vrcholů s nenulovým přebytkem, složitost se ještě zlepší. VčasovésložitostipůvodníhoalgoritmubylnejvýznamnějšíčlenO(n 2 m)zanenasycená převedení. Pokusme se jejich počet ve vylepšeném algoritmu odhadnout těsněji. Lemma N (Nenasycená převedení): Goldbergův algoritmus s volbou nejvyššího vrcholuprovede O(n 3 )nenasycenýchpřevedení. Důkaz: Dokazovat budeme opět pomocí potenciálové metody. Vrcholy rozdělíme do hladin podle výšky. Speciálně nás bude zajímat nejvyšší hladina s přebytkem: H:=max{h(v) v z,s&f (v) >0}. 6 2012-11-14

Rozdělímeběhalgoritmunafáze.Každáfázekončítím,žese Hzmění.Jaksemůže změnit?buďse H zvýší,cožznamená,ženějakývrcholspřebytkemvnejvyšší hladiněbylo1zvednut,nebose Hsníží.Užvíme,ževprůběhuvýpočtunastane O(n 2 )zvednutí,cožshoraomezujepočetzvýšení H.Zároveňsimůžemeuvědomit, že Hjenezápornýpotenciálasnižujeseizvyšujepřesněo1.Početsníženíbude protoomezenpočtemzvýšení.tímpádemnastanevšehovšudy O(n 2 )fází. Během jedné fáze přitom provedeme nejvýše jedno nenasycené převedení z každého vrcholu. Po každém nenasyceném převedení po hraně uv se totiž vynuluje přebytekvuaabyseprovedlodalšínenasycenépřevedenízvrcholu u,museloby nejdřívebýtcopřevádět.muselobytedydo uněcopřitéci.myalevíme,žepřevádímepouzeshoradolůaujevnejvyššíhladině(tozajistíprávěonovylepšení algoritmu), tedy nejdříve by musel být nějaký jiný vrchol zvednut. Tím by se ale změnilo Haskončilabytatofáze. Proto počet všech nenasycených převedení během jedné fáze je nejvýše n. A již jsmedokázali,žefázíje O(n 2 ).TedypočetvšechnenasycenýchpřevedeníjeO(n 3 ). Tentoodhadjehezký,alestálenenítěsnýaalgoritmussechoválépe.Dokažme si ještě jeden těsnější odhad na počet nenasycených převedení. LemmaN (Nenasycenápřevedení):Početnenasycenýchpřevedeníje O(n 2 m). Poznámka: Tato časová složitost je výhodná například pro řídké grafy. Ty mají totiž poměrně malý počet hran. Důkaz: Zaveďme fáze stejně jako v důkazu předchozí verze lemmatu a rozdělme jenadvadruhy:lacinéadrahépodletoho,koliksevnichprovedenenasycených převedení. Pro každý druh fází přitom odhadneme celkový počet převedení jiným způsobem. Nechť k je nějaké kladné číslo, jehož hodnotu určíme později. Laciné fáze budou ty, během nichž se provede nejvýše k nenasycených převedení. Drahé fáze budou ty ostatní, tedy takové, ve kterých se provede více jak k nenasycených převedení. Teď potřebujeme odhadnout, kolik nás budou stát oba typy fází. Začněme těmi jednoduššími lacinými. Jejich počet shora odhadneme počtem všech fází, tedy O(n 2 ).Nenasycenýchpřevedeníseběhemjednélacinéfázeprovedenejvíce k. Běhemvšechlacinýchfázídohromadyjichprotobude O(n 2 k). Pro počet nenasycených převedení v drahých fázích si zaveďme nový potenciál: Ψ:= v z,s f (v) 0 p(v), kde p(v)jepočetvrcholů u,kterénejsouvýšenež v.neboli: p(v)= {u V h(u) h(v)}. Tedy platí, že p(v) je vždy nezáporné nikdy nepřesáhne počet všech vrcholů n. ProtoΨbudetakévždynezápornéanepřekročí n 2.Rozmyslemesi,jakbudepotenciál ovlivňován operacemi algoritmu: 7 2012-11-14

Inicializace:Počátečnípotenciáljenejvýše n 2. Zvednutívrcholu v:hodnota p(v)sezvýšínejvýšeonavšechna ostatní p(w)sebuďtonezmění,neboklesnouo1.bezohleduna přebytky vrcholů se tedy potenciál zvýší nejvýše o n. Nasycenépřevedení pohraně uv:hodnoty p(...)senezmění,ale měnísepřebytky vrcholuusesnižuje,vrcholu vzvyšuje.zpotenciálu proto může zmizet člen p(u) a naopak přibýt p(v). Potenciál Ψ tedy vzroste nejvýše o n. Nenasycenépřevedenípohraně uv:hodnoty p(...)seopětnemění. Přebytekvusevynuluje,cožsnížíΨop(u).Přebytek vsenaopak zvýší,takžepokudbylpředtímnulový,ψsezvýšíop(v).celkově tedyψklesnealespoňop(u) p(v). Teďvyužijemetoho,žepokudpřevádímepohraně uv,mátatohranaspád1.výraz p(u) p(v)tedyudávápočetvrcholůnahladině h(u), což je nejvyšší hladina s přebytkem. Z předchozího důkazu víme, že těchto vrcholů je alespoň tolik, kolik je nenasycených převedení během dané fáze. Z toho plyne, že nenasycená převedení provedená během drahých fází sníží potenciál alespoň o k. Ty v laciných fázích ho nesnižují tak výrazně, ale určitě ho nezvýší. Potenciál Ψ se tedy může zvětšit pouze při operacích inicializace, zvednutí a nasycenéhopřevedení.inicializacepřispěje n 2.Všechzvednutíseprovedecelkem O(n 2 ) a každé zvýší potenciál nejvýše o n. Nasycených převedení se provede celkem O(nm) akaždézvýšípotenciáltaktéžnejvýšeon.celkemsetedyψzvýšínejvýšeo n 2 +n O(n 2 )+n O(nm)=O(n 3 +n 2 m). Teď využijeme toho, že Ψ je nezáporný potenciál, tedy když ho každé nenasycené převedení v drahé fázi sníží Ψ alespoň o k, může takových převedení nastat nejvýše O(n 3 /k+n 2 m/k).tonynísečtemesodhademprolacinéfázeadostaneme, že všech nenasycených převedení proběhne ) ( ) O (n 2 k+ n3 k + n2 m = O n 2 k+ n2 m k k (využilijsmetoho,ževsouvislýchgrafechje m n,atedy n 2 m n 3 ). Tento odhad ovšem platí pro libovolnou volbu k. Proto zvolíme takové k, aby byl co nejnižší. Jelikož první člen s rostoucím k roste a druhý klesá, asymptotické minimumnastanetam,kdesetytočlenyvyrovnají,tedykdyž n 2 k=n 2 m/k. Nastavímetedy k= mazískámekýženýodhad O(n 2 m). Cvičení 1. Rozeberte chování Goldbergova algoritmu na sítích s jednotkovými kapacitami. Bude rychlejší než ostatní algoritmy? 8 2012-11-14

2. Navrhněte implementaci vylepšeného Goldbergova algoritmu se zvedáním nejvyššíhovrcholuspřebytkem.snažtesedosáhnoutčasovésložitosti O(n 2 m). 3. Cobysestalo,kdybychomvinicializacialgoritmuumístilizdrojo1níže? 9 2012-11-14