5. Minimální kostry Tato kapitola uvd problém minimální kostry, základní věty o kostrách a klasické algoritmy na hldání minimálních kostr. Budm s inspirovat Tarjanovým přístupm z knihy[1]. Všchny grafy v této kapitol budou norintované multigrafy a jjichhranybudouohodnocnyvahami w:e Ê. Minimální kostry a jjich vlastnosti Dfinic: Podgrafm budm v této kapitol mínit libovolnou podmnožinu hran, vrcholy vždy zůstanou zachovány. Přidáníaodbráníhranybudmznačit T+:= T {}, T := T\{}. Kostra(Spanning Tr) souvislého grafu G j libovolný jho podgraf, ktrý j strom. Kostru nsouvislého grafu dfinujm jako sjdnocní kostr jdnotlivých komponnt.[altrnativně: kostra j minimální podgraf, ktrý má komponnty s týmiž vrcholy jako komponnty G.] Váhapodgrafu F Ej w(f):= F w(). Minimální kostra(minimum Spanning Tr, mzi přátli též MST) budm říkat každé kostř, jjíž váha j mzi všmi kostrami daného grafu minimální. Toto j sic standardní dfinic MST, al jinak j dosti nšikovná, protož vyžaduj, aby bylo váhy možné sčítat. Ukážm, ž to nní potřba. Dfinic:Buď T Gnějakákostragrafu G.Pak: T[x,y]budznačitcstuvT,ktráspojuj xay.(cstouopětmíním množinu hran.) T[]:= T[x,y]prohranu =xy.tétocstěbudmříkatcstapokrytá hranou. Hrana E \ T jlhkávzhldmkt T[]:w() < w( ). Ostatním hranám nlžícím v kostř budm říkat těžké. Věta:Kostra Tjminimální nxistujhranalhkávzhldmkt. Tato věta nám dává pěknou altrnativní dfinici MST, ktrá místo sčítání vah váhy pouz porovnává, čili jí místo čísl stačí linární(kvazi)uspořádání na hranách. Nž s dostanm k jjímu důkazu, prozkoumjm njdřív, jak s dá mzi jdnotlivými kostrami přcházt. Dfinic:Prokostru Tahrany, zavďmswap(t,, ):= T +. Pozorování:Pokud Ta T[ ],jswap(t,, )opětkostra.stačísiuvědomit, žpřidáním do Tvzniknkružnic(konkrétně T[ ]+ )avynchánímlibovolné hrany z této kružnic získám opět kostru. 1 2014-01-23
T[] Kostra T,csta T[]avýsldkopracswap(T,,) T T T[ ] Ť Jdn krok důkazu swapovacího lmmatu Lmmaoswapování:Mám-lilibovolnékostry Ta T,paklzzTdostat T končným počtm oprací swap. Důkaz:Pokud T T,musíxistovathrana T \T,protož T = T.Kružnic T[ ]+ nmůžbýtcláobsažnavt,takžxistujhrana T[ ] \ T a Ť:=swap(T,, )jkostra,proktrou Ť T = T T 2.Pokončnémpočtu těchtokrokůtdymusímdojítkt. Monotónní lmma o swapování: J-li T kostra, k níž nxistují žádné lhké hrany, a T libovolnákostra,paklzod T k T přjítposloupnostíswapů,přiktréváha kostry nklsá. Důkaz: Podobně jako u přdchozího lmmatu budm postupovat indukcí podl T T.Pokudzvolímlibovolněhranu T \ T akní T[ ] \ T,musí Ť:=swap(T,, )býtkostrabližšíkt a w(ť) w(t),jlikož nmůžbýtlhká vzhldmkt,takžspciálně w( ) w(). Aby mohla indukc pokračovat, potřbujm jště dokázat, ž ani k nové kostř nxistujílhkéhranyvt \ Ť.Ktomunámpomůžzvolitsizvšchmožných hran tusnjmnšívahou.uvažmnyníhranu f T \ Ť.Csta Ť[f]pokrytá toutohranouvnovékostřjbuďtopůvodnít[f](topokud T[f])nboT[f] C, kd Cjkružnic T[ ]+.Prvnípřípadjtriviální,vdruhémsistačíuvědomit, ž w(f) w( )aostatníhranyna Cjsoulhčínž. Důkaz věty: lhkáhrana Tnníminimální. Nchť lhká.najdm T[]:w() < w( )(tamusíxistovat zdfiniclhkéhrany).kostra T :=swap(t,, )jlhčínž T. K T nxistuj lhká hrana T j minimální. 2 2014-01-23
Uvažmnějakouminimálníkostru T min apoužijmmonotónníswapovacílmmana T a T min.znějplyn w(t) w(t min ),atdy w(t)= w(t min ). Věta: Jsou-li všchny váhy hran navzájm různé, j MST určna jdnoznačně. Důkaz:Mám-lidvěMSTT 1 at 2,nobsahujípodlpřdchozívětylhkéhrany,takž podl monotónního lmmatu mzi nimi lz přswapovat bz poklsu váhy. Pokud jsoualváhyrůzné,musíkaždéswapnutíostřzvýšitváhu,aprotokžádnému nmohlo dojít. Poznámka: Často s nám bud hodit, aby kostra, ktrou hldám, byla určna jdnoznačně. Thdy můžm využít přdchozí věty a váhy změnit o vhodné psilony, rspktiv kvaziuspořádání rozšířit na linární uspořádání. Črvnomodrý mta-algoritmus Všchny tradiční algoritmy na hldání MST lz popsat jako spciální případy násldujícího mta-algoritmu. Rozbrm si tdy rovnou tn. Formulujm ho pro případ, kdy jsou všchny váhy hran navzájm různé. Mta-algoritmus: 1. Na počátku jsou všchny hrany bzbarvé. 2. Dokud to lz, použijm jdno z násldujících pravidl: 3. Modré pravidlo: Vybr řz takový, ž jho njlhčí hrana nní modrá, 1 aobarvijinamodro. 4. Črvné pravidlo: Vybr cyklus takový, ž jho njtěžší hrana nní črvná, a obarvi ji na črvno. Věta: Pro Črvnomodrý mta-algoritmus spuštěný na libovolném grafu s hranami linárně uspořádanými podl vah platí: 1. Vždy s zastaví. 2. Po zastavní jsou všchny hrany obarvné. 3. Modř obarvné hrany tvoří minimální kostru. Důkaz: Njdřív si dokážm několik lmmat. Jlikož hrany mají navzájm různé váhy, můžm přdpokládat, ž algoritmus má sstrojit jdnu konkrétní minimální kostru T min. Modré lmma: J-li libovolná hrana algoritmm kdykoliv obarvna na modro, pak T min. Důkaz: Sporm: Hrana byla omodřna jako njlhčí hrana nějakého řzu C. Pokud T min,musícsta T min []obsahovatnějakoujinouhranu řzu C.Jnž jtěžšínž,takžopracíswap(t min,,)získámjštělhčíkostru,cožnní možné. 1 Zatoutopodmínkounhldjtžádnákouzla,jtupouzproto,abysalgoritmus nmohl zacyklit nustálým prováděním pravidl, ktrá nic nzmění. 3 2014-01-23
T y T x C T y C Situac v důkazu Modrého a Črvného lmmatu Črvné lmma: J-li libovolná hrana algoritmm kdykoliv obarvna na črvno, pak T min. Důkaz: Opět sporm: Přdpokládjm, ž byla obarvna črvně jako njtěžší nanějakékružnici Caž T min.odbráním snám T min rozpadnnadvě komponntyt x at y.něktrévrcholykružnicpřipadnoudokomponntyt x,ostatní dot y.nacalmusíxistovatnějakáhrana,jjížkrajnívrcholylžívrůzných komponntách,ajlikožhrana bylanakružnicinjtěžší,j w( ) < w().pomocí swap(t min,, )protozískámlhčíkostru,atojspor. Bzbarvé lmma: Pokud xistuj nějaká nobarvná hrana, lz jště použít něktré zpravidl. Důkaz:Nchťxistujhrana=xy,ktrájstálbzbarvá.OznačímsiMmnožinu vrcholů,donichžslzzxdostatpomodrýchhranách.nynímohounastatdvě možnosti: y M(tj.xistujmodrácstazxdo y):modrácstajvminimální kostř a k minimální kostř nxistují žádné lhké hrany, takž hrana j njdražšínacyklutvořnémmodroucstouatoutohranouamohunani použít črvné pravidlo. x M M M y y x Situac v důkazu Bzbarvého lmmatu y / M:Thdyřz δ(m)nobsahujžádnémodréhrany,takžnatnto řz můžm použít modré pravidlo. Důkaz věty: Zastavís:Zčrvnéhoamodréholmmatuplyn,žžádnouhranunikdy npřbarvím. Každým krokm přibud alspoň jdna obarvná hrana, takž s algoritmus po njvýš m krocích zastaví. 4 2014-01-23
Obarví vš: Pokud xistuj alspoň jdna nobarvná hrana, pak podl bzbarvého lmmatu algoritmus pokračuj. NajdmodrouMST: PodlčrvnéhoamodréholmmatulžívT min právě modré hrany. Poznámka: Črvné a modré pravidlo jsou v jistém smyslu duální. Pro rovinné grafy j na sb přvd obyčjná rovinná dualita(stačí si uvědomit, ž kostra duálního grafu j komplmnt duálu kostry primárního grafu), obcněji j to dualita mzi matroidy, ktrá prohazuj řzy a cykly. Klasické algoritmy na hldání MST KruskalůvnboliHladový: 2 1. Střídím hrany podl vah vzstupně. 2. Začnm s prázdnou kostrou(každý vrchol j v samostatné komponntě souvislosti). 3. Brm hrany v vzstupném pořadí. 4. Pro každou hranu s podívám, zda spojuj dvě různé komponnty pokudano,přidámjidokostry,jinakjizahodím. Črvnomodrý pohld: pěstujm modrý ls. Pokud hrana spojuj dva stromčky, j určitě minimální v řzu mzi jdním z stromčků a zbytkm grafu(ostatní hrany téhož řzu jsm jště nzpracovali). Pokud nspojuj, j maximální na nějakém cyklu tvořném touto hranou a nějakými dřív přidanými. PotřbujmčasO(mlogn)nastříděníhranadáldatovoustrukturuproudržování komponnt souvislosti(union-find Problm), s ktrou provdm m oprací Find a n oprací Union. Njlpší známá implmntac této struktury dává složitost obou oprací O(α(n)) amortizovaně, takž clkově hladový algoritmus doběhn v čas O(mlogn+mα(n)). Borůvkův: Opět si budm pěstovat modrý ls, avšak tntokrát jj budm rozšiřovat v fázích. V jdné fázi nalznm k každému stromčku njlvnější incidntní hranu a všchny tyto nalzné hrany naráz přidám(aplikujm několik modrých pravidl najdnou). Pokud jsou všchny váhy různé, cyklus tím nvznikn. Počt stromčků klsá xponnciálně fází j clkm log n. Pokud každou fázi implmntujm linárním průchodm clého grafu, dostanm složitost O(m log n). Mimo to lz každou fázi výtčně parallizovat. Jarníkův: Jarníkův algoritmus j podobný Borůvkovi, al s tím rozdílm, ž nnchám růst clý ls, al jn jdn modrý strom. V každém okamžiku nalznm njlvnější hranu vdoucí mzi stromm a zbytkm grafu a přidám ji k stromu(modré pravidlo); hrany vdoucí uvnitř stromu průběžně zahazujm(črvné pravidlo). Kroky 2 Možnáhladovýsmalým h,altntoalgoritmusjpradědčkmvšchostatních hladových algoritmů, tak mu tu čst přjm. 5 2014-01-23
opakujm, dokud s strom nrozrost přs všchny vrcholy. Při šikovné implmntaci pomocí haldy dosáhnm časové složitosti O(m log n), v příští kapitol ukážm implmntaci jště šikovnější. Cviční: Nalznět jdnoduchý algoritmus pro výpočt MST v grafch ohodnocných vahami {1,...k}ssložitostí O(mk)nbodokonc O(m+nk). Litratura [1] R. E. Tarjan. Data structurs and ntwork algorithms, volum 44 of CMBS-NSF Rgional Conf. Sris in Appl. Math. SIAM, 1983. 6 2014-01-23