Grafy A Jejich Aplikace Jiri Demel

You might also like

You are on page 1of 254

__.I .

UJ

.s

u..J

o

(1) ....c u u.o

__ I ~,.J1 ,"

.-~

(1)1 . ..:..= .- O!.

01 01

5

Obsah

Pi'edmluva

9

1 ZakJadui pojrny

1.1 D cfinice gmfu ' , , ' ,

1.2 Orientovanc a noorientovanc grafy 1.3 Dulezite mnoziny hrU11 a vreholu 1.4 Porovnav~.ni ~rafu ..'

1.5 Sledy fl. odvozene pojmy

1.6 Specialni grafy ....

L.7 Kofenovy strom

1.8 Mat.ice popisujici graf 1.9 Zpusoby zadavanl graftl

1.10 Zpracovani gmfu na poCitaci 1.11 Optirnaliz acn! ulohy , .. 1.12 Mnoziny, relar:e a zobrazeni

11 11 14 15 17 19 21 21 24 25 27 31 ~2

2 Aplikace {tloh 0 cestach 2.1 Drnhy modelu a 6101"1 .

2.2 Z meny stavu H. posloupnosti operaci 2.3 Paralelne IJlobihajic.i cinnosti

2.4 Hledani statickych konfigurad .

37 37 38 41 44

3 Prohledavani grafu

3. l Znackovani vrcholu .

3.2 Prohledavani grafu do sdky

3,3 Prohledavani grafu do hloubky

47 47 49 52

4 Pojrny zalozenp. na neorientovauych cesH.ch 4.1 Souvislost..

4.2 Stromy a kostry .. 4.3 Minim:ilni kost.ra . 4.4 Stupne souvislosti

57 57 58 61 65

6

5 Pojmy zalozene na orientovanych cestach 5.1 Silna souvislost . . .

5.2 Acyklicke grafy ..

.5.3 Koren a korenovy strom

5.4 Tranzitivni uzaver a redukce . 5.5 Jadro grafu a hry

67 67 73 77 79 83

6 N ejkraHi cesty

6.1 Typy uloh a zakladni fakta

6.2 Zakladni schema vypoctu vzdalsnosti . 6.3 Algoritmy pro obecne grafy .

6.4 Algorit.my pro acyklicke grafy

6.5 Nezaporn€ delky hran .....

G.G Vyuziti dodatecne informace

6.7 Vypocet matice vzdalenosti

6.8 Hledani cyklu se zapornou delkou ..

85 85 89 94 98

100 102 103 106

7 Algebraicke souvislost.i 610h 0 aladech 7.1 Polookmh a uzavfeny polookruh . 7.2 Ulohy 0 spojenich a jejich aplikace 7.3 Algorit.my 610h 0 spojenich

7.4 Elementami upravy grafu

7.5 Signaln! toky .

109 110 114 119 122 126

8 Toky v siti

8.1 Zakladni pojrny a ulohy 8.2 Aplikace toku v sitich ..

8.3 Maximalni tok a minimalni fez 8.4 Pripustna cirkulace .

8.5 Obecne vlastnosti t.ok!'l .. 8.6 Nejlevnejs] cirkulace ... 8 .. 7 Algoritmus Out of Kilter.

129 129 134 139 146 149 152 154

9 Parovanf

9.1 Zakladni pOJmy, ulohy a apJikace 92 Parovanl v obecnych grafach .. 9.3 Parovani v bipartitnich grafech

9.4 Pi'irazovaci uloha .

161 161 16::1 167 171

10 Eulerovske tally

10 . .1 Zakladni pojmy a aplikace .

10.2 Existence a hlsdani eulerovskych tahl'l 10.3 Uloha i:inskeho pos-cAka .. . ....

177 177 179 182

11 NP-tezke tUohy

11.1 Casova slozitost .

11.2 Backtracking ...

11.3 Metoda vetvi a mezi 11.4 Heuristicke algoritrny .

12 Hamilt.onovske cesty a kruznlce

12.1 Zakladnf pojmy, aplikace a vzajcmne prevody

12.2 Vzajernne picvody uloh .....

12.3 Existencni hamiltonovske 610hy 12.4 Optimalizacnt harnil tonovske ulohy

13 Barevnost , nezavislost, kliky

13.] Definice a zakladni fakta .

13.2 Zjistovani barcvnosti .

13.3 Hledan! maximalnich nezavislych mnozin

14 Rovinne grafy

14.1 N akresleni grafu a topologicky rovinny graf

14.2 Dualni grafy - .

14.3 Vlastnostl rovinnych grafu .

14.4 Charakterizace rovinnych graHl

15 Cirkulace a pocenclafy

15.1 Vektorovy prost.or cirkulaci

15.2 Potencialy a potencialove rozdily ..

15.3 Vztahy drkulaci a potenci,l1ovych rozdili1

15.4 Analyza elektricke site .

V ysledky cviteni

Llterat.ura

Rejstfik

Prehled znaceni

185 185 189 191 196

7

197 197 199 202 203

211 211 216 219

223 223 226 229 230

231 231 2.34 238 24U

243

251

253

257

8

\:------rl) 12 Aplik.'l.cll tiloh 0 cestach

~.----------~

3 Prohledavani gram

Pojmy 'l.alo~cIle n a neori~ntovanych ce~t:ich

Toky v sitich

Pojrny "aloi~ne nil. orientovanych cestach

N ejkrutsi cesty

Eulerovake tahy

Algebraicka souvlslosti ulon 0 ce~tuch

11 N'P-t.~zkt! ulohy

13 Barevnost, nezavisJost a kliky

Hamiltonovske cesty

14 Rovinne gr afy

15 Cirkulace a potancialy

Obrazek 0.1: Navaznosti kapitol (pfiklad orientovaneho grafu).

Obsah

Slozite Sf! skJadei z mnOh"l jednoducbostI, ovscm dumyslne scstavenych.

Predmluva

Casto je trcba orientovat HC v komplikovanych vztazich mezi castmi nejakeho eelku, Rada lidi si pH tom pom:iha obrazky podobnyrni tern, ktere najdetc v teto knize: eastice.lku kreslirne jake puntiky, obdelnic.ky nebo krouzky, vztahy znazorflujeme caremi mezi nimi: Nesymetricke vztahy vyjadrujeme siplcami. Je zfejme, ze takto 17..p. vyjadfit (a nakreslit.) prakticky jakakoll vztahy mezi d-vo.Jicemi prvkn,

Pojern grafu je prlrozenyrn prostredkem k vyjadreni parovych vztahl·l, tj. vztahf mezi dvojiccrni. Obecnejsl vztahy (uz nap!'. rnezi trojicemi) he nakreslit podstatno obtizneji. Snad proto se t.emlo obacnejsim vzt.ahum mnohdy vyh.Ybame a radeji volime jiny, komplilwvaneji"ii popis teze situace, zalozeny no. vztazich parovych.

Diky tomu se nelze divlt, ie pojem grafu (a zpusob uViizovani, ktery oznacujeme jake grafovy) je pomerne ohlibeny a rozSifenY·

Tato kniha je zamerena no. aplikace grH.ru.

Nektere aplikace jsou zcela zjevne: dany problem "ze ·~ivota" se preformulujc na grafovou ulohu, udeia. Sf'. pHslusny graf', kter-y modeluje konkretni situaci, grafova uloha se nejakym znamym postupem vyresi a ziskane feseni :;e preloz1 z feCi grafU

zpatky "do Zivota" .

Casto jsou vsak aplikace grafn skryte: nikdc se zadny graf explicite rtepousijc,

graf zusta.va jaksi v pozadi, ale pouzity postup fcseni rna svou paralelu ve svele gram a lze jej pomoci graftl ?duvodnit.

Urneni aplikovat gra.fy zahrnuje dve rlflel dovednosti. Pfedcvsim je Heba umet udelat (vyrnyslet) gr af, Hery modeluje danou sltuaci (tj. jsou v nem zachyceny vztahy, a ktere namjdc}. Nskdy to [e zcela trivialni (napr. ph hledani cesty z Kalina do Rokycan}, jindy to vyzaduje znacnou Istivost.

Dale jP ti'eba umet fpsit alespofi ty npjdulezitl2jsi grafove ulohy, vedi'.t, kterc ulohy jsou snadno a rychle resiteille a Here json naopak teike. Take neni k zahozeui, urnimc-Ii prevest nejakou (nezm\.mou) ulohu na jinou, kterou dovedemc resit. Toto umeni prcvade.t ulnhy rna milllochodem mnoho spoleeneho s umenim najit grafovy

model,

Kniha jc urcena pro tccnnicky za.mercne ctem\.rF, zejmena pro st.udenty technic.kych vysokych skol. (V?\tsinu textu vsak bez probleml1 pfectc i stfedoskolak, ktery se nebaji pousivat "zdrav)! selsky rozum".) Vim moe dobre, ze tito lide nernivaji

9

Piedmluva

zalibu v matematickych dukazeeh. Presto v knize vctsinu jednoduchych tvrzeni dokazuji. J sern totiz presveucen, ze k uSjJesnemu praktickernu POllZ1 vani (nejen) teorie gram je tfeba urnet samostatne vymyslet jednoduchy dusfedek a korektne jej 7,duvodnit. V krrize u vedene dukazy mllzete chapat jako priklady takovych zd irvodneni. Pokud mohu radit, zkuste si llejake (nejlepe kazde) v knize uvedene tvrzeni nejprve zduvodnit sami a teprve potom r.t.ete dukaz. Konce dukaz1'l jsou pro snazsi orientaci

uznaceny ct.vereckem: 0

Mnoho mista [e v knize venova.no aigoritmt'm a rozbornm jejich fungovani.

Slsdnji tim dva die: Ph aplikadch se snadno muzete dostat do situace, kdy si musite pro vai§i speci31ni ulonu nejaky algoritmus vymyslet. Pokud si jej nebudete umet korektne zduvodnit, snadno se muzete dockat necckanyeh (obvykle neptijemnych) pi'ekvapenL Druhy cil sc tyka studentu mforrnatiky. Tearle graftl je vybornym cviCistem s neprebernym mnozstvlHl uloh pro vyuku progmrnovan:i efektivnich

algoritmu.

Chci ovsem zduraantt, ze tato knizka neni ucebnid navrhovanf a analyzy efek-

tivnicb algoritma Vyklad vselijakych dumysillych datovych struktur zde neni - to by kniZka byla 0 hodne tlustsi a uz by nebyla tak moe [) grafech. Vyjirnku jsem udelal v kapitole 11, kde je vel ice strucne vysvstlen rozdf] mezi lehky·mi a te:lkymi

uloharni.

Tato knizka koncepcne vychaz! z myeh diiveJsich publikaci [Demel88, Deme191].

Z nich jsem pfevzal hrube ('Jeneni textu nil. kapitoiy a nektere obrazky, Vetsina textu

je vsak preps ana a wzsifena.

V knizce je fada cviceni jednak k po6tani, jednak k sarnostatnemu zarnySleni.

Vysledky vetsiny cvic!lni [sou sOlJstfedcny nil. konci knihy,

Bude-li tfeba po vydani teto knihy zverejnit. k ni nlijake dodatky, opravy chy b apod., naj dete j c na Internetu na http; / / k i x . f sv . cvut . cz / - demel / gr afy /. Pokud byste mi eMeH napsat. sve pi'ipominky, piste na adresu detneHlf av . cvut.. cz.

m~kl1ji vscm, kdo svyrni pripominkami nebo jakkoli jinak pfispeli ke zlepsenf tohoto textu .. Zejmena dekuji ZI'l. cenne piiporninky oberna recenzent6m. Dekuji t.ake Edicni rade Akadernie ved C!lske republiky za finanen! podporu na vydani teto knihy, Predcvslm vsak dekuji sve zene Marii, kteri mi pfi psani byla nejen vsestrannou oporou,ale take prvnim kritikem. Vp.sker8 nedost.atky, ktere v knize

zustaly, vsak padaji na mou hlavu.

Praha, leden 2002

JiH Demel

11

Kapitola 1

Zakladni pojmy

1.1 Definice grafu

1.1.1 NejdHv strulne a neform:HniL Grafse sklada z tZY- vrcholu a tzv. hran, Hrana vzdy spojujc dva vreholy a je bud' orientovana, nebo neorientovana. U hra.n orrentovanych rozlisujeme poi":atecnl a koncovy vrchol a i'ika,me, r,e hrana vede z pobitecniho do koncovcho vrcholu. Neorientovane hrany chapeme jako syrnetricke

spcjeni dvou vrcholn,

Pokud hrana spojuje nejaky vrchol se sebou samyrn, nazyvame ji srnyckou.

Orientovany graf rna. vsechny hrany orientovane, neoricntovany graf rna vsechny hrany neorientovanc. Smlsenymi grafy, ktere maji aha druhy hran, se nebudeme

zabyvat.

A ted' [) neco formalnaji:

1.1.2 Orientovanj graf. Or'ientovany fjraj je trojice G = (V, B, s) tvorena neprasdnou konecnou mnozinou V, jejiz prvky nazyvame m'choly, koneenou mnozinou E, jejiz prvky nazyvame ori~ntuvunymi hmnami, a zobrazenim t : E --1' V2, ktere nazyvame vztuhe.m incidence. Toto zobra-zeni pfifazuje kazde hrane e E B uspofadanou d vo jici vrcholu (x., y). Prvy z nich, x, nazyvame p ocate.cnim vrcholem hmnll a znaCime jej PYre). Druhy nazyvame kuncovym vrcholem hrany a znacime jej Ky(e).

o hrane e hkame, ze vede Z vf"cholu x do vr"CIwiu y a take, ze spoj1t)'e vrcholy x a y. 0 vrcholech x, y pak fikame, ze jsou incidentni (nebo ze inciduji) s hranou c a take naopak luana e je incidentn,i s vrcholy x, y .. Oba vreholy x ; y take souhrnne

nuzyvame krajrtimi vrcholy hmny e.

Jest1i~e Py(e) = Kv(e), pak hranu e nasyvame (orientova.nou) smyckou. Vrchol,

ktery neni incidentni 8 zaunou hranou, nazyvame izolovanym vrchulem .

Je rnozne, aby nekolik hran melo stejne pociitecni a kanc[)ve vrcholy, t.j. aby pro ruzne hrany el, 62 platilo Py(ed "'" Pv(e2) a Kv(e.d = Kv(e2) nebo, zapsano jinak, t(ed = E(ez). 0 takavyeh hranach fi1ci.me, ze jsou rovnobline nebo tez nasobne.

Mnoeiua hran grafu muze byt prazdna.

12

Kapit()la 1. Zakla,dni po,imy

1.1.3 Neorientovan.V graf. Nekdy je orientace hran nepodstatna. .Iinymi slovy, nekdy nepotrebujerne Ci llechceme roz!isovat mezi pocatecn[mi a konCOV)'Illi vrcholy hran, Proto zavadime pojem neorifmLovaneho graiu, ktery vzuikne tim, ze "zapomeneme" no. poraJi vrcholu v uspohidanych rlvojiclch.

N eoricntovany gmJ j e troj ice G = (V, E, to) t vorena neprazdnou konecnou mnozinou V, jejiz prvky nazyvame vl"choly, konecnou lllTIozinou E, jejiz. prvky nazyvame neorientovanymi hranami, a zobrazenhn s , ktere nazyvam.e vztahem incidenc.e a ktere kaide hrane e E E pi'ifazuJe jedno- nebo dvouprvkovou mnosinn vrcholu

Ternto vrehollim fikame krajni vrcholy hrany e. Rlkame take, zc jsou inc.identni (nebo ze incidv.Ji) s hranou e. 0 hrane e pak flbime, ze je incidentni s temito

vrcholy nebo take ze spojuje tyto vreholy.

Je-li hrana e incidentni pouze s jedinym vrehalem (tj. jestiize mnosina e:(f!) je

jednoprvkova), nazyvame hranu e (neorientovanou) smycko'U.

Je mozne, aby nekolik hran spojovaio stejne (jedno- nebo dvouprvkove) mnofiny vrcholu, tj. aby pro rUzTIp. hrany el,e2 platilo E(el) = e:(e2} 0 takovych hranach fik<ime, ze jsou f"01}1!obeine neho tcz nasohne. Mnozina hran muze hyl i zde prazrlna.

1.1.4 Pnlzdny gr af a nekonecne grafy. V literature, ktera je vice tcoreticky zamerena, se lze setbt take s prA,zunym grafem (ktery nerna ziidn)' vrehol, a tedy ani zadnou hranu) a s grafy, ktere maji nekonecne mnoho vrcholu. V teto knize se

jimi nebudeme zabyvat

1.1.5 KreslenigrafU. Crafy (orientovane i nemientova-ne;) he s v)'hodou znazomovat kreslenim. Vrelloly obvylde kreslirne jake body (lcrouzky), hrany [ako cary (u.secky, ohiouky), ktere spojuji pfis.luMe dvojice vrcholu. Je-li hrana orientovH.na, znaCime orientaci sipkou od pocat.ecniho ke kcncovemu vrcholu. Je treba mit na paweti, ie graf lze vetsiDoU nakreslit mnoha k nspoznani r6znymi zpusoby.

Ze dvou nakresleni tehoz grafu davarnc obvykle prednost takovemu, kde jsou hrany kresleny pokud mozno pfimo s co nejrnensim poctem pruseciku ..

Nakresleni grafu formalne definujeme jako dvojici zobrezeni ip, 'Ij;, z nicll'l ip prifczuje vrcholum grafu ruzne body v rovine a 1/J ptira.zujc kasde hrane .spojujici vn:holy x, y jednoduehou kfivku s krajnimi body 'P(x), ip(Y)· Pfitom pozadujeme, aby zadna kfivka 'I/J(e) neobsahovala zadny z boclli 'P(x) jako .sV-Uj vnitrni bod.

Rovinne nakreslcni je takove nakresleni grafu, ze libovolne dye kfivky pi'irazene ruznyrn hranam grain maji spolccne nejv:ysc sve krajni body, tj, body pfira;~ene vrcholulll grafu. Rovinny gmt (tez planarni) je takovy grai, ke kteremu axiet.ujc

rovinne nakresleni

Ne kaidy graf je rovinny a i rovinny graf he nakreslit nerovinnvm zpusobem.

Rovinnyrn grafinn je venovana kapitoia 14, str. 223.

1.1.6 Cviceni. V nasledujicich pfikladeeh grafovych pOpiSl"l realnych situac] rozhodnete, ktery druh grafu (orientovany, neorientovany) l€pe vystihuj e sku tecnost:

Situace:

Vrchcly:

Hrany:

Silnicnl sl€ Ki'izovatky

Kfizovatky i, j 5s011 spojcny pflmou silnici

........... -----------------

13

1.1. Definice graill

Situace:

Vrcholy:

Hrany.

Situace:

Vrcholy:

Hrany:

Situace:

Vrcholy:

Hrany:

Situace:

Vrcholy:

Hrany:

SH.uace:

Vrcholy:

Hr.any:

Situace Vrcholy:

Hrany:

Sitnace; Vrcholy:

Hrany:

Situace:

Vrcholy:

Hrany:

Srtuace:

Vrcholy:

Hrany:

Sitnace:

Vrcholy:

Hrany:

Situace:

Vrcholy:

HTany:

Situace:

Vrcholy.' Hrany:

Situace:

Vrcholy:

Hrany:

Situace:

Vrcholy:

Hrany:

Silnicnl sit:

Sunke

Silnicc i, j maji spolec.nou kl-izovatku

Mol1>.kula Atomy

Atomy i, j jSO\1 vazliny ehemickou vazholl

EleklricM. zariscni

Vodicr. (uzly )

Mezi yodi(':i i, j je za.pojena SDllca.'ltka

Sachy

Postavr.ni figUJek nil. s!>chovuici spolu 5 informaci, kdo Je na tahu

Z postaveni i lze jcdnim rahem dostat PlJs~awmi j

(Jrad Urednki

(Jfednik i je nadfizenym l'Jiednika j

N al"o dn i ho~podil'5tvi

Produkty a 51uzby

Produkt nebo sluzba i je zapottebi k vyrnhe nebo vykonani j

Pi'idi!lovu.ni likolu

Prucovnioi a ukoly

Pracovnlk i je schopen vykonat ukol .i

Slozita cinnost, pnJ(',~S Jednoduche cillnosti, ukony

Cinllost i musi byt dokoncena pEed ul.pot:dim cinnosti j

Rodolm,p,n

Lide

Osoba i je otcem osoby j

Roliinm\ vzbahy

Lide

Osoha i jc rodii':em osoby j

Mnohostl'in

Vrcholy llUlohostenu

Vrcholy i, .i lei! na stejlH\ hrane mnohostfmu

Program pro potituC

Insuukce

Instrukcc j mlize by~ vykonana bezprostrcdnp. po vykonani instrukce i

Prvgrarn pro potit-a?:

Podprogramy (proc8dury a funkce)

Podprogram j je volan (aktivovan) podpro!';:ramem i

Kniha 0 teorii grafit

Kapitoly

Ph Cl;!tbe kapitoly j se pfeupokJ;~,da zualost kapitoly i (viz obr. 0.1, str 8)

14.

[{apitola 1. Za.kla.dni jJojmy

1.1. ., 0 hodnoceny graf, sit:. V cetnych aplikacich grafy samotne nepostacuj 1 k adekvat.nllUu popisu situace. Proto se bl.sto ke hranarn ci vrchourm pridavajf nejake hodnoty (obvykleCisclne), ktere rcprezentuji nap-f. doby trvani nebo naklady cinnosti, propustnosti potrubi, pra.vd~podobnosti udaloeti aport Graf, jehoz hrany a (nebo) vrcholy jsou opati·eny takovymi hodnot.ami,. nazyvame ohodnocenym

gmfem nebo tez siti.

Zobrazeni, ktere pfiiazuje vrcholum nebo hranam jejich hodnoty, nazyvanre

ohodnocenim vrcholu nebo hran, GasLo se stava, ze v jednom ohodnocenhn grafu marne neIwhk niznych ohodnoceni SOllcasnc.

1.1. 8 Cviceni. U jednotli vych pi'ikladu z 1.1.0 posuate rnosnosti a v hodnost rozlil:uych ohodnoceni hran ci vrcholu,

1.1.9 Pozmimky k terminologii .. Vrcholy grafu byvaji nazyvany tez uzly, prvky, stycntky, body. Hrany grafu byvaji nazyvAny tez vazbami, iebry, Jipk:ami,

sip"!) apod,

Vseobecne plat}, ze ani definice gr afu, ani termino\ogie neni zd aleka jcdnotm1.,

a to jak v nasi, tak i ve svetove literature. Zakladni myslenky [sou sice spoleene, ale caste se setkate s odchylkarni v dillezitych detailech. Vzdy je treba prost.udovat nvodnl partie knihy, kde obvylde byva strueny pfehled pouzlviiuych pojmn

1.2 Orientovane a neorientovane grafy

Oba druhy grafu (orient.ovane a neorientovane) se studuji zpravidla oddelcne, byvaji jim venovany oddiHene kapitoly knih apod., ovsem zdani, i.e se jedna (J dve

samostatne teorie, je klamne.

V nekterych knihach he najit i definici sml~eneho grafu, ktory ml1Z~ mit oba druhy hran, Teorie se vsak takovymi zobecnenymi grafy zabyva jen okrajove, v aphkacich lze zpravidla totez D1odelovat trochu slozitejsimi grafy orientovanymi.

1.2.1 Sym.etrizace a orientace grafu. Symetnzact orientovanebo grafu nazyvame neorientovany graf, klery dost.aneme tim, ze "zapomeneme" na,arientaci bran.

Na oLnizku byc.hom proste umazali sipky.

Marne-Ii naopak nejalcy neorientovany graf G, mll'l.eme z nej udelat graf orientevany dvema zpusoby: Pfi prvem zpusobu nejak (jakkali, Heba i nahodne)zvolime orientaci hran (v obrazku primalujerne sipky) a. ziskame tim tzv, Qrientaci gmfu G. Druhy zpusob spoCiva v tom, ze kazdou neorient.uvanou hranu krome smycek nahradime dvema opacne oriantovanymi hranami a. kazdou neorientovanou sruyiiku nahradime smyckou orientovanou. Tim ziskame tzv. symet7"ickov, (Jrientaci grafu G.

Orientovany graf na,zyvame symetdckym, jestlizc pro kaidou dvojici vrcholu z , y plati, ie pooel .. bran zx do y je roven pocta hranz y do x.

1-3. Dtilezite mnoziny hran a vrdlOlU

15

1.2.2 Zakladern je orientovany graf. Jak liZ jsme na7.naeili v 1.1.3, v teto knize budeme pokM.dat orientova.ne grafy za zikladni. Neorient.()va.ne grafy yak Ize zlskat tim, ze abstrahlljemc od orientace hran, Jsou k tomu dva rluvody:

Za prve, kdyz nekomu sdelujeme, ktere vrcholy jsou v grafu spojeny hranou, pak obvykle jeden Z obou vrcholu uv:idime (vyslovime, naplserne) drive a druhy pm:deji. Pfitorn ihned dodivamB, ~e na pofadi nezalezelo a ze jsme oba vreholy

mohli vyjmenovat i v opacncm pofadi.

Za druhe, pri praci s orientovanym grafern se llekdy sliva, ze s nim potrebujeme

ucleiat neco, co nezalezl na orientaei hran, Napf. orient.ace jednosTllernych nlic je dtilezita pro aut,olllobHisty, ale zcela nedlilczita. pro chodce.

Bude tedy vyhodne, ahy pojmy, kterc jsou urceny prn neorientovane grafy, hylo

mozno pouzlvat i pro grafy oricntovam\.

Dosahnerne toho ttrn, ic v1\echny grafovp. pojmy budeme definovat p0t\7.(-; pro

grafy orientovane. Nektere z techto pojmu (tot.iZi ty, ktere nezavisl na orientaci hran) potom bude mozno pouzivat i pro grafy neorientovane.

1.3 Dlilezite mnosiny hran a vrcholu

Je-li dun graf G, pak mnozinu vsec.h jcho vrcholu budeme znaCit V(G) a mnozlnu jeho hran E(G). Je-1i M libovolna konecna mnozina, budetne pocet prvku mnoziny

M zna-Cit IMI·

1.3.1 MnozillY hran a vrcholu v orientovanych grafech. NechE G := := (V, E,.c;) je orientovany graf, nechf x a y jsou jeho libovolne vrcholy a A C; V nechf je libovolna mnozina jeho vrchoiu. Pak zavedeme nasledujid pojmy a znaceni:

va- (x) := {z E II I (x, z) E £( E)} == mnozina nu.slednibl vrcho lu x.,

tj. mno:t;ina vrcholu, do nich:6 vede hrana z x.

Va (x) = {z E V I (oZ, x) E £(E)} = mnoflna pfedcMdd. 1!1"C!wlu x, tj. mnoZiua vrcholn, z nichz vede hrana do z.

Va (x) = VJ(x) U Va (x) = mnozina 8IJusedu vrchulu x,

t.j. mnozina vrcholu spojenych hranou s vrcholem ';.

VG(A) = U"'EA Vc(:r.),

tj. mnozina vrcholu spqjenych hranou s nekt.erym vrcholern z A.

E6(x) := {e EEl pv(e) = z] = vyst"Upni okoli vrcholu x,

tj. mnozina hran s pocatel":nim vrcholem x.

Ec(x) = {e EEl Kv(e) = .x} :;;: vstupni okoli vrcholu :J:, tj. rnnozina hran S koncovym vrcholem x.

EG(x) = Et(x) U Eo (x) = okoli vrc.hoiu x,

tj. mnosina hran inddentnlch s vrcholem u:

16

Kapitola 1. Z.ikladnf pojmy

wt(A) =: {e EEl Pv(e) E A & Kv(e) ¢ A},

tj. mnosina vseeh hran, Jejkhi pocatecni vrchol leii v A a kOllCOVY

vrchol llelcii v A.

Wa(A) ::::: {e EEl Pv(e) ¢ A & Kv(e) E. A},

tj, nmozina. vsech hran, jejichi pocatei;ni vrchol nele7.1 v A a koncovy

vrchol leir v A.

Wc(A) = Wt(A) uWG"(A) ::::: fez urceny mnozirrou vrc.hoM, A,

tj. mnozina vEach hran, jejichz jeden (libovolny) vrr.holleii v A a druhy

v mnofme A nelezL

m&(x,;lJl = IEJ(x) n Ea(Y)1 = nrisobnost hmny,

tj. pocet hran s pobitecnim vrcholem x a koneovyrn vrcholem y.

1IIa(x, y) = lEa (x) n Ea(Y)1 ::: naso/most hrany,

tj, pocet hranspojujicich vrcholy x a y.

d';j(:r.) = IE~('']';)I = vystv.pni stupen vrcholu x,

tj. poriet hran vych :h.ejicich z vrchol u x.

dG(:r.)

= IEo(x)1 = v~lupni stupen vrcho!u x,

tj, pocet hran vchezeilcich do vrcholu .7:.

= dt;(:r.) + da(x) = ~tupeii vrcholn x,

tj. P ocet hran inci cl enlnich s vrcholem x, pfir.ell)i smycky POC! tame

dvakrat.

VZdy, kdyz bude z kontextu zi'ejme, jak.Y graf marne na mysli, buderne vynechavat index G a budeme psit st.rucncji V(x) namisto VG(~) apod.

1.3.2 Cviceni.

1. Dokazte, ie plati L:YEV(G) dey) = 2IE(G)j .

2. JH.kY jc vztah mezi cisly d(.'!:), IB(x)1 a 1'V(x)1 '! 3- Co znamcnajl vyrazy m(x, x) a m+ (x, x) ?

4. Mlize rez , tj_ mnoZina W(A)., obsahovat smycku?

5. Je nejaky vztah mezi cisiy IW(A)I a W(A) \ AI ?

1.3.3 Mnoziny hr an a vrcholu v neoricntovanYchgrafeeh. Ncktere;>; vyse definovanych pojrnu a znal:eni neza.vis! ria orienta-ci hran, a proto je lze pouztt i pro grafy neorientovane. Konkretnc jde 0 znaseni Ve(x), Va(A), Ee(x), Wa(A), mc(x, y) a d(x) a jim odpovidajiel pojmy. Vsimnetc si, ie. i slovni vysvet,lell! tcchto

pojmu jsou nezavislil, na oricntaci hrau.

1.3.4 Prosty gr af a multigraf- P'f'Osty graf je graf, v nemi l1<lsobnost kaZdc hrany je nsjvyse rovna jedne"Multigraj je graf, v nemz mlsobnosti hran mohou byt

i vetiH nes jedna.

17

1.4 Porovnawil1i grab]

pozor, v literature je casto slovem graf oznacov~an pouzc prosty graf a slovo Ull1iLigraf SOl pak pOllziva~ k pojmenovani ouecnejsJho pripaoll, kdy nasobnosti bran

ll1ohou byt i velsi nez jedna,

V t~to knize je tedy multigraf totliz, co (obecny) graf. Slovo graf zde pouzivame

obecneji, uez je obvykle, jednak S obledeIl1 na aplikace, jednak proto, 'le rada tvrzeni i a.l~oritm6 funguje bez uprav i pro Ulultigrafy, tj. pro grafy, ktere nsrnusl byt proste Slovo multigraf budeme pouzivat pro zdl~ra'lncni, 7.e graf nemusi b)'t prosty, nap!'.

takto:

Symet.rizaci prostcho orientovanelw grafu mlode vznij.::nout multigraf.

1.3.5 Proste grafy a relace. V prostcrn orientovanem grafu U1uzcme kazdou hranu e ztoto~nit s u.-;poridanou uvojicf vrcholu (Pv(e), Kv(e)), nebof touto dvojici vrclwlu .ie hrana e jednoznacne. urcena (v prostem gralu nemohou byt dve takove hrany). MnozITI1l hran prosteho orientovaneho grafu tedy rnl'lzeme pokladat za binami relaci na mnozine vrcholu. 0 relacich pojedname podrobneji v 1.12,3, str. 33.

1.4 Porovnavani grafu

1.4.1 Rovnost grafu. Reknemfl, 'le dva grafy G = (V,E,s) a G' = (V',E',s') jsou si rovny, jestlize V = V', E = E' a E = s',

1.4.2 IzOluorfismus. Grafy G, G' se naz)'vaji vzajemllc izo'T1wrjni,. kdyz existuji dye vzajemnit jednOZl}o,cna zobrazeIll f : V -t V' agE -t EI takova, ze zachovavaji vztahy incidence E H. c'. Pfesneji, kdyz pro kazdou hranu e E E plati:

E(C) = (x,y)

£I(g(e)) = (f(x),j(y)),

popf.

E'(g(e)) = {f(x), fly)}

v zavis\osti na tom, zda se jcdna 0 grafy orientovane nebo neorientovH.ne.

V7itah izomorfismu zna6me G 2::: G'.

Mnoho vlasl.nostt grafU se prenasi izomorfisroem. Pfesneji, mnoho vlastnosti V

je takovych, ze ma-li graf G1 vlestnost V a platl-li G I 2::: GZl pak i graf G2 rna v lastnost V. Teorie gram Sf] temer vy 1 uene zabyva pnive takovy rnito v lasenostmi. pi'ikladem viastnost,i, ktera sc zachovava izomorfismelll, je tfeba "pacet. vrcholu

stupne 2, ktere maji alespon jednoho souseda stupne 3"

Chceme-Ii dokazat, i.e dva grafy jsou izomorfru, stall najit (staCi uhodnouL)

izomorfisrnus (tj. zminenli dYe zobrazeni vrcholu a hran) a ovcfit, i.e to jsou ta Spr<lvna 7.obra:zen1 , tj. i.e spliiuj! vyse uvedene podminky. J son-li oba grafy proste, staCl dokonce najit jen pfirazeni vrcholu., pfii'azeni hran pak totiz je jednoznacne urceno. Na obrasku 1.1 no. na.sleciujici strano jsou tri navzAjem izoIllorfni grafy, Pro prve ova je i.zomorf1smllH naznacen shodnym pojmfJIlovanim vrcholtl.

Zjednodusene rnuz.eme rid, fe dva grafy jsou iZOInorfnl, kdyz se lisi pOlm;

nakreslenim a oznahmim (pojmenova.llim) vrcholu a hran. .. ~m. 'I!IllhO""'''.~&,.

~. ~~

\_\." .. ~

~ ._.,. <'I

1III+..,~'l."""~

18

Kapitula 1. ZtikladnI pojmy

Chceme-li naopak dokazat, ze dva grafy izomorfni nejsou, je treba bud'vyzkouset vsechna mozna zobrazeni (coz obvykle je ncsmirne pracne], anebo najit vlastnost, ktera se prena.si izomorfismem a kterou (wi jeri jeden 7. obuu grruu.

Rozhodnuti, zda dva dane grafy jsou izomorfni, je v rade pi'ipadu. obtiwym llkolem. Ph zjistovani Izomorfismu lze casto vyuzit tato jsdnoducha pozorovanf:

1. Izomorfni grafy must mit stejne poiity vrcholu j hran.

2. Vrcholu stupne k lze izomorfismem pfifadit pouze vrchol stejneho stupne k.

3. Dvojici sousednich vrcholfi mMe byt. izomorfismem pfirazena opet jen dvojice

sousednich vrchohi.

d

c

c

b

a

f

Obrazek 1.1: Vzajemue i<lomorfni grafy.

1.4.3 Cviceru. 0 grafu na obr, 1.1 vpravo dokazte, zc je izomorfnf s predchozimi dvema. Navod: dopliite pojmenovani vrcholu a hran, C1In'1. vlastne ziskate zobrazeni fag, a ovefte, ze zachovavaji vztahy incidence. Pokud ueeacbovavaii, zkuste jina

zobrazeni.

1.4.4 Cviceni. 0 gra.fech na obr. 1.2 rozhodnste, ktere z nich jsou naveajem izornorfni a ktere ne.

Obrazek 1.2: Jsou tyto grafy izomorfnf?

1.4.5 Podgrafy. Graf G' je podgrafem grafu G, vznikne-li z grafu G vynechanlm ncjakych (nebo zadnych) vrcholu a hran. Podstatne .ie, ie podgra.f must byt take grafern: spolu s kasdou hranon, ktera jc v podgrafu, tam rnusi byt i oba jeji krajni vrcholy. Poznamenejme, ie kazdy graf poklada.me za podgraf sebe sama, Jsou dva

specialni druhy podgrafU:

Graf G' nazyva.me [aktorem grafu G,. vznikne-li z grafu G pouze vynechanim

op.kterYch (nebo zadnych) hran, t.j. plati-li V(G) = V(G').

1.5. SJedy Ii odvozene po_imy

19

;,1

GraI G' nazyvame podgrafem induko1Janym mnoiino1L vrcholii A ~ V(G) (tez uplnym podgmJp.m na mnoiinl A), jestlize podgraf G' rna mnosinu vrcholu A a obsahuje vsechny hrany ira.fu G, jejichz oba vrcholy lei! v A. Indukovany podgra.f G' lze zfskat z grafu G tim, ze vynechame vrcholy, ktere neleii v ITInozme A, a pak vynechame vsechny hrany, ktere byly incidentni H vyncchanymi vrcholy, (Tyto hrany je treba vyneehat, aby to" co zbude, byl graf.)

Poznamenejme, ze obecny podgraf vzdy ruiizcrne dostat jako faktor llcjakeho indukovaneho pcdgrafu a take jako indukovany podgraf nejakeho faktoru puvodniho grafu. Rozdil je jen v tom, zda napred vynechavame hrany, naho vrcholy.

1.4.6 PHklad. Mcjme gl'fl;f, jehoz hranami jsou vsechny silnice a vrcholy jsou vsechny ki'izovatky a slepe konce silnic, Ornezimc-ii se na kfiiovatky, ktcre leil v nejakern okrese, a vsechny silnice mezi nirni, dostaneme indukovany podgraf. Ponccharne-Ii vsechny ki'izovatky a omezims se ua silnice prvni tfidy, dostancme faktor s mnoha izolovanymi vrcholy.

1.5 Sledy a odvozene pojmy

1.5.1 Sled. Posloupnost vrcholu a man vO,el,Vl,eZ,vZ,' .. ,ek,Vk nezyvame oritmtovan.ym sledem, jestlize pro kazdou hranu ei z teto posloupnosti plat! pv(e;) = = Vi-l a Kvfe,) = v •.

Posloupnost vrcholu a hran Vo, el, VI, el, V2 •... .e«, Vir. nazyvame nem·icntovanym sledem, jesllize kazdi hrana e, z teto posloupnosti spojuje vrchcly 11.-1, V·i-

Vrchol Vo v obou piipadech nazyvame pocdtecnim a vrchol Vk koncovym orcholem sledu. 0 sledu fikame, ze uede Z v1"cholu Vo do orcnoh: l}k, nebo take, ze spojuje urcholy Vo, v«.

V orientovanem i neorientovanem sledu na sebe vrcholy i hrany "navazujf".

U orientovaneho sledu vsak navic pozadujeme, aby vsechny hrany byly orientovany "vpied ve smeru sledu". U neorientovaneho sledu na orientaci nezalezl. Proto rna. pojem neorientovaneho sledu smysl pro orientovane i neorientovane grafy. Navic, kaZdy orientovany sled je take sledern neonentovanyrn (nebof splimje podminky, aby se takto moW nazyvat]. Konecne poznamenejme, ole v obecnych sledech se mohou vrcholy i hrany opakovat.

V grafu G na 0 hr. 1.7, str. 24, je posloupnost Vs, en, Vl • el , VZ, es, V4 orientovanym (a samozfejrne zarovei\. i neorientovanym) sledem, zatimco posloupnost V3, e.t, V2, el, Vl, el, V2 je pouze neorientovanym sled em a posloupnost V3, e2, 1),1, e4, vi vubec neni sledem.

V grafu silnicu] site s jednosmernymi silnicemi smi auta jezdit jen podle orientovanych sledu, zatimco chodci smi chodit i podle sledu neorientovanych.

Trivi6.lni sled je sled, ktery obsahujc jediny vrchol a zadnou manu. Trivialni sled lze poklAdat za orientcvany i neorientovany.

Kaidy sled (krorne trivialniho) je jednoznacne urcen posloupnosti svych hran.

V prostern grafu je sled urcen i posloupnosti vrcholu,

20

Kapitoia 1. ZaldadnI pojmy

1.5.2 Tah, cesta. Orientovany (neorientovany) sled, v nemi se Mdmi hrana neopakuje, nazyvame orientouansrm (ncorientovanym) iuhcm. Orientovany (neorientovany) sled, v nemz se neopakuje zauny vrchol, na.zY-Viirne orientouanou [nearientovallou) cestou.

Vsimnete si, ze z faktu, ze se v caste neopakuji vrcholy, vyplyva, ze se v ni neopakuji ani hrany. Kazda cesta je tedy zaroveii take tahem a sJedem, zatimco tah je vzdy sledem, ale neni viuy cestou.

Nizev tah je pravdepodobne odvozen od zname ulohy nakreslit "domecek" nebo jiny obrazek (gmf) jednirn tahem.

1.5.3 Uzavrene sledy, Sled [orientovany nebo neorientovany], ktery rna. alespof [ednu hranu a jehos pocitel':ni a koncovy vrchol splyvaji, uazyvame uzavfenym sledetn. Podobne mluvfme a uza'vrenem tahu.

UZa1!rr.na cesta je uzavreIlY sled, v nemi se neopakuji vrcholy (krome toho, ZC Vo = Vk) a navlc se neopakuji ani hrany, Pro uzavfene cesty se pouztvaj! specialni nazvy: kru.inice. je neorientovana uzavfcna cesta a cyklus je orientovana usavrena cesta, Opet plati, ze cyklus je zarovei'l i krusnici, ale naopak La ncplati.

Kruznice, ktera rna Li'i hrany, se nH.zyva t.mjuhelnik.

Poznamenejme, ze trivialni sled nepokladarnc za sled uzavreuy, Pro definici uzavrenych cest jsrne museli zakazat kroms opakovani vrcholu take opakovani hran prot.o, aby se posloupnost vo, e, Vl, e, Vo nernohla nazyvat uzavfenou cestou,

1.5.4 Dost upnost , Rekneme, zc vrchol y je orieniooane (neorientovane) dostupny z urchohi x, jestlize existuje orientovany (nearientova.ny) sled vedouci z vrcholu x do vrcholu y. Vsimnete si, ze sled spojujici x a '!J existuje prase tehdy, kdyz existuje cesta spojujici tyto vrcholy. (Proc?)

1.5.5 Sledy v ohod'nocenych grafech. V ohodnocenych grafech rna casto velmi dobry smysl hovofit 0 souctu ohodnocenf hrau v nejakem sledn, ceste, cyklu apod. Jestlise nape. ohodnoceni hrany vyjadiuje vzdalenost, mnozstvt prace, casu nebo penez potfebnych k pruchodu hranou, pak soucet ahodnoceni hran rna jiste dobry prakticky smysl. Pi'itom ohodnoceni kiJ.Zde hrany pocltame vzdy tolikrat, kolikrat 5e hrana ve sledu vyskytuje, Pro tento soucet ohodnocenf hran se vzi] termin de1kn sledu (cesty, tahl,t, kruinice, cyklu) a. v tomto smyslu se hovofi 0 7lcjkratSfm nebo nejde.l§lm sledu, cests atd. Hledani nejkratsich nebo nejdelsich cest patfi k nejcasteji aplikovanym uloham teorie grafU.

Nutno ovsern poznamenat, ze termln delka sledu (cesty, atd.) je casto Ilz1va.n take pro oznaceni poctu hran ve sledn, Geste aped. Tento rozpor ve vzite terminologii lze Iormalne tesit umluvou, ze podet hran ve sledu budeme pokladat za soucet ohodnoceni, je-li kazda 'hrana ohodnocena jednickou.

Dodejme, ze hledani cest s nejmensim poctem hran je podstatne jedncdussi nez hledani cest s nejmensfrn souctcm ohodnocenl (viz 3.2 a kapitola 6).

V leta knize budeme pouzfvat. terminy delka sledu a nejkratsi sled, cesta atd, Lerner vMy YP. srnyslu "soucet ohodnoceni" a jen vyjimecne vc smyslu "pocet bran", pficemz na tyto vyjimky vzdy 7.vl81e upozornlrne.

1.6. $peciaJnf gnliy

21

1.6 Specialnf grafy

Diskretni gmj je graf, ktery. nerna zadnou hranu. Podle potreby jcj miizeme povazovat za orientovany Ci neorientovany,

Oplny orientolJallY graf je prosty graf G = (V, R), kde R je rnnozina vsech tl:'!poradunych dvojic ruzuych vrcholu z mno7:iny v.

Upl1!y (llcorientovany) gmf.ie prosty neorientovany graf bez smycek, jehoz kazde dva rthne vrcholy jsou spojeny hranou, Ma-li n vrchour, zna.Cimc jcj J(n (obr. L~).

Biportiini gra! je takQvy graf G, jehuz umosina vrchohi V(G) je disjunktnirn sjeduoccnim dvon mnozin S, T a plati E(G) = Wc(S). Jinyrni slovy, kaida hrana bipartitniho grafu rna [eden krajni vrchol v S a druhy v T. Mnoziny S, T nazyvarne stranomi bipartitnlho grafu, U orisntovaneho bipurtitniho grain zpravidla pozadujp.llie, aby vsechny hrany byly orientovany souhlasns, tj. aby E(G) = W+(S).

Oplny bipartitni yrafjc takovy bipartitni graf, kde kazd.i dvojice vrcholu s E 5, t E T je spcjena pi'esne jednou hranou. Uplny bipartitni neorientovany graI, .iehoz strany S, T rnaji m ;;;0 lSI a 11 = ITI prvkn, znaeime Km,n (viz obrazek 1.3).

Obrazek 1.3: Uplny graf K« a uplny bipartitnl graf K3,4

emf nazyvame n~gulrimim (tez pnl1lidelnym), maji-Ii vsechny jeho vrcholy stejny stupeii. Gra.f, v nemz vsechny vrcholy rnaji stupen k, nazyvame k-requltirnim. (tez k-pravidelnym). Pffklady 3-regul<irnlch grafll jsou nakreslcny na obrazcieh 1.1 a 1.2 au. strane 18.

1.7 Korenovy strom

Kofenove stromy patff k neju:l:itccnejsim a. nejr.asteji pouzivanym grafUm. Obrazky kofenovych sLromu si pro 7.mizomeni hierarchicke struktury kresli i tide, ktefl 0 teorii grafU nemaji ani tusenf.

Vzhledem k dlile:l:itosti korenovych stromu zavedeme jejich ponekud spacialn! terminologii jiZ zde, tfebaze podrobneji se obecnymi stromy budeme zabyvat v 4.2, str. 58, a korenovyrni stromy pak v 5.3, str. 77.

L 7.1 Koi'enovy st.r orn je orientovany gnu, v llcmz cxistuje vy7.ua.cny vrchol r, tzv. koien, takovy, ze do korene nevcde za.dna. hrana, do kaZdcho jineho vrcholu vede presnc jcdna hrana a navic jsou vsechny vrcholy 7. korsne T oricntovans dostupne. Koi'cnory strom byva Dekdy nazyvan take vetvenim.

22

Kapitola 1. Zwadni pojmy

Vlastnosti korenovych stromil a definice kotene jsou uvedeny v 5.3, str. 77. Zde pouze konstatujme, it! v korenovem strome do kaiueho vrcholn vede z ketene pfe~ne [edna orientovana casta. Na obr. 1.4 jsou dva priklady korenovych strornu. (Najdete

kofeny.)

Obrazek 1.4: Korenove stromy.

Pro korenove strorny se CastD POUZlva. zvlastnl "pilrociopisnc rodinna" terminologie, Vede~li v korenovem strome mana 2 vrcholu x do vrcholu y, pak vrchol z nazyvame otceui vrcl~ol1L y a'vrchol y nazyvime synem vf1cholu x. Nekdy se dokonce o vrcholech, ktere majl spolecneho otce, mluvi jako 0 bratrech, zavadi se pojem dedecku a vnuka atd. Vrchol, ktcry nema zauneho syna, nazyvame listem. Poznamenejmc, ie kazdy vrchol korenovcho strornu ma presue jednoho otce s vyjirnkou

korene, ktery otce nema,

Korenovy strom se obvykle kresli tak, ic kofen je nahore a vsechnyhrany vedou

shora dolu tak, aby se nekNzily. Strom IIa obrazku 1.4 vpravo je tedy nakreslen

ponekud netradicnim zpusobem.

Uspoi'ridany kOfeTlOvY strom je korenovy strom, v nemz je pro kaZdy vrchol

urceno uspofadani jeho synu. UsporadaIlY korenovy strom kreslime zpravidla tak, aby synove byli usporadani zleva doprava,

z

- ,1 v II II

I I II

I t L __ .. I

~ .JL ~

r"'---~- ~--.

X

Obrazek l.G: Bimi.rnI kofenovy strom a podstromy vrcholu z a y.

Binarnf. k.ofenovY strom [e korenovy strom, jehoz kaZdy vrchol mil. nejvy~e dva syny. Obvykle pi'itom rozlisujeme pofadi synu a ve shode 5 obvyklyrn zpusobem kresleni pak mluvime 0 lavern a pravem synovi. Pokud ma v binirnim kofenovem strome nejaky vrchol jen jednoho syna, mlH:e to byt syn pravy nebo levy. Vrchol v

na obrazkc 1.5 rna jen leveho SYlIa.

podst.roruem ko.ienoveho stromu se zpravidla. nenazyva jakykoli podgraf, ktery

j e korenovym stromem. J e-li x vrcholem korenov.eho stromu G, pakpu dstrom urCl'.nY

urdiolem x nebo podstrom s kofenem x jc podgraf, ktery je indukovan mnozmou vsech vrchohi orientovane dostupnych z vrcholu x. U binamich stroma ,,10 lake mluvi 0 leoem podstromu vrchoiu x nebo 0 pmvem podstrotms urcbotu x, coz jsou podstrorny, jejichz koreny jsou levy nebo pravy syn vrcholu x, Na obrazku 1.5 jsou carkovane oznaceny leve a pwve podstromy vrcholii z a y. Podstrom s koi'enem :11 je pravym podstromern vrcholu z,

Hloubkv. urcholu x v korenovem stroma definujeme jako pocet hran v (jedine) ceste z kofene stromu do vrcholu x. Mnozinu vrchohi, ktere jsou ve stejne hloubce, pak uazyvame vrstuou. Vysku vrcholu x definujeme jako llejvctsi pocet hran v ceste zaonajid v z a koniiici v nekterem liste. V.yska strom1/. (jako celku) je vyska jcho korene. V korenovern strorne na obrazku 1.5 jsou vrcholy z a y v hloubce 1, ale vrchol :1; rna vysku 2, zatirnco y rna vysku 3. Vyska celeho strornu je Ii a vseehny listy nejson ve stcjne vrstve.

1.7.2 Aplikace korenovych st romu jsou opravdu bohate. Znazornit kofenovym strorucm rodokrnen nebo nejn'tznejsJ hierarchicke vztahy je velice pfirozene. Diile"ziM aplikace jsou v programovanl poCitacu, kde se pou~iva. fada dumyslnych datovych struktur zalozenych na korenovych stromech,

No. obrazku Lf je ukazka jineho mene trivialniho pouzitL Aritrneticky vyrazje we reprezentovan uspofadanym binamfm kofenovym stromem, Podobna reprezentace se j.louziva v pfekladaclch programovacich jazyku,

6

1 2

Obrazek 1.6: Reprezentace aritmetickeho vYra.2U (1 + 2)·3 + 4/(5 - 6) korenovym struuicm.

V tcto souvislosti Be lze setka.t se zvlastnimi zptlSOUY vyjmenovani vaech vrchohi korenoveho stromu. Oznacme pro libovolny vrchol x symbolem L(x) a R(x) levy a pravy podstrom vrcholu x. Usporadani vrcholu korenoveho stromu se nazyva preorder, postorder neho in order, jest.lize pro kaidy vrchol x plati, ze vrcholy podstromu s kofenem x jsou v tomto usporadani uvedeny (vyjmenovany) v tomto poradi:

preorder: inorder: postorder:

vrchol z, vsechny vrcholy z L(x), vsechny vreholy z R(x), vsechny vrcholy z L(x), vrchol x, vsechny vrcholy z R(x), vsechny vrcholy z L(x), vsecnny vrcholy z R(x), vrchul z ,

V grafu na obrazku 1.6 odpovida pofadf inorder beznemu zpusobu zapisu aritmetierych vy-r&Zu. Pofadi preorder je ,,-1-,+123/4-56", postorder jp. ,,12+3-450-/+". Pofadi postorder odpovida poi-ad! pi'i vypoctu vyrazu. Jak pro dany korenovy

Kapitola 1. Z8..kladnf pojmy

strom tato poiadi vrcholu najit, si povime v 3.3.13, str. 56 (prohledavani grafu rio hloubky).

Dodejrne, zc poradi preorder a postorder lzp. definovat i pro obscne koiienove

stromy, Pofadi inorder rna srnysl jen pro stromy binarni.

1.8 Matice popisujfci graf

1.8.1 Marice sousednosti. Necnt G je orientovl!.llY graf. Zvolime-\i (Iibovolne, ale pevne) pofarli jeho vrcholu til, c ••• ,"Unl mt'iieme grafu G piii'adit matici sousednost! Mit fidu n predpiscm

Pro neodentovane grafy definujeme matici sousednosti Me.; pfedpiscrn mij = m(v"vj) .

To znamel1a,ze matice sousedaosti neorientnvam'iho grafu je vzdy syrnetricka: mij = mji pro vscchna i, j. Grafy G a H na obr. 1.7 maji tyto matice sousednosti:

U 2 0 ~) MH~U 2 1 n
M+- 0 0 0 1
a- 1 0 1 ' 1 0
0 0 0 1 1
e~ C.2.
"'~~ V'0~
el 81
e6. C4 E::; H e6 es
G Col.
V3 e5 Vol. V3 es V'4 Obrazek 1.7: Grafy, jcjichz matice souaedaosti jsou Met" a MH.

Poznarnenejme, ze maji-li dva grafy, obo orientovane, nebo oba neorientovane, stejnou matici sonsednostl, pak tyto graly jsou navaajern izomorfni, Naopak to vsak neplati: zmena pofadi vrehohi rna. za. nasleu'Ck stcjne zmeny v poradi sloupcu a fidku matice sousednosti. V?:ajemne lzomorfni grafy tedy mohou mit Inzne matice sousednosti.

Neorientovany graf a graf orientovany, ktery je jeho syrnetrickou orient ad (viz

1.2.1), maji stejne matice sousednosti. Je-li tedy matice sousednosti syrnetricka, pak ZP, samotne matice nelze poznat, zda je graf orientovany neho neorientovanj.

1.8.2 Cviccni. Kolik hran rna orientovany graf, ktcry rna stejnou rnatici sousednosti, jako graf H Z obrazku 1. 7? Kollk by mel hran, kdybygraf F-I mel navic jednu

smycku?

U1. hPUSOOy zauavaru graru

1.8.3 Cviceni. Mohou dva grafy, orisntovany grafG a neorientovany graf G', mit stejne rnatice sousednosti a zaroven stejne potty hran? Jak takove glary vypadaji?

1.8.4 Marice incidence. Neche G je orientovany gnu bez srnycek. Zvolime-li [libovolne, ale pevne) nejen pofadi vrcholii 111, ... ,11 .. , ale i pofadi hran e1, ... , em, ml·J7.eme grain G priradit matici incidence (tez incidentnz matici) DG typu (m,11) ptedpisem

1, ~1, o

jestlize Vi 5e pobl.t.ecnim vrcholem hrany ej, jestlife Vi je koncovyrn vrcholem hrany ej, v ostatnfch pf1padech.

l,.""'"

Incidencni matlce grafu G z obr. 1.7 je

( 1

~1

Bo = ~

-~ )

1 .

o

1 -1 o o

o 0 1 -1 o 1

-1 0

o o 1

-]

Poznarnenejme, zc kazdy sloupec obsahuje presne jednu 1 a presne jednu -I (prof:?) a dale, ie soucet hcdnot v i-tern iaJku je roven d+(Vi) - d- (Vi)'

Pro nsorientovane grafy bez smycek se incidencni ma.tice definuje pfedpisem

b _ { 1, jcstlize Vi je incidentni s hranou ej,

>] - 0 v ostatnich pffparlech.

Incidendn] matice grafu H z obr. 1.7 je

o 0 1 1

o 1 o

01)

o 0

1 I .

1 0

1 1 o o

Poznamenejme, ze soucet hodnot v i-tern. radku je raven d( Vi) a ole kazdy sloupcc obsahuje pfesne dve jednicky.

1.8.5 Cvir.enL PfedpoklMejme, ze graf je dan svou incidencni matid B. Jaky vyznam maji jednotlive prvky matice BBT? (Symbol BBT znaCi soucin maticeB 1I transponovanou matid BT.) Reste zv last' pro orientovane a neorientovane grafy a dejte pozor na prvky na diagonals vyslednc maticc,

1.9 Zpusoby zadavani grafu

Pokud nero graf pi'ilis velky (zcjmcna nema-li mnoho hran), je zi'ejme pro kazdeho nejsrozumitclnejsl obrazek, Jehu snarl jedinou nevyhodou je fakt, ze casto svadf k jednostrannemu pohledu, viz napr. obrazky 1.1 a 1.2 na strane 18.

26

Kapitola. 1. Zilladni pojmy

Situaee se ale podstame zmeni, jest1ize chcerne pracovat s wzsahlymi grafy, ktcre ji.z neobsahncme pohledern, a z~jmeni\, je-li tieba zadat graf do pocitace. Pouz[vanych 7.PllSobu je cela rada a vzajemne se lisi nejen vhodnosti pro urCite typy uloh, ale i stupnern univerzilnosti. vet~ina techto zpusobo pfedpoklada, ze vrcholy a popripade i hrany jsou oGislovany po sobe jdoucirni prirozenyrui Claly,

obvykle pocma.je ad jedne,

1.9 .. 1 Seznaroy vrchulu a hran, Muozina vrcholu je popsana prostyrn vyCtem (seznamem) prvkii, mnozina hran je popsana seznamem trojic tvofenych jrnenem hrany a jejim pocatecnim a koncovym vrcholem. V padstate se jedna ouplny popis grafu podla definice. Pokud uam nezalezf na jmcnech hran, mu:ieme je vypustit a hrany popisovat pouze dvojkemi vrcholu. Neorieatovane grafy popisujcme formaine stejnym zpusobem jako orientovane: pofadi vrcholu hrany volime libovolne. To znamena, ze nsorientovany gra.f zadavame prostrednictvim jeho nejake orientace.

K vyhodim tohoto popisu grafu patfi univeruilllost a relativni {lspornost.

Navic lze timto zpusobem snadno popisovat i ohodnocene graly: ohcdnocent proste pl'ipiseme k hranarn ci vrchoh'llll. Diky temto vyhodam je tento zpusob v praxi velmi casto pouzivan, t.!ebaze detaily provedeni byvaji nekdy ponekud odlisne.

Pi'iklad: GraS G z obrazku 1-7, str. 24, lze popsat napf , takto:

Vrcholy:

Hrany:

VI, 'Uz, V3" V4· (el, VI, VZ), (e2, 'VI, 'UZ), (e3' Vo]., '(4),

(e,\, 'V3, vz), (e5, V3, V4), (e6,V:l,'lid·

Jest.hZ;e 11l1m nezalezi na jmenech vrcholu a hran, m\'lzeme neorientovany graf H z obrazku 1.7 zadat (az no. izomorfismus) napf, tuleta:

1,2,3,4.

(1,2), (2,3), (1, '2), (3,4),

(2,4), (1,,3).

Vsimnete si, ze dvojice .(1,2) se v seznarnu hran vyskytuje dvakrar, nebof mn(1,2) = 2. Proto rnluvime 0 seznamu, a ne 0 mnozine.

Vrcholy:

Hrany:

1.9.2 Scznam vrcholu a seznamy okoli vrcholu. Tento zposob je vlastne usporuejilf variantou pferlchozfho zpfisohu. Mnozma vrcholu ie opet popsana seznamern prvku, ale hrany jsou popisoviny po skupinikh: pro kaZdy vrchol x je vzdy uveden sexnam rnnofiny hran E+(x). Kazda hrana pak je pops ana pouze svym [menem a koncovym vrcholem, nebof pocate{:ni vrchol x je pro celou skupinu hran

spolecny-

Priklad popisu grafu G z obrazku 1.7:

'!II : (Cl ,112), (e2' V2);

V2.= (e3,114);

V3: (e4' 112), (es, V4), (eo, VI); 'tl4_: 0.

"'-I

Je samozfejme, i.e bychom misto mnozin E+(x) mohli uvadet tez mnozmy E (x). K popisu neorientovaneho grafu ffiiizeme pouzit popisu nektere jeho orieutace anebo muzeme uvadet seznamy znnozin E(x), coz je ovsern mf\l1ii usporne, nebof ka:l.da luana (krome smycek) .ie uvedena ve dvou seznamech,

1.9.3 Matice sousednosti. Zde se VYUZIV;I. fakt.u, ze matice sousednosti urcuje graf az na iznmorfisrnus. Tento 7.pusob je matematicky e1egantni, ale pro praxi mene vhodny, zejmena pro grafy s ralativne milia hranami, ncbof matico pak obsahuje znacny pocet nul.

1.9.4 Matice incidence. Zde plati zhruba tote:l., co v preuchO'.dm pi'ipadti:

Matematicky elcgantni, ale neusporn€ (pouze d va nenulove pry ky ve slou pci). Pokud bychom udavali pouze polohy (tj. indexy) nenulovych prvku ve slonpci, dostali bychom vlastne seznam hran,

1.9.5 Matice sousednosti bipartitniho grafu. Tento zpiisob je pouzitelny pouze pro bipartitni grafy a je zalozen aa faktu, i.e vrcholy bipartitniho grafu lze uspofadat tak, aby matice sousednosti mela tvar

nebo

v za.vislost.i na torn, zda se jedna a bipartitni graf orientovany, nebo neorientovany. Podmatid A pak nazyvarne matici soussdnosti bipa.rtitniho grafu. Viz tez obr. 1.8.

01)

1 0

1 1

Obnizek 1.8: Orientcvany bipartitni graf a jeho matice sousednosti.

1.9.6 Neprill.lY popjs grafu. V nekterych pi'ipadech lze graf zadavat nepfimo pomoci algoritmu. Mnohdy totiz nepotfebujeme ZTIat napf. seznam hran jako celek, stact, kdyz pro kterykoli vrchol v umime nejakym algoritmem produkovat postupne vsechny hrany, ktere z vrcholu v vychazeji, Casto i rnnosinu vrchohi nemuslme

-» znat explicite pfedem: staei, kdyz se 0 existenci vrcholu dovime diky objeveni (spracovani) hrany, ktera v nem koncl nebo zaeimi. Tcnto pristup sc pouziva pfi zpracovanl rozsahlych graftl, ktere jsou definoviuy nepfimo prostfednictvim popisu nejake situa.ce nebo soustavy.

1.10

Z prncovanf . graft. na pocitaci

Nebuderne zabihat do detailu, ty m,·!7.e cf.en;l.r najtt v knihach [Kutera83], [AHU74] a v nckterych ueabnictcb programovani. Zminirne se jen st.rnrne a 7,ilkladnich

28

Kapitola 1. Z&kladni pojmy

datovych strukturach a nvsdeme konvence pro zapis algoritmll pouzi:vane v teto knise,

podotkneme, ze neni znarna ~adna uruverza.lne vYhodna. datova struktura, Pro

f\izlH.~ algoritrny jsou ruzne datove struktury nizne vhodne b nsvhodne.

1.10.1 Datove st ruk t ury vyuzivajici matice. Malice sousednosti a matice incidence nejsou obecne pi.:nis vhodne pro grafy s relativne malo hranami jednak pro parnefove naroky, jednak proto, ie vyhledani dalsi hrany, hera vychazfz tehoi vrchelu, je pornale (pi'eskakujeme pomerne znacne rnnozstvi nulovych prvku

v Fadku).

Ponekud jina situacc je vsak u ohodnocenych prcstych graUl, ktere tnaji hodne

hran, nebo take kdyf vysledkem vypoctu rna by-t matice: jsou-Ii dva vrcholy spojeny hranou, zapiseme na pfislusnc misto matice ohodnoceni Leto hrany. Pokud mezi nekterymi dverna vrcholy nevede hrana, zupiseme na odpovldajici misto matice l1€:jakou hodnotu, ktcra nemtlZe byt ohodnocp.nim zMne hrany, zpravidla nejakou

hodnf velkou neho hodne malon konstantu.

Tuto konstantu volime zpravidla tak, aby se s ni v IJi'islusne.m algol'itmu dobfc

prar:ovalo. Napf. pro hledanl nejkratsich cest (viz 6.1.1, str, 86) pouzijeme k oznadeni neexist.ujicich hran nejahi hodne velke Cislo jako nahrazku nekonecna (00). Pak vlastne algoritrnus narnlsto s puyodnim grafern pracuje s grafern uplnym, jehoz ncktere hrany jsou tak ne.pfiznive ohodnoeeny, z.e se nemohou ve vyslednem fe~eni vyskytnout. Vhodnost zmineneho zpusobu s(tmozrejme velice zaleii na charakteru resene ulohy. 0 zaludnostech techto triku viz tez poznamku 6.2.10, str. 93.

Neohodnocene grafy lze ukladat v pameti poc.ltace take tak, ie i-ty Muek matice bude obsehovatclsla na.;ledniku vrcholu 'i, zapsana tesne za sebou, Polk vlastne marne pro kaidy vrchol tzv. kompaktni seznarn jeho misledniku.

Pro proste neohodnocene grafy se take nekdy pouz,iv,i rnatice souscdnosti ulo:lena jako matice bitu. Pame-eove naroky jsou mnohem mens! nef 1l matice eisel, manipulace s matici bitu je vsak 0 niko t.ezlwpiidnejsL

1.10.2 Sesnam hran v j ednorozmernych polich. Pred pokladame, ie vrcholy i hrany grafu jsou ocislovany pofadovymi fisty 1,2, ... , n.

Seznam hran orientovanehu grafu pak lze snadno ulozit do dvou poli Pv a Kv. Prvek PY(i) pak obsahuje cislo pocatei:nllio vrcho\u i-te hrany, prvek KY(i) obsahuje koncovj vrchol teto hrany, Je-Ji graf ohodnoceny, pouzijeme pro ohodnoceni hran jednoduse dal§i pole.

Tent.o :.:;pusob je vhodny zejmena v programovadeh jazycich, ktere nepodporuji

bchatsi strukturovani dolt. Nevyhodou tohoto postupu je nutnost pole predem dimenzovat (mCit jeho velikost) a pak pomaly pi'istup k nasleduikUm ci predchtideum. Cll:stccne si Ize pomoci setffrlenim ill an podle Pv nebo K v. Lepsl ovsem jc pouzit jeste jedno "pole DALSI, jehoz prvek DALSJ(i) bude obsahovat vZdy index dalSi hrany, ktera rna stejny pocatelni vrchol j ako hrana i. Pokud dalsi takova hrana neexistuje, mu~e byt DALSI(i) = -1. Pomoci hodnot DALSJ pak he snadno pi'istupovat ke vsem hranam, ktere vychazeji z tehoz vrcholu. Pcdobny zpfssob lzc pouzit pro hrany, ktete kondi vc stejnem vrcholu a tyto zpusoby Ize i kornbmovat.

1.10. Zpra.covcin1 gn!.ftl na poCftaCi

29

Vyse popsane pouzit] pole DALSI vlastne realizuje spojovy seznam, k9C kazd<i poloska seznamu obsahuj~ odkaz (spo.i) 11a uals! polozku.

1.10.3 Seznamy naslcdnfku v jednorozrner'ndm polio Tento zpusob vyuzlva dve pole, oznacmc jc lox aN ASLED. Ilodnota lox(i) je indexem (por adovym cislern) prvkn, kteryrn v poli N ASLED 'lacina seznam naslcdniku vrcholu i_ Naslednici jsou v poli N ASLED ulozeni U~sl1e za scbou bez jakychkoli odddlovacu, Konec seznamu nasledn (ku vrcholu i se pozna jako zacatek sezuamu pro vrchol 'i + 1. K v u!i ukoncccl posledniho seznamu je v poli lox 0 jeden prvek vice nez je vrcholu. Viz priklau no. obrazku 1.9.

1 2 3 4 5
IDX: lil~~

~ 3 4 5 6 7
NASLED: 2 2 4 1 2 4 Obnh,ek 1.9: Datovy pupis grafu G "to obr. 1.7, str. 24, pomoci seznamu nasledniku v jednorozmernem polio

Je-li uauy graf multigrafem, zaznamename rovnobezne hrany jako opakovany vyskyt naslednfka, Ka:ldy prvek pole NASLED tcdy illuzeme pokladat za zaznam o hrane, v np.illz je vynechan poc.ilecni vrchol, Delka pole N ASLED je rovna poctu hran, Je-ll graf ohodnoceny, lze pro ohodnoceni pouzit dalsi jednorozrncrna pole (pro vrcholy i hrany).

Tento zpusob ulozenl grafu v pocitai::i je pametovi;i velrni usporny a umosiiujc rychle prochazet seznamy naslednikn: Pffstup k predcht'ldcl'lffi je vsak dost kornplikovany a pornaly.

1.10.4 Datove str-uktury zalozene na ukazat.elich. Modernf!jsf programovaci jazyky (napf. PASCAL, C) umoznuji praci s adresami datovych objektfi (t.yp ukazatel). To wDozilujc pohodlnou realizaci spojovych seznamu.

Data, ktera popisuji vrchol ci hranu, sdruzujeme do zaznamtl (record), prlcemz ka.ZdY ZaZll1:UIl obsahuje navic ukazatel na dalsi z.iznam v seznamu. Podrobnosti lze najit v temer kaZde ucebnlci prcgramovani.

Vyhodou pouziti ukazatehi ve srovnani s pouzitim poll je fakt, ze neni ti't!ba prcdem veciet, jak velka pole budou potieba, a take daleko snazsi zmeny grafu v pamet; -podtaLt!. Nevyhodou jc vyssi spotfeba pameti pro uloseni ukasatelu. Inn, kazdi legrace nsco stoji.

Nekdy se pole a zailnamy S ukazatcll kornbinuji. Pfiklad je na obrazku 1.1 0 na uasledujlcf strane, kde vrcholy jsou v poli, zatimco hrany [sou zaznamenany v zaznamech, ktere jsou pfistupne pomod ukazatehi.

30

KapitoJa l. Zlikladni pajmy

Stoji za zrninku, ze odkazy mezi datovymi objekty lze clnipat jako orielltO'llUlY graf a obnizky datovych struktur v uCp.bnicich programovruil i obrazek 1.10 to potvrzuji, Vrcholy grafu [sou zaznamy (popf. jine datove objekty) a hrany vyjadtuj! existenci ukazatele a odkud kam tento ukazatel ukazujc. Tento graf datove struktury je sarnczfejme nseo uplne jlneho nez graf, ktery ]5 v te datove st.rukture ulofen.

PV KV

~ t 121 x I

2 3

PV KV

~v J<V

Obrazek 1.10: Dasovy popis grafn G zobr. L7, str. 24, pornod ukazat.elu.

1.10.5 Popjs algor lt.mn- Algoritmy v teto knize jsou popisuva.ny spise nsforma.ine, bez speciaInfho zi'etcle no. nejak)i programovaci jazyk a bez pouiiti strukturovanych pfikazu.. Jedinou vyjimku tvofi algoritmy prohledavani do hloubky, u nkhz ic vedle Mz.miho popisu nveden i zapis s vyusltim rekurzivill procedury (viz 3.3.9,

str. 55, a 5.113, str. 69).

Jsou-li v algoritmech vrcholum Ci hranarn pfifazovany nejake hodnoty, je zapls

teto skutecnosti proveden t.ak, jako by hodnoty byly ulozeny v poli (viz 1.10.2). Mluvime tedy napf. 0 poli VZDALEN05T, pficernz VZDALENOST(V) oznacuje hodnotu vzdalenosti pfifa7.enou vrcholu v.

V M.dnem piipade nebylo umyslem vnucovat ctenifi impleruentaci zalozenou na

polich. Spi1ie SID 0 ctenare, ktefi I1cjsou 'lbehli v pouzlvani ukazatelii. Zda.tnejsi programator si snadno zde uvedlme algoritmy pfevede do sve oblibene datov€!

struktury.

Jako znak pfirazeni uzivame symbol :=, znak = oznacuje vztah. rovnosti,

1.10.6 Casove mirokyalgoritmu a obti:!nost ulah. Do.leiitYrn mi!i'itkem kvality algoritmu je jeho rychlost. Pfestoze se rychlosti algori tmu nebudeme dfltaiille zabyvat, buderne u vetsiny algoritrnu uv.idP.t poznarnky 0 jejich ca.sovj"ch naroctch. Zpravidla pujde 0 vyroky typu "cas vypoCtu neroste rychleji nez ti'eU mocnina poetu vrcholu" apod. Budeme pri tom pauiivat toto znaceni:

Neche t, 9 jsou dye nex.apome funkce reaIne prornenne. Jestlize existuji realne konstanty k, m takove, ze pro v3echna .x > m plati g(x) S kf(x), pak piserne

9 = 0(1).

Zapis 9 = 0(1) se vyslovuje [ako ,,9 je 0 1". Je treba npozernit, ie v tornto

zapiSll rna, znak rovnitko trochu jiny vyznam nez obvykle. Neni to rovnost mezi 1:isly nebo fnnkcerni, je to trochu podivne zapsanj' vyrok 0 cbovani funkce g.

Plat! napf. 5x2 + 3x = O(.x2) a take x3/ 1000 + 1000x2 = 0(x3), ale pozor: platl take 12n logn = O(nZ) nebo 2x2 + 4 = O(xG) a. dokonce 2xz + 4 = 0(x1000). Nezda

1.11. Op tinlalizaclli UlollY

se yam to'! Inu, je to tak trochu chytak, ale overte si, ie podle vyse uvedene definice je to skutccne pravda.

Rekneme-li naprfklad, ze nejaky algoritmus pracuje v case 0(n3), kdc n Jc pocet vrchohi grafu, znamena to, ze doba jeho prace na grafcch ad urCitc velikosti vyse neroste rychleji nez nejaky nasobek tfeU mocniny poctu vrcholu 'Il. Pi'itom je vsak moine, ie pro mnoho konkretnich pripadit vstupnich dat (treba i pro vsechny) bude tcntyz algoritmus pracovat rychleji. Dokonce i kdyby platil Iepai odhad, napriklad 0(n2), byl by odhad 0(n3) take pravdivy, Zaplli 0(n3) je proste jan orlhadem shora, ktery tvrdi pouze to, ie to pro "clost velka n" nebuds horst nel. "neco" krat n3•

Pokud v souvislosti s casovymi odhady pousljeme symboly n a m, bude vzdy n znacit pocet vrcholil a m pocet luau grafu,

Algoritmy, ktere pracuji v polynomialnim case (Lj. v case O(P), kde p je llejaky polyuom), jsou obvykle pokladany za "ryehle" 1 a pfislusne ulohy za "snadno i'esitelne" . Je vsak mnoho uloh, pro ktere polynomialnf algoritmus neni znam a panuje presvedcen], it! ani itidny neexistuje, 0 takovych u]ohach budeme Hkat, ie jsou NP-teiki. Strucne vysvetleni tikht.o pojmu najdete v kapitole 11, str. 185-

1.11

Opt.imalizacni ulohy

V teto knize se caste budeme zabyvat optimalizacnimi Tl.lohami, tj. iilohami, v niche se hleda teseni, ktere je v nejakem srnyslu nejlepsi. V souvislosti S optirnalizacnimi ulohami se heine poul.iva nekolik pojmu, ktere nyni vysvetlime,

1.11.1 Mnoeina pfipustnych reseni. V optimalizacnlch ulohach bleJfune resen!, ktere je nejlepsi mezi vseiui Lz v. pi1pustnymi fdenimi. Mnosina vseeh pt! pustnych resen! vsak obvykle neni darla seznamem svych prvkfi.

Obvykle marne danu mnczlnu, ktere rikame prostor feieni, a seznam podrninek, kterym tikame omezujici podminky. Mnozina pnpustnych resenl pak je tvoiena vsemi tesenimi (tj. vserni prvky prostoru resen!), ktera splfiuji omezujici podminky, Je-li omezujicich podmfnek nekolik, musi je pripustne resent splnovat vsechny,

Tlltez mnozinu ptipustnych reseni lze casto definovat nekolika zpusoby. Napfiklad pri hledani nejkratsich cest v grafu z vrcholu x do vrcholu y bychom mohli za prostor resew prohlasit primo rnnofinu vsech cest z vrcholu x do vrcholu y, omezujici podminky pak .nebudeme vubec poti'ebovat. Muzeme vsak take za prost or resen} prohlasit rnnozinu vsech sledu z x do y a pomoci omezujici podminky pozadovat, ie pfipustne :reSeni must byt cestou, Nebo dokonce mii.zeme jako prostor reseni vzit vsechny slcdy (vc vsech grafcch) a formou omezujicich podminek pozadovat, aby reseni bylo cestou v danem grafu a aby pocate<:ni vrchol sledu hyl x a koncovy y.

Zpusob, [akym je definovana mnosina pfipustnych resen!, ma velice podstatny vliv na zpusob reselli ulohy, protoze pl'i reSell!, dltl'ij nechtej, musime vychazet z tvaru a zpusobu, jak je uloha zadana,

10 ,,;i,ludnv~tech takovychto zavcrfl viz 1l1.3, str. 186, nebo knihy [Klicera83, AHU74].

31

32

Kepitol« 1. Zaldadni pojmy

1.11.2 Vcelova funkce. Ktere resen! je lepst a ktere hers! urcuje v optirnalizacnfch ulohach tzv. ucelova jtmkce, coz je zobrazeni, ktere kazdcmu pfipustnemu resenf pfitazu.ic clslo, kteremu fikame hodsiota ltceiu'Ue junkce.

Optimciinf feseni je pak takovc pripustne resen!, ktere rna mezi vserni pfipustnyrni reHenimi nejmensi nebo naopak nejvetsi hodnotu ucelove Iunkce Zde 7.rueil na charakteru ulohy - nap!'. naklady obvykle minimalisujems, zatimco zisk zpravidla chceme co nejvetsl.

Napifklud pri hledani nejkratsich cest je ucelovou funkci soucet delek vsech hran, k(,ere tvofi pfipustne rescnl (tj. cestu z x do vt. 11 Luto ucelovou funkci minimalizujerne.

1.11.3 Typ ulohy, instance ulohy a zadaui ulohy. Slovem "l'l1oha" byvaji casto oznacovany dye dosti odlisne veci:

Typ tilohy urcuje zpfiaob, jak je zadana liceJova Iunkce, zda jde 0 minimalizaci nebo 0 maxirnalizaci, a zpusob, jak je zadana mnosma prfpustnych reseni. V tomto smyslu tedy mluvime napf. (J u10ze najit nejkratsi cestu v grefu, ctmz marne na mysli obecny typ (dmh) ulohy,

O1ohy urciteho typu mohou mit spousty ruznych instanci (konkratnich prlpadu), ktere sc lilli v konkretnich bcdnotacn ciselnych parametru, grafern, ve ktcrem se hleda reseni, apod.

Instance ulohy je konkretni pffpad ulohy, ktery je zadan tak koukretne, ze rna smysl ji resit (pocitat) nebo se 0 to alespoii pokouset, Zaddnf. ILlohy jsou vlastne data (mnohdy ciselnciL kteryrui se odlisuji jednotlive instance ulohy,

Napfiklad pro ulohu (tj. typ ulohy) najit v grafu nejkratsi cestu mezi dverna vrcholy must zadani ulohy obaahovat popis konkretniho grafu, ohodnocenl hran jejich delkami a pocateclli a koneovy vrchol hledane cesty. Teprvc mame-li k danemu typu 1110hy tyto konkretni udaje, rna smysl z3.Cit pocitat.

Naopak obecny algoritrnus pro i'eSeni uloh daneho typu (tj. pro reseni vsech instanci) lze vymyiileL na zaklade znalosti typu ulohy, tj. j bez konkretnfho zadani.

1.12

Mnoziny, relace a zobrazeni

Jde 0 zakladnf pojmy a kazdy elena! se s nimi jistc uz setkal. Mnohe z techto pojmu souvisi s grafy velmi tesne (relace a zobraseni lze napf. znazoriiovat pomod grafti.).

1.12.1 Mnoziny. Je-li x prvkern mnoziny A, znacime to x E A. Dve mnosiny pokladame za stejne, obsahuji-Ii obe tytcz prvky.

Mnozmu v~f!Gh realnych c':isel znaclme R a rnnosinu vscch pfirozanych asel znacime N. Nulu pokladame za prirozene Cislo, tj, 0 E N.

Jsou dva Mlldite zpusoby, jak popsat (sdelit nekomu) mnosinu, Popis mnosiny vyl:tem jejich prvku lzc pouztt k popisu konecnych mnozin. Pi'ipomefime, ze poiadi prvkiJ. ani jejich opakovany vyskyt pi'itom nemaji vliv, Plati tedy napffklad {a,b,c,b,b,a,b} = {b,e,a}.

Popis mnoziny pomoci vlastnosti jejich prvku umOZIlUJe pops at i nekonecne mnoziny, Zapisem {x I x rna vlastnost V} oznaiiujerne c!lllo~lnu vsech prvku, ktcre maji vlastnost v.

Mnozina 11 jc 'podmnaiinou. mnosiny E, jestlize kaidy prvek mnosiny A je take prvkem innoziny B. Tento vztah znacime A k B. Kazda mnozina je podmnozinou seba sama.

Prazdna mnozina 0 jP. mnozina, ktera nema zadny prvek. Prazdna !lluozi.na je jen jedna (nebof vsechny prazdne mnofiny jsou si rovny) a je podrnnozinou kaZue mnoiiiny, dokoncc i podmnoiinou sebe sama.

Prvkem mno7.iny rnl'lze byt i jina mllo~i.lla, dokouce i prazdna, Tedy napi'iklad rnnosina { fa, b, c}, b, 0, {0}} ma. ttyfi prvky: tfiprvkovoll mnozinu {a, b, c}, prvek b, prazdnou mnofinu 0 a jednoprvkovou mnofinu {0}.

Mnozinove operace pruuiku (A n E) a sjcdnoccni (A U B) zna asi kaZdY. Rozdil mnozin A \ FJ je rnnozina vsech prvkii, Here le:2i Y !l111ozinc Jl a nclezi vB. Tedy napf {a, b, e, d} \ {a,e} = {h,d}, ale pozor, {a, b} \ {c,cl} = {a, b} .

Je-li An E = 0, pak i'ikame, ze mnosiny A, B jsou disjunktni. Pocet prvku konecne mnoztny A znacime IAI.

1.12.2 Kart.p.zskY snuein. .Isou-Ii A., B dve rnnozmy, pak syrnbolern il x B oznacujerne jejich kartizsky sQucin, tj. mnozinu vf.iech usporadanych dvojic (a, b) takovych, zc a E A abE E. Jinak recenc, ka.rtezskY soucin A x B je rnnozina, kterti se sklada zc vscch mosnych uspofadanych dvojic vytvoranych tak, ZP. prvy prvek dvojice vezrneiue z A a druhy z B.

Mame-li dv~ konecne mnoainy A, E, ktere rnaji Tn an prvku, pak pocct prvldi kartezskeho soucmu A x B je roven soucinu (elsel) mH.

Kartezske souciny lze vytvatet i z vctsiho poctu mnozin. Napffklad soucin A x x Il x C x D se sklA.da z uspof'adanych CLveHe.

Specialnirn pfipadem kartezskehc soucinu je kartezsk6. mar.nina, kde nasobime mnesinu samu se sebou, Napi'. A x A x A = All a Ex E = B2.

Zml.mYm pfikladem kartezske mocniny je rovina JR2 = R x JR, .iejl~ prvky (body) urcujerne pomoci dvou souradnic. V teto knizevsak kartezsky soucin potrebujeme zejmena k definici pojmu relace.

1.12.3 Relace je matematickym vyjadrenfm vztahu, Relaci formalne definujeme jako pcdmnczinu kartezskeho soucinu.

Takto definovany maternaticky pojem relace se nesna:zi zachytit podstatu nebo prlcinll vztahu, ale pouze eviduje, kt.erp. objakty v danern vztahu jsou a here nejsou. Napi'. relacc llbyti otcem" pouze eviduje Llspoi'ada.ne dvojice lidi, z niehi prvy jc otcem druheho. Vubcc se pfi tom nestarame 0 okolnosti, nap!'. kdo z nich ma druheho HLd aped. Tyto okolnosti, pokud bychom chteli, by bylo tfeba modelovat ni'jak jinak, napr. POIIlOcl clam relace.

Je-li relaoe R ~ Al X Az x ... x An podrnnoainou kartezskeho soucinu 11. mnosin, pak Cislo 11. nazyvame aritou relace R. Velmi dulezite jsou billa.rru relace, ktere maji aritu 2.

34

Kapitola. 1. ZEikladni pojmy

Skutecnost, ze n-tice (a1' a:!, ... ,an) je v relaci H, lze vyjadfit nekolika zpusoby, Zapis (aI, a~, ... , an) E R je v souladu 5 matematickou definici relace. V nekterych aplikacich se tot!:!z vyjadfuje tzv prefixnim zapisem R(al, a2,"" an). Pro binarni relace se caste pouziva. takzvany Infixni zapis xRy. Je to obvykle napfiklad u rclaci <, >,~, =,~, E apod., kde piseme nap!'. 1 < 2 radeji nez (1,2) E < nebo «1,2), ttebaie i tyto zapisy jsou spravne.

1.12.4 Blnarnf relacc na mnozine je rclace, ktera. je podmnosinou druhe kartezskc mocniny dane rnuosiny. Je-li napi'iklad A mnozinou lim, pale vztah mezi rodidi a detrnl muzerne modelovat pomod relace R C A2. Prvky teto relacs budou vsechny uspofadane dvojice (x, u), kde x a y jsou lide a y je ditetp.m z , Jinym pi'ikladem binarni relace je relace ::; na mnosine else!'

Pozorny ctemii' sl jiste vsimnul, ze binarnlmi relacemi na mnozme muz.eme vyjadrit presne totez, co prostymi orientovaaymi grafy. Proto take pro binarni relace pOllzlvame stejne obrazky a ste.im~ vyjadi'eru pomoei rnatice sousednosti,

Omezeni na proste grafy je podstatne, Multigraf uomoci relace vyjadrit nejde, nebof relace je (forrnalne vzato) rnnosina usporadanych dvojic, a proto nemuze obsahovat zaduou dvojici vice nez jedcnkrat.

Mimochodem, v mnohych knihaeh 0 teorii grafu. se definuje mnozina bran oricntovaneho grafu jako binarni relace na mnozine vrcholu (viz 1.3.5). Takova definice vsak neumozhu]e pracovat s mu1tigrafy.

1.12.5 Vlast nosti bimirnich relaci. Binarni relad Rna mnozine A nazyvarne

symetrickrm, ,-ejlexivni, tmnziti1Jni, anlisymetrickou,

jcstlise xRy ~ yRx pro vsechna x, yEA, jestlize xRx plat! pro vsechna x E A,

je:;tliic (xRy & yRz) ::} xRz pro vsschna x,y,z E A, jestlize (xRy & yR:r;) => x = y pro vsschna .x, yEA.

Graf refiexivnf relate IDa v kaidp.m vrcholu smycku. Graf symetricke relace je symetricky. Symetrickou relaci tedy Ize vyjadi'it take neorientovanym grafem. Relace S a relace "byti delitelem" na mnoiine prirozenych ~isel jsou obe trauzitivni

a antisymetrick6. .

1.12.6 Ekvivalence (tez ekvivalencni relace) ic relace, ktera je reflexivui, symetricka a Lranzitivni.

Pilkladem ckvivalence na mnoijne lid! je rel ace "miti stejnou krevni skupinu", Jinym prikladem je relace "miti stejnou hodnotu" na mnoZine zlomku, kterou definujeme takto: zlomky a/b a x/V majI stejnou hodnotu pn.i.ve tehdy, kdyz ay = bx (nulovy jmenovatel zde nepfipoustfme), Overte, zc tato relace je opravdu rcfiexivni, syuietricka i tranzitivni.

Mame-li ckvivalencni relaci R na mnozine A, muzcIUe kaidemu prvku x E A prifadit. muozlnu vsech prvku, ktere jsou s nim v relaci, lj. mnozmu {y E A I xRy}. Tyto mnofiny nazyvame tridarni ekvivalence R nebo tel ekvivalencnimi ttidami.

1.12. .Mnoziny, relace a. zobra.zelli

35

Ekvivalencni ti'idy jsou navzajern disjunktni (ruzne tfidy nemaj! spolr.r.ne prvky) a jejich sjednocenim je cela mnosina A. Takovouto soustavu podmnozin nazyvame rozkladem IIlIIU~iIlY A na tridy ekvivalence R.

1.12.7 Rozklad mnosiny A je system nepraadnych podmnozln AI, Jh, ... , Ak rnnofiny A takovy, i.e rnnosiny AI, A2, ... , Ak jsou vzajemni; disjunktui (nernaji spolecne prvky) a plat! Al U Az U ... U A" = A. Mnozmy At, Az, ... , Ak nazyvame trfdamj rozkladu uebo rozkladcvymi ti'idamL

Mame-li rozklad mnoziny A, muzeme na. mnoime A definovat. relaci "b.Y!.i ve stejne rozkladove tride". Lzc dokazat (a je to snadne cvitenI), i.e ta.kto definovana relaee je ekvivalenci a i.e rozkladtcto relace na ekvivalencni ti'idy je totOZD}"' S onim vychozim rozkladem.

Illavni vyzl1am ekvivalencnich relaci je v jcjieh tcsnem vztahu k rozkladum.

1.12.8 Castecne llsporadalli je rclacc, ktcra je reflexivni, tranzitivnt a antisymctricka,

Nejznamejsim pi'ikladem .ie uspofadani eise! podle velikosti, ale neni to pffklad charaktensticky.

Zajimavejsim prikladem castccncho uspofadani na mnozine pfirozenych i:isel je relace "byti delitelern". Vsimnete si, ze existuji dvojice eisel, z nichz ani jedno neni delitelem druhsho. Takove dvojice nazyvame ncporovnatelnymi.

Jinyru pfikJadem je relace ."bYti podmnofinou" na mnosine vsech podmnoiin nejak.c pevne zvolene rnnoziny A. Vsimnetc si, zc i zde existuji vzajemne neporovnatelne prvky (totiz podmnosiny mnoainy A).

8

12

11

1

Obrazek 1.11: Hasscovy diagramy castec.nych usporadanl "byti delitelern" a "byli

, podnmosinou" .

C.a.'ltecne usporadani na kcnecne mnosine lze (jake kazdou koneenou Linam! relaci) vyjadrit orientovanyrn grafem, Tcnto gn.f neobsahuje cykly, ale pro iicely nazorneho kreslerii rna zbytecne mnoho hrau, Je totiz zbytecne kreslit hrany, ktere lze odvodit z tranzi tivity. N avic by-va zvy kern takovYt.o gr af kresli l bez sipek, ale tak, aby vsechny hrany srnefovaly nahoru. Takovy obrazek se na7.Yva Hasseiiu diag'ram, prikla.dy jsou nakresleny na obr. 1.11-

Poznarnenejme, ze graf, ktcry je nakreslen Hasseovym diagramern, je ve skutecnosti orientovany, ale orient-ace hran je namisto sipek vyjadfena vYskou vrchohi

36

Kapjto]a, 1_ Za.kla.dI11 pojmy

na 0 brazku, Tento (orieutovany) graf je tzv. tranziti VOl red ukci grafu cas tccoeho usporadani, podrobneji viz 5.4, str. 79.

1.12.9 Linear ni usporadani jc castecne usporadan! H, ktere rna navlc tu vlastnest, z-e pro kazde dva prvky x, y plati bud' xRy, nebo yRx. V Iinearnim usporadaui se tcdy nemllze stat, ze by nejake dva prvky byly vzAjellll1C neporovnatelne,

Typickym prfkladern llneamfho uspol'adani je uspofadani eise! podle velikosti neho uspofadani slov VB slovniku podle abecedy,

Hasseuv diagram linearniho uspofadani rna velrni specialni tvar: vsechny vrcho!y lezi na jedine ceste z nejnizsiho vrcholu do nejvy~slho.

Mame-Ii linearnl usporadan] :S na n-prvkove illllozinc A, pak ml'lzeme prvky mnoziny A oClslovat pfirozenymi cisly {I, 2, ... , n} tak, i.e ai ::; tlj .¢:::=> i:S j. Take naopak, rname-li prvky nejake konccne mnosiny A ocislovany pfirozenymi Cisly {I, 2, ... ,n}, pak toto oClslovani uriiuje linearnt usporaualll na mnozine A.

1.12.10 Zobrazenl. V teto knisce vystacime s intuitivni prp.dst.avou zobrazenf jake pfedpisu f, ktcry kaidemu prvku nejake rnnosiny .4 pfitazuje prasne jeden prvek nejake mnoainy B. Tuto skutecnost vyjadiujeme zapisem f : A -+ B. Mnozinu A nazyvame definicnim oborem a mnozlnu B oborem hodnot zobrazeni f. Rika.me take, ie zobrazeni f zobttizuje mnoiinu A do mnoiiny 13.

Prvek z mnoi.iny B, ktery je zobrazenim f pIirazen prvku x E A, znacime f(x) a nazyvime jej obmzem pr!Jku x v zobmzeni f. Je-li X ~ A podmnozina definicniho oboru A, pale symbolern f(X) znacirne obras mnnziny X v zobmzeni i, tj. rnuozinu {y I cxistuje x E X takove, ie y = f(x)}.

Slovo "funkce" budernc pouzivaf pro zobrazenl do mnoiiuy realnych cisel. Formaln€: se zobrazeni f : A -+ B definuje [ako relace f t; A x B, ktera rna tu vlastnost, ze pro kaidy prvek z E A existuje pfesne jeden prvek y E B takovy, Ze (x,y) E f (nebo v infixnim zapisu xJy).

Dfky tomu, ze zobrazeni je vlas~ne relace, m(!zeme sl zobrazeni, ktere ma. konccny definicni obor A, kreslit jako orientovany graf, v nemi z kazdeho vrcholu z mnoziny A vychazi pi'esne jedna hrana (tj. kaidy vrchol z A rna. vystupni stupen 1).

Zobrazeni f : A -+ B nazyvame prostymzobrazenfm, jestlize pro libovolne dva prvky x, yEA plati x =I- y => f(x) -# f(y)· V grafu prosteho zobrazeni tedy do kazdeho vrcholu mnoiiny B vede nejvjse jedna hrana,

Zobrazeni f : A ~ B nazyvarne zobrazenim na, jestlize kaidy prvek aboru horlnot B je obrazem ntijakeho prvku definrcniho oboru A. V grafu zobrazeni na tedy do kt0.deho vrcholu mnoziny B vede alespoir jedna hrana,

Zobrazeni nazyvame 1Jz6.jemne jednDznacnym, je-li proste a Z<l.rOvei"l na, Ke vzajemne jednoznacnernu zobraseni t vzdy existuje tzv, inverznf zobrazenl r:', ktcre ma tu vlastuost, ie f-l(f(x») = x pro vsechna x E A a take f(f-l(y» = y pro vsechna y E B.

Vzajemne jednoznacne zobtazeni mezi dvema mnoaiuami existuje pra.ve tehdy, kdyz tyto mnosiny maji stejnou mohutnost (stejny pocet prvku). Forrnalne nato, relace "miti stejnou rnohutnost" se definuje pro.ve takto, tj, pornoci existence vzijemn~ jednoznacnehc zobrazeni,

Kapitola 2

Aplikace uloh 0 cest ach

V tela kapitole uvadimc pfiklady uloh a cestach. Tento soubor pffkladu neni ani uplny ani reprszentativni. Jc mincn jako inspirace pfi reseni vlastnich uloh,

2.1 Druhy modelu auloh

Pojern cesty v grafu je veliee pfirozeny a rna dobry smysl ve vetsine realnych situaci, ktore lze popsat grafem. Take naopak, pOll1eme siroky okruh 0.10h z nejruznejsich oblasti lze s vyhodou pi'ev~st na ulohu najit cestu (pop? sled) s vhodnymi vlastnostmi ve vhodne definovanem grafu.

Pro nektcrc prakticke ulohy se tvar grafu i vlastnosti, ktere rna mit hledana cesta, samy nabizeji, Typickym pfikladem je hIed ani nejkratsi, casovl'! neJmene mirocne, nejlevnejsf neho vjibec jakekoli cesty v silnicni siti spojujici dye dana. mesta.

V fade. pffklarl.l"l je v~ak souvislost puvodnlho praktickeho problema s cestami v grafu mene zfejma.. CHern teto kapitoly je ukaza], na nekolika prikladcch, jak he od puvodniho problema dospst ke grafove {]Ioze.

Pies znacnou ruznorodost uloh, ktere vedou na hledani cest, lze najit typy 610h, jejich~ grafov y model j e zalozen na podobnych princi pscb.

1. Hledani posloupnosti operaci (akci], ktcrc vcdou k riejakemu cili. Jsou uZlvany v podstate ova zpusoby modelovani techto problcnni:

(a) Vrcholy odpovidaji scavfnn nejakeho procesu, hrany odpovidaji zmenam stavu, popf. operacim, akeim, ktere k temto zmenam vedou. Ohodnoceni bran mlize vyjadfovat.- namahu (naklady, cas, spotrebovanou energii) potiebnou k provedeni zrneny stavu.

(b) Vreholy odpovidaji operacim, akcim a hrany vyjadfuji moznost bezprosHednf navaznosti akci.

2. Casove vypocty tykajid se paralelne probihajieich operaci (sitove grafy).

3. Hledani statickych konfiguraci, ktere lze definovat pomoci cest v grafu.

JI

_ •• _ ~ .~ ~ ,_ - I ~ _,_,_,~.",

38

Kapitola 2. Aplika.ce Mob 0 cestacb

Graf()VI~ wohy,o jejichz aplikace nam zde pujde, se lisf podle toho, zda chceme pouze zjistit , zda nejaka UakAkoli) cesta existuje, nebo nalezt nejakou eestu, nebo zjistit delku nl:1jkratsl (popt. nejuelsi:) cesty, nebo nejkratsi (popt. nejdeJSi) cestu najit, a to vsechno bud" jen mezi dvema danyrni vreholy, nebo z daneho vrcholu do vsech ostatnich vrcholu, nebo mezi vserni dvojicemi vrr:holu grafu. J.i.esen.im techt.o ii\oh ~e budeme zabyvat. v kapitol:kh3 a 6.

Aplikace nekterych pr'ibuznych uloh lze najit v kapitolach 7,10 a 12. Poznarnenejme, ze pro reseni grafovych 6.1oh neni vzdy nntne pnslu.§nY graf cxplicite sestrnjit , zapsat nebo nakreslit. V nekterych pr:ipadeeh je naopak vhodm"3jsi pouzft pouze myslenky a metody prislusneho grafoveho algoritmu a vlastni i'esenl se ml·de cdehravat v feci (a datove strukture) pllvodnlho praktickcho problemu. Plati to zejmena 0 ulohach tykajidch se cest, kde mnohdy ani nemusirne cely graf pfedern znat, 0 jeho vrcholech a hrauach 5e muzeme dovldat teprve az v prubehu i'eseni.

2.2 Zrneny stavu a posloupnosti operaci

2.2,1 Odmerovani vody (hlavolam), Jste na bfehu jczera, mate k dispozici tElitrovoua petilitrovou nadobu a vasirn ukolem je nahrat do veU\1 nadoby pi'esne ctyri Ii try vody DaHl pomocne nadoby nematc,

'Tuto ulohu lze pfevesl na hled:ini cesty ve specialnim grafu timto zpusobem:

Nejprve si uvedomme, Ze dild operace rna. smysl provadet pouze tak, aby se nekted. z nadob zcela naplnlla nebo zcela vypra.zdnila. Jinak totiz nalze 0 prelitem obsahu vody vubec nie tvrdit. Z toho plyne, ze v kazdem stadiu pl'elevini vody hude v kaid& nadobe celociselny pocet lltru vody. To znarnena, ze nas "preIevaci system" se muze nachazet vidy pouze v jednom ze 24 moznycll sLaw charakt.erizovanYch pocty litru vody v jednotlivych nadobieh. Tyto stavy budou vrcholy na..~eho grafu. Buderne le osnacovat usporManymi dvojicemi (i,j), kde i je mnozstvl vody v petilitrove nadobe a j mnoz:;tvi vody v tfHitrove nadobe, Hrany grafu budou vyjadfovat muznost ptirneho prechodu z jednoho stavu do druheho. Z vrcholu (i,j) povede hrana do vreholu (k,l), jest!iie stay (k, I) muzeme obddet ze stavu (i, j) naplnsnirn nebo vyprazdnenim nekten~ nadoby nsbo pfelitimco nejvet.siho mnoistvi z jsdne nidoby do druhe \tj. viidy se lIlUS! nektera nadoba vyprazdnit nebo zeela naplnit).

3

2

1

o

u

1

2

4

;}

3

Ohrazek 2.1: Graf k uloze 0 pfclcvani vody a. jedno : moznych i'clieni.

2.2. Zmeny stavu a. posloupnosti apemd .

39

Je zrejme, ze do nskterych vrcholu nevede z.idmi hrana, Jsou to ty vrcholy (tj. stavy), kdy ani jedna z nadob neni plna ani prazdna, Tyto vrcholy (stavy) nejsou dosazitelne z zAdneho jilleijo stavu, muzeme je tedy vypustit, aniz by to melo vliv na feBeni l"ilohy. Takto ziskaay graf je nakrcslen no. obr. 2.1

Puvodni ulohu 0 pteLevanl vody jsrne tak prevedli no. ulohu 0 nalezeni (jakekoli, ale radeji nejkratsl) cesty z vrcholu (0,0) do vrcholu (4,0), a to v nasledujicim smyslu: Kazdemu pfelevani odpovida (a to dokonce jednoznacne) nejakj sled. Cesta v grafu pak odpovida ,.,rozumnemu" pfelevani, v nemz. se Z<:1dny stay neopakuje.

2.2.2 Cvicenf; Nasledujici ulohy i'este pomod grafovehc modelu: najdete vhodny graf, zformulujte grafovou ulohu a promyslete, jak z resent grafove ulohy ziskate L'escni puvodniho problemu.

L Pomoci grafu na obr. 2.1 najdete uejryehlejsi zpusob (Jrelevimi, tj. s nejmensim poctem jednotlivych pfelrti.

2. Pokuste se najit -zpusob pl'elevani takovy, abyste co nejrnenc vody vylevali zpet do jezera, Jak bude vypadat pi'lslusny (mozrni ohoduoceny) graf a jakou 1110111l 0 cestach bude tfeba resit?

3. PH nekterych prelevacicb operacich je t.l'eba zvysemi pozornost. Jsou to .ty operace, kde se jedna nadoba zcela naplni, ale drubi se tim nevyprazdni, Najdetezpusob pfelevani, ktery rna nejmensi pocet takovychto "rizikovych" pl'e1itL

4. Je mozno odmefib 5 litru vody pomod ctyflitrovea seslilitrovc nadoby, jestliZe opet nemate dalst pornocne nadoby?

2.2.3 Hlsdaniv jizdniID radu. Rcsmc nasledujici ulohu "ze .zivota": Najop.te v jizdnim faclu vlakove, autobusove ci kombinovane spojeni z mista A do mista 8. Kdy nejpozdeji musime odjet z rnista A, abychom byli v pfedern danern okamsiku v millte B? Kdy ncjdfive mfizeme byt v miste B> jsme-li t.ed'v miste XI

Tyto otazky rnl'lzeme refiit v nasledujicirn "casoprostotovem" grafu, ve kt.er6m se pro jednoduchost ornezime na zeleznicL

Sestrojme sit, ktera rna jeden vrchol pro kaidy "za,jimavy bod v casoprostoru", tj. pro kazdc nidraii a kaidy okamzik pi'lje7.du i'.i cdjezdu vlaku na tomto nadrazi. Na obr .. 2.2 je pfiklad cash takove site. Vrcholy, here pfedstavuji totez nidrnzi v n'iznych okaiusicieh, jsou nakresleny vidy na vodorovne pfimce.

Vgrafl1 jsou dva druhy hran: Hrany, ktere vyjadEuji rnoznost cekanf ve stanlci (kresleny vodorovne), a hrany, ktere vyjadfuji mosncst jizdy vlakem (kresleny sikmo). Uvedene ulohy 0 vlakovem spojeni pak pfirozenym zp1isobem odpovidaji {llom.m 0 cestach v grafn. Jiny grafovy model viz 2.2.5.

Je samozlejme, ze nakreslit gnu eeie zelezuicll.l site se vsemi vlaky by bylo obtiine. Najit nejak6 spojeni v jlzdnim l'adu je daleko snfl.:.'rSl. Uvcdomte si vsak, Ze i kdyz hledate pfimo v jizdnim fMu a za:po.menet.e na teorii grafU, pokud postupujete ph hledani eystematicky, lze vas postup pfi trose dobre yule pokladat

. __ ..... - .. ~. ,~, ~ , - ... ~- ....... --- ..... --~ ..... _---,

40

KapitoJa 2. AplikacB 111(Jh u cesrach

za hledani cesty v grafu, Pfitom vet~inou nektere trasy a priori vylucujctc, coi je dana vasimi zemepisnyrai znalostrni. L7.9 tedy tvrdit, i.e hledani v jizdnim r<i.du je vlastne hledani cest ve specialnim orientovanern grafu a i.e jizdni i'J1[i je vlastue jakymsi formalizovanym Clselnym zadanim tohoto grafu.

Nova Bystrice

Jiudf. Hradec

Hor. Cerekev

Ohratafl

Tabor

Veseli n. Luz,

11.UO

1:2.00

14.00

15.00

16.00 i'.as

13.00

Obrazek 2.2: COst grafu k hledani v jizd.nim Tarlu.

Dodejme, ze pec-itacave prograrny, ktere hledaji spojeni v jizdnim i!i.du, byvaji ve BVe podstate zaloseny no. graiove teoretiekych modelech.

2.2.4 Cviceni, Pi'edstavte ai, ie je nedele 11 hadin dopolcdne, jste nil. 7.elezniclll stanici Nova Bystflcc a mate se eo nejrychleji dostat vlakem do Sluknova. Kdy nejdfive tam muzete bjt a kudy pojedete?

Pouaijte klasickj "papirovj" jizdni rad, nikoli poCi~acovy program, ktery najde (nejake) spojeni za vas. Illedejte libovolnyrn zpusobem, bez 'urCite systematicnosti vsak mate rnalou nadeji na uspikh aziUnou zaruku, ie na.l.ezene spojeni je opravdu nejrychlejsi. Srovnejte svou metodu s metodam.i, uvcdenymi v kapitolach 3 a 6.

2.2.5 Jiny pfistup k hledani v jizdnim radu. K (doze 0 hledani v jizdnim radu lze pflstoupit take jinak: Vrcholy gram odpovidaji vlakum a hrany vyjadfuji moinost pi'estupovii:ni. Dale je treba pfidat dva vrcholy, jeden za vychozi a jeden za cilovou stanici, a hranami vyznacit., kterymi vlaky je pro nas pfijatelne odjet z vychozi stanice a kterymi prijet do cilove stanice (kdy nejdfive chcerne adjizdet a kdy nejpozdeji chceme byt v cili).

Tento druhy graf je tedy z<1.visly na misteeh a easech adkud, karn a kdy chceme cestovat. Jsou-li tato mista a easy fixovany, jsou oba pfistupy rovnocenne: obema lze dosahnout tehoz. Prvni pfistup vsak dovoluje snadneji rnenit vychozia cllovou stanici j f:as, kdy chceme csstu zahajit Ci ukoncit. Krome toho je graf na obr.2.2 na.zornejilif a jeho konstrukce podle jizdniho fadu je jednodussi.

Porovnejte oba pffstupy na cvicenich 2_2.4 a 2.2.6. DalSi rnodely zalozene na podobnych principech [sou uvedcny v 8.2.9, str. 138.

2.3. Para.1e1ne pwbfl18.jfcf CilJnoS.ti

41

I· I

2.2.6 Cviceni. Jak by bylo ti'cba upravit grafovti modely v 2.2.3 a 2.2.5, aby cesty v pfisillsnych grafech odpovfdaly pouze takovyrn spojcnim, ktera oy nebyla ohrosena pulhodinovym zpozdcnim vlaku?

2.2.7 Cvicenf, Nale?".nete alespofi dva, zp{\soby, jak popsat grafem silnicni sie mesta s jednosmernymi ulicemi,Z<lkazy odboceni a pfik<izanymi srnery jizdy tak, aby v takto vzniklem grafu bylo mesne vyhledavat jizdni trasy pro osobni autornobil, lctere respektuji zakazy odboceni, piikizanc smery jIzdy a jednosmernost ulic,

Craf by mel b.yt udelan tak, aby jakykoli (orientovany) sled v tomto grain odpovidal rnoznosti legalnf jizdy autornohiln.

Nakreslste graf zachycujici yam dobra znamo1.l, cast mesta a vysledek pi'cdloztc ke kontrole zainteresovanyrn kolegum. Chyby, ktere najdou, sc pokuste odstrauit.

2.2.8 Nakladnf par nik .. Mime n pNstavl! oCislovanych 1,2, .. , n a nakladni parnik. Pro kasdou dvojici pi'fstavu i, j zname naklady c(i,j) na plavbu z pfistavu i do pfistavu j. Dale 0 nskterych dvojicich pfistavu i, j vime, ZC z pfistavu ·i do pi'istavu j lze dopravit naklad a ze za jeho pi'cvezcni dostanerne zaplaceno d(i,j) peaez. Predpoldadamc, zc nas parnik rna svobodnou volbu, kam popluje a co poveze, Dale predpokladame, zc v !laS! cas~i oceanu neoperuji zadne konkureneni lode, Here by lias rnohly pripravit 0 vyhlednuty vYdil:lek. Nasirn iikolem je dostat parnik z pffstavu x do pfistavu y financne co nejvYhodnp.jsfm zpnsobem.

Ulohu lze fe~it takto: Nejprve polnsime d( i, j) = 0, jestJize z pfista vu i do pfistavu j neni co dovezt. Sestrojime uplny orientovany graf 0 n vrcholech VI, VZ, ... , "Un· Dclku hrany z vrcholu Vi do vrcholu Vj zvolme aU,j) = c(i, j) -"d(i, j) .. Delky hran tedy ruohou h.yt l zaporne. Nyni hledarne nejkratsi cestu 7; vrcholu v'" do vrcholn v1/. Jsou-li 7.asoby zboz.i, ktere rna. byt prevezeno, dostatecne velike, ma. dobry smysl take: uloha 0 nalezeni cyklu se za.pornou delkou Opakovane projlzdenf tohoto cyklu totii zajist! opakovane zisky,

2.2.9 Cvicenf, Problemy tykajir:f se 7;mime Rubikovy kostky lze take pte vest na hledani cest v ,grafu -, Zvazte skutecnou pousitclnost tohoto ptistupu.

2.3 Paralelne probfhajic.i cinnosti

2.3.1 Sireni poruch, Ptedpokladejme, ze marne nejake poruchovs zallzeni slo:'.ene z n navza.jem propojenych dHu. Spra.vna (inDost kazdeho dilu zavisl na spravne funkci nekterych jinych dHu. Predpokladejme, ze virnc 0 vscch tech to zavisiostech, Navic, zavisi-li funkce dilu 'i na Iunkci dilu i, zwime cast(,j, :i), po ktery nejvY.'le rrnize dil i pracovat po poruse dil u j. Ukolem je zjistit, 7.a jakou doh! I po pomss dfl u x prestane fungovat dil y. Dalsf {!lolly mohou byt: zjistit, zajak dlouho budou porouchany vsechny dily, zjistit, ktere dily se vubec porcuchaji vlivern poruchy dilu x, ktere dily se urCite porouchaji do 10 minut po peruse no. dilu :r (pak ti'cba pfijde opravaf) ..

Tyto ulohy lze resiL napfiklad takto.: Sestrojme graf, ktery lila. n vrcholu, kazdy z nich odpovida jetlnomu dilu naseho zafizeni, Ke kaidemu vztahn zavislosti dilu

42

Kepitot». 2. Aplikace iiloh 0 cesta.m

i na dilu j vytvorime v grafu orientovanou hranu z vrcholu Vi do vrcholn 11J. Tulo hranu ohodnotlme casem t(i,}), po ktery muze dfl j pracovat pe peruse dilu i.

Vznikne-li v nekLerem dile porucha, Siii se jej! vliv zpravidla nekolika amery soucasnC. Mame-li 7.jistit, sa jak dlouho po peruse na dile x prcstane fungovat dil y, musimc vzit v uvahu vsechny moine posloupnosti pHein a nasledku, ktere zaei· naji poruchou dilu x a konci POI'UChOll dilu y. Kazde takove posloupnosti odpovida v nasem grafu cesta zacinajici ve vrchoJu 'U" a koncici ve vrcholu 'uv' Delka cesty, tj. soucet casu, ktcrymi json ohodnoceny jeji many, odpovida casu, ktery muze nejvyse uplynout uiezi poruchou dflu x a ji vyvolanou poruchou dflu y. Takovych posloupnosti pHein a uaslcdku (a jim odpovidajidch cest) muze byt ovsem mnoho, pficemz kazda z nich shora omezuje dobu spnivn€ cinnosti dilu y po peruse na dilu z , Skutecmi doba fungovani dilu y po peruse na dilu x je tedy nejvyse rovna delce nejkratsi cesty z vrcholu v", do vrcholu Vy v nasem ohodnocenem grafu.

Ostatni uvedene otazky lze l'esit podobne: Posledni dfl prestane fungovat za dobu, ktcra odpovida rnaximu ze vsech dclek (tj. ca.<n't) nejkratsich cest do vsech ostatnich vrchohl. Mnoslna vsech dihj, ktere se porouchaji vlivcm poruchy na dilu x, odpovida mnofine vser:h vrcholu orientovane dostupnych z vreholu 'V",. K zodpovezeni poslednl otazky staCi znat mnosinu vsech vrcholu, do nkhZ delka (tj . .cas) nejkratsi cesty uepresahne 10 minut.

2.3.2 Sieove graCy. Marne za ukol uskutetnit nejaky slozit)' projekt, ktery se sklsda z mnoha dilcich cinnostf, napf. stavbu domu nebo tovamy, vyvoj a vyrobu nejakehu unikatnfho zafizeni nebo let tloveka na Mars. Ptedpokladejme, ze 0 kaide dilci Cinnosti pi'edem vime, jak dlouho bude trvat (nebo marne alespoii kvalifikovany odhad do by trvani}, a zname seznam cinnostf, ktere musi bYt ukonceny, aby tate cinnost rnohla zacH. Napr. nez zacneme stavet stfechu, musi byt hotovy obvodove zdi, nez zacneme stavet zdi, musi byt hotovy zaklady, Zajima nas, kdy nejpozdeji budeme rnuset jednotlive Cinnosti zahajovat, abychom neprodlousili dobu trvan] celeho projektu, a jakou tedy marne u jednotlivych cinnosti casovou rezorvu.

Popsanou situaci rnMeme znazornit tzv. s(t'o'Uym .grofem dverna zpusoby: cinnosti jsou znazorneny bud' vrcholy, nebo hranami.

V sitovem grafu S ohodnocenymi vrchoty jsou tinnosti znazorneny vrcholy grafu, k<0.dY vrchol je ohodnoccn dobou trVaH! cinnosti. Hrany grafu vyjadruji navaznosti: z vrcholu i do vrcholu j vede hrana, jest!ize ukonceni cinnosti i jc podminkou pro zahajenl cinnosti j. Viz pifklad no. obr. 2.3 uprostred.

V sitovem grafu S ohodnocenymi hranami [sou cinnosti znazomeny hranami grafu, kaidi luana je ohodnocena dobou trvan] ciunosti. Navaznosti cinnosti jsou vyjadreny uepfimo pres navazilosti bran ve vrcholech: jestlize dve many el, e2 na sebe navazuji, tj. plati-li Kv{et} = Pv(e2), pak cinnost odpovidajfci hrane el musi byt ukoncena pfed zahajenim cinnosti odpovidajici hraae e2' Casto ge stavti, ze k zajistent vsech posadovanych navaznosti je nutno pouzit fiktivni cinnosti s nulovou dobou trvani, viz napifklad carkovaml luana no. obr. 2.3 nahore.

V obou pfipadech je siCovy graf acyklicky (tj. neobsahuje cykly) , jinak by Cinnosti tvofici cyklus nebylo mozno viibeczahajit, K sitovemu grafu obvykle pfidavame

2.3. Parale111c probihaJici cinnos[i

(ale neni to nutne) dYe pomyslne Cinnosti, jednn, kter:i predchazf vsem ostatnim, a druhou, ktera nasleduje za vsemi ostatnimi Cinnostmi.

Si£ovy graf 5 ohodnocenymi hranami je z matematickehn hlediska elegantnejsi.

Si£ovy graf S ohodnocenymi vrcholy je naproti tomu snaze pochopitelny a dokaze jej sestavl:t i pracovnik bez speclalniho lreninbl. Oba druhy gram vsak umosfiuji vyjadfit zhruba totez a he je suadno a zcela mechanickym zpusobem vz<ijemne prevadeL jeden na druhy, Metody t.ikhto pfevodf jsou patrne z obr. 2.3, na ktereui jsou nakresleny ti'i nizne sft:ove grafy popisujld tyz proces stavby dornu.

. ~ il"!.stal~ni

zasUe~enl ,,/ p'rovozni " " prp.dmet,Y

/ zaiizeni I "<,

F'o __ -;-~ ~ / ~K

stavebni K>---"h.·ubii. --........ I~. kolaudace

povoleni stavba --........ I ~

·i'emesla.~ I ~okow~oyad

. ~"d'// prace

43

~-~-~

/ ~eni za.i'izeni '" prf'dl1lety"

",. "

/ '"

~--+C .. < ",'" ~

stavebru hruba " ~>

povoleni stavba -, '" / dace

\. '" /

\~"------~

femes!a. -d()konC.-

price

Obrazek 2.3: Pi'iklady sft:ov}'ch grafU popisujici tyz proces stavby domu. Carkovane hrany predstavuj! fiktivni l:innosti.

Pro sieove grafy S ohodnccenymi hranami uvedeme nekoHk duleiitych pcjmii.

Pro jednoduchost predpokladejrne, i.e v grafu existuji vrcholy P a K (pocatek a konec) takove, i.e vsechny vrcholy grafu jsou oricntovane dostupue z P a ze vsech vrcholn je orientovane dostupny vrchol K. Oznacme

u.(e) == doba trvani cinnosti e,

T.(v) = nejdflvejsi cas, kdy mohou byt dokonceny vscchny cinnost, z E-(v), a kdy tedy mohou bj",t zahajcny CillllOSti, ktere ve vrcholu v zadinajl,

T2(v) = nejpozdcjsi cas, kdy jc tfcba zahajit cinnosti z E+(v), aby hylo mozno dodrZet termin T1(K) dokonceni eeleho projektn.

44

Kapitoia 2. Ap1ikace ulob 0 cestach

Cas se med od okamziku Tl (P) Jednoduchou nvahou lze zjist.it, ze

(2.1)

a ze hodnota Tl (v) je rovna delce nojdelsl cesty z vrcholu P do vrcholu v. Podobne

(2.2)

a doba T2(K) - T2(V) je dEHkou nejdelsf testy z v do J(. [( vypoct,u hodnot Tl lze pouzit algoritmy popsane v 6.4.5, str. 99,. hodnoty Tzsc pocitaji podobns, ale "prot.i

smeru hran" po6naje z vrcholu K.

T7.v. n::zerila cinnllsti R(e) = T2(Kv(e)) - Tt(Pv{e)) - ale) vyjadfuje ne.ivy~si

pripustne zdr:~eni Clnnosti e, pfi kterp.m jeste lze dcdrzet termin Tl (J<) dokonceni celeho projektu (predpokl:ida se, ze ostatni cinnosti budou bez zdrzen!). CinJ10sti

s nulovou rezervou se nazyvaji kriticke.

Lze ukazat , ze kriticke cinnosti se v siiovem grafu nevyskytuji osamocene. KaZda

kriticka einnost leil na tzv. kritir:ki ceste, C02 j8 orientovana cesta z P do K, jejif vsechny hrany (tj_ cinnusti) jsou kriticke. Kritickych cest muie byt v grafu nekolik, kaida 7. nich ic za.roven uejdclsi easton Z P- do J(.

Krttickytn Cinl10stem se venuje zvysemi. {Joz;ornost, nebof [akekoli jejich prodlouseni se projevi prodlollzenim doby trvani celeho projektu. Pri tizent sloZitych pTo.iektu se vypocet sifoveho grafu (tj. vypoct.y termimi T1, T'J a rezerv) pravidelne opakuje s udaJ!, ktHre [sou akt.ualizQvany podle skutecneho pruhiihu Cinnosti. Tato metoda. i'izeni projektli se IHl.ZY-Va. me.toda kriticki ce.~ty nebo take metoda CPM, col. je zkratka Z anglickeho "Critical Path Method".

Dodejme, ;r.H speciahste na si~ovegrafy rozezrtavaj! i o.alsi druhy rezerv a i.e

pojem kriticke cesty a rezervy lze zavest i pro sifoV() grafy S ohodnocenymi vrcholy.

2.4 Hledani st.atickych konfiguraci

2.4.1 Nejspolehlivejsi spojeni. Neche ve s.delovad siti je spolehlivost prime linky mezi misty i a j dana pravdepodobnosti p(i,j), ze. linka funguje. Ptedpckhidejme, ie poruchy na jednotlivych linkach JSO\l navzajern nezavisle. Pak spolehlivost urCitebo spojeni mezi misty z , y je rovna soudinu pravdepodobnosti p(i,j) vsech dilCich linek tvofldch toto spojeni. Oloha zni: najit nejspoLehlivejsi spojeni mezi

danymi dvi!!rna misty x, y.

Sestrojme neorientovany graf, jehoz vreholy jsou uzly spojovaci site a jehoz

hranami jsou linky. Hrany jsou onodnoceny delkarni a( i, j) == - log p( i, j) 2: o. Nejspolehlivejsi spojeni pale odpovida nejkratst <;esLe z vrcholu x do vrcholu y. PHslusne algoritmy jsou uvcdeny v kapitolc 6, str. 85 . .lillY zplisob resent teto ulohy bee pouzit.i logaritmf je uvedcn v 7.2.6, str. 115.

2.4.2 Prohlem batohu. Lupic rna batob, do ktereho muzp. dat nejvyse K kiIogramu kofisti a ani 0 gram vice. Jeho lup se sklada z n predmetu 0 hmotnosti

2.4. Hledani staiickjdl konfigurad

45

WI, WZ, ... ,Wn kilogramu a cenach CJ, C~1 ... ,Cn Ke. Snahou lupice je odnest v batohu co nejdrazSi kofist, ale nesmi batch pi'eti~i~.

Tato uloha rna mnoho pQ.C~ivejskh pudob, zejrnena ph sestavovani rozvrhu a pfi planovani paralelne probihajicich procesfi , ktere spottsbovavajl nejaky material, energii nebo praci, Vidy se snazirne co nejuiitecneji vytizit dany matcrialovy, anergeticky nebo lidsky zdroj,

Ukazeme metodu, jak lze feilit problem batohu pomoci hledani nejdelsi cesty ve speeialnim grafu. Ovsem 'pozor: neni to met o da nej vho dnej 31. U vad! me ji POll ze jako pffklad melle zrejmeho pousiti uloh 0 cestach,

Vyuzijeme Iakt, ie i'eselll problemu batohu si lze predstavit jako rozhodovaci proces, kdy 0 jednctlivych predmetech postupns rozhodujeme, zda jc do batohu zabalime, nebo ne, Vrcholy odpovidaji stavurn rozhodovaciho procesu a hrany predstavuji mozna rozhodnuti 0 ur6tem predmetu.

Na obr: 2.4 je pf(klad grafu pro problem batohu se ctyrrn.i predrnety 0 hmot.nostech 7, 6, 4 a 3 kg a cenach po fade 2, 3, 4 a 5 Kc, kapacita batohu je 15 kg.

14

naplneni batohu

(4,14)

13

12

11

10

8

7

6

5

4

2

1

o

pfedmet

Wi =7 (;1 = 2

W3 4 (;3 = 4

Obrazek 2.4: Gnu k i'e1i!;ni problema batohu,

46

Kapito1a.2. Aplikace u1011 0 cest,kb

Hrany kreslene sikmo odpovidaji rozhodnutl "zabalit", vodorovne hrany znamenaji "nezabalit". Vrcholy jsou oznaccny soufaduicemi (i,j), pric.emz i vyjadfuje, o kolika prvych predmetcch je v tmnto stavu ji1. rezhodnuto, a druha soufadnice vyjadruje vahu zabalenych predm(.:\tu. Sikme hrany jsou ohodnoceny cenami zabalenych pi'edmetlt, vodorovne hrany j80U ohodnoceny nulami. Orientovam~ ccsty z vrcholu (0,0) do vrcholu t vzajemne jednosnacne odpovidaji pripustnym vyberum piedmetfi do batohu. Pfitom delka cesty je rovna souctucell zabalenych pfedrnetu.

V nasem pfikladc je optimalnim fe~errlm vyber pi'edmet,'! 0 hmotnosti 6,4 a.3 kg s eelkovou cenou 12 Kc. Nejvet.si hmotnost, kterou je moano du batohu uloiit, je 14 kg, a to predmet'y 0 hrnotnost.i 7, 4 a 3 kg, jej ieh ceria vsak je pouze 11 Kt. Vsimneme si, ie batch uelze zcela naplnit a ze 13 kg uakladu Ize naluzil dvema ruznymi zpusoby, ovsem s podstatne rthnou ccnou (5 a. 12 Kc).

Znovu pfiporneiune, ie pro resen! problemu batohu existujc fa<ia Ispsich algaritrrui. Z nieh se v tete knize zrniiuijeme 0 backtrackingu v 11.2 a 0 metode viH.vi

H. mezi v 11.3, str. 191.

2.4.3 Optimrunl unllsteni poZlirni zbrojnice- Mejrnc siinIlni Sit nejakcho mesta Nasirn ukolem je navrhnout umisteni pozirni zbrojnice talc, aby jeji vzdalenost od nejvzriilenej1iiho bodu mesta byla co nejmensf. Silnicnt sit znfu..ornime grafem talc, aby silnicc odpovlrl.aly hranama kfizovatky vrcholum, Navic umistime vrcholy na vsechna mista, kde he pi'edpokhidat protipozarni zeisah, a take na vsechna mista, karn by byio mozno postavit pozarni zbrojnkL .1sou-li i, j dva vrcholy, oZ1lacmc u(i, j) jejich vsdalenost mercnou dobou jizdy pozarnihu auta. Hledame vrchol e, ktory m S, nejmensi b.odnot u ucelove funkce max { u( c, j) I j E V (G)}.

Takovy vrchol se nazY-V.i centrum grafu·

Ponekud odlisnou ulohou je hledani nejvhodnejsfho mista pm centr6lni sklad, ze

ktereho rna byt z.3.soboyano k spot.febitelu, ktefl denne odebiraji mnozstvl ql,· .... , qk nejakeho ebozi. V takovern pripade hledame vrchol c, pro ktery je minimalni hodnota

ucelove funkee L u(c, i) . qi..

Kapitola 3

Prohlcdavani grafu

Zakladnim ucdcm prohledavaul grafU je zjisfovani dostupnosti,' Lj. zji~tovani, do ktcrych vrcholu grafu vedou cesty z daneho vychozfho vrchulu, pripacine t",ke nalezeni tikhto cest, tj. zji.'iteni, kterymi hranami a vrcholy prochazeji. Dalsim cflem prohledavan] ca.,<;t.o je vykonani nej ake akce v kazdem dostupnern vrchol u, popf. v kaide dostupne hrane.

Je-li graf prehledns nakreslen a neni-li pi'His rozsahly, hrave dakM.ete re~it vyS€ uvedene ulohy "pouhi'm pohledem". Je-li vsak graf veliky nebo je-li nepfehledne nakreslen, je trsba pouZit nejaky systernaticky postup, jinak Be snadno dopustimc chyby. Systematicky postup prohledavani je samozfejmosti pri pouziti poclLace. A u graHl, ktere jsou zadany nepfirno pomoci procedur pro generovanl hrau a vrcholu (viz 1.9.6), Ic systematlcke prohledavani za.kladnfrn zpusobcm, jak 5e ° grafu viIbec neco doveuec.

Uvedeme tfi zpusoby prohledavani. Prvy z nich (znaekovAni vrcholu) je znacnc obecny a nesmirne jednoduchy, Dalsi dva ZpllsOhy, hledani do hloubky a hledani do sifky, !zc pokladat za jeho speciilni pHpady. Vsschny tyto postupy prohledavani popisujerne pouze ve verzi pro orientovane casty. Modifikace pro hledani neorientovaaychcest jsou snadne a jsou pfenechany etemiri jake cviceni,

47

3.1 Znackovrinf vrcholn

3.1.1 ZnaCkovlini vr chulu, Vrchohirn grafu pfifazujemc znacky. Ma-l; vrchol znaCku, znarneua to, ze do nej vede w?jaka cesta z daneho vychoziho vrcholu r Vlastni algorit.mus je velmi prosty:

1. [Inicializace.] Oznadkujerne vrchol r, ostatni vrcholy jsou beze znacek.

2. [VlIblr hrany.J Vybeteme libovolnou hranu e, jejiz po(:at.p-cni vrchol rna znacku a koncovy vrchol nikoli; pokracujeme podle kroku 3. Jestlize takova hrana neexistuje, vypocet koncl.

48 Kapitol<13 . .Pwhledavam graftl

3. lZnaCkovanf] O"bu<J.ckujeme vrchol Kv(e) a pokracujeme ve vypoctu podle kroku 2.

3.1 .. 2 veta. V ypocet. algoritmu 3.1.1 skonci nejpuzciej i po I V (G) 1-1 opakovartich kroku 2 a 3. Po ukonceni vypoctu bndou oznaCkoviny praNe ty vreholy, do nichz

existuje orientovana cesta 7. vrcholu r.

DI'JI<AZ; PH ka:Z:dem vykonani kroku 3 je oznackovan dosud neozna.CkovanY vrchol. Kroky 2 a 3 se tedy mchou opakovat nejvyse (IV (G) I - I)-bit.

Indukci dobizeme, ie do kaideho oznaekovaneho vrcholu vede orientovana costa z vreholu r cakova, :i.e prochazi pouze pres jl:?: ozneckovaae vrcholy, Po provedcni mlcialisace to trivial.l1e plati: o7.naCkovan je pouze slim vrehol 7'.

Precipokladejrne, ze toto tvrzeni plat! pfed jJrovedenim kroku 3 a ze v kroku 2 by1a vybraua nrana e vedouci z vrcholu x do vrcholu y. Vrchol x rna znatku, podle indukcniho pi·edpokladu tedy existnje cesta C z vrcholu r do x. Tato cesta navic prochasi pouze pres oznackovane vrcholy, ncobsahuje tedy ani hranu e, ani: vrchol y. Diky tomu mtlZeme cestu C prodlouzit {1 hranu e a vrchol y, Cirnz zisbiffie C8StU z r do y, ktcra take vede pres oznackovane vrcholy. Tvrzenf t.edy platl i po oznackovani

vrcholu u-

Obracenou implikaci dolci.l:eme sporem: Kdyby nebyl po skonceni vypoctu

oZTIaekoviLD nektery vrchol, do nehoz vede cesta z vrcholu T", existovala by na teto ceste hrana, jcjiz pocatecni vrchol by byl oznac.kovan, ale koneovj nikoli (vrchol 7· totiz DZDackov;in je). To by vsak byl spor s krokem 2 algoritmn, nebof vypocet by jeste v takoveto situaci nemel bYt ukoncerl. 0

3.L3 Praktic.ke provedenl znackovad procedury. Asi nejjednodussl je opakovane (eyklicky) pruchazet seznamem vsech hran, pro kazdoll hranu testovat,zdo. ji Ize pOlliit k oznackova.ni dalsiho vrcholu (krok 2 a.lgoritmu 3.1.1) a pfipadne pfiuNit znar.k1). Jestlize pri celem jednom pruchodu seznamem bran nebyl oznackovan zadny dalsi vrchol, vypocet konei. V opacnem piipil.de pokracujerne tim, i.e znovu

projderne seznam hran,

Ponekud dl'Imyslnejsl postupy [sou zalO"leny na uddovani ssznarnu vrchohi,

kterym byla pfidelena znacka a here v tomto seznamu cekaji na zpracovani. Toto zpracoviLDicspociva v postupnem prozkoumani vsech hran, ktere z vrcholu vyehazeji, a v evp.ntuelnim oznaekovii.nf dalsich vrcholu. Nove oznaekovane vrcholy pridava.me do seznamu, vrcholy, ktere [sou zcela zpracov§.ny (nebo s jejic.bz apracovanim prave zaciname) ze seznamu oclsLranujeme. V.y"pocet konci, neni-Ii co zpracovavat , tj. je-li seznam prizdnY. Dulezite varianty t:.ohoto postupu nvedeme v 3.2 a 3.3.

3.1.4 Konstrukce cest. Casto je tfeba nejen zjistit existenci cssty, ale navic tuto CP ... stu explicite sestrojit. Pro tento 6.cellze zuackovacl algoritrnus 3.1.1 snadno

upravit:

Vi.dy ihned po oznackovani vrcholu Kv(e) pl'ifadime navfc tomuto vrcholu

hodnosu OOI<UD(Kv(e)) := e, kde e je hrana vybrana v kroku 2.

3.2. Prohledaviinf gmfu do silky

49

Pro takto doplneoy algoritmus 3.1.1 samozi'cjmc stale plati v(ha 3.1.2, ale navic plati:

je-ll oznackovan vrchol v f 'T', pak hodnota ODKUD(V) je jmenem poslcdni hTi.IDY v (oejakc) ceste z vrcholu r do vrcholu 'U.

Cestu do oenackovaneho vrcholu v ::J. r lze po skonccni znackovaclho algoritmu snadno nale--,t;l zpeLoym postupem pomoci Hadnot ODKUD: Hodnota ODKUD(V) je posledni hranou v hledane ceste, Oznadme w pocatecnl vrchol hrany ODKUD(V). Je-li w =F- 'T', pak hodnota ODlcun(w) je predposledni hranon v cest? z vrcholn 'T' 00 vrcholu w atd.

Ozuackcvane vrcholy a hrany obsil.Zene v hodnotach OUKUU navic tvott korenovy strom s kofcncm T (viz 1.7.1, str. 21).

3.1.5 Hled:inf casty mezi danymi vrcholy r a s, Zajima-]] nas pouze cesta z daneho vrcholu T do daneho vrcholu s, mazema samozfejme ukoncit vypocet znackoveciho algoritmu ihned po oznackovanl vrcholu s,

3.1.6 Cvicenf. Upravte ZOH.CkOVliCi proceduru ::U.l pro hledani neorient.ovanych cest. Preformulujte prislusnym zpfrsobem viHu 3.1.2 a. jejf dukaz.

3.1_7 C v-iceui. J cdnod uchou upravcu algori tmu 3 .1.11zc ziskat algor itmus, ktery najoe v grafu kruznici pnive tehdy, kdyz v grafu n~jaka: existuje, Navrhnete tuto upravu a doklrlt.e jeji spravnost,

3.2 Prohledavani grafu do sitky

ProbleJavani grafu do sii'ky lzc struene cbarakterizovat takto: nejprve oZllackujeme vrcho] 'T', pal vsechny jeho nasledniky, pak vsecilllY dosud necenackovane naslednfky Mehto nisledniko atd, Lze si to predstavovat. i tak, 7.« graf sOlIf.a~ne prozkourmiva velky pocet pruzkumnfku, kterl "zaplavuji" postupns "po hladinach" dostupnou east grafu,

N a toto jednoduche metoda je pozoruhodne, ze vede k nalezeni nejkratsich cest, tj. cest s nejmensim poctem hran.

3.2.1 Algoritmus hledani do sifky. VSTUP: Oricntovany graf G a jeho vrchol T,

UKOL; Najit YSechllY vrcholy 1.', do nichz vedc oricntovana ceste z vrcholu r, do kazdfho Z nich najit cestu 0 nejmensim poctu hran a zjistlt delku Vzo(v) teto nejkratsf ce.~ty, tj. vzdalenost vrcholu v od vrchol u r,

POMOCNF; PROME;NNE: Vllechny vreholy, do nichz buda nalezena cesta, budou oznai'.kovany a budou jim pj'ira7.eny hodnoty OOKUD a Vzr» Dale pouzijerne seznam FRONTA, ktery bude obsahovat ty vrcholy, ktere jiz byly oznackovany, ale z niche jsme jeste nezkoumall moznosti dalsiho postupu.

50 Kapitola J. Probledavruli grafu

ALGURITMUS:

1. [In:iciali;;ac.e.] Oznackujeme vrchol 'T, ostatni vrcholy jsou beze znacek, Polozme Yzu(r) := 0, scsnam FRONTA nechf obsahuje jen vrchol r.

2. [Test ukonEeni.] Je-Ii seznam FRONTA prizdny, vypocet konei,

3. [Volba vf"cholu.] Ze za.eatku seznarnu FnONTA odebererne vrchol a oznar:ime jej fJ.

4. [Postup do Sifky 2 v"["cholu v.l Pro kazdou hranu e E Et (v) oznacime w ;= := KV(e) ajestlize w dosud nama znaeku, PIovedeme tyto opcrace: Ozna.ekujeme vrchol w; ODKun(w) := e; Vzn(w) ;= VZJJ(v) + 1; vrchol w pfipfseme na koneo aeznarnu FRONTA. Po zpracovani vscch hran 7. mnoziny E+(v) po-

kracujeme podlc kroku 2.

CASOVE NAROKY: .le-Ii graf zadan ve tvaru sesnamu vrchohi a seznarmi vystupnich okoli vsech vrcholu (viz 1.9.2), probehne bled ani VCa8e O(m + n),

POZNA.MKA: Pro hledani dosirky je podstatne, fie ze seznamu FRONTA odebirsrne vzdy ten prvek (zde vrchol}, ktery [e v nero nejdele. Takova datova struktura byvi

OZflRCQv<i.na terminarn Jro1~ta.

3.2.2 Prfklad. Pouzijeme ulgoritmus hledani do sii'ky na graf G (viz ohr. 3.1) 5 mnosinou vrcholu v(a) = {I, 2, ... .i i} as mnosinou hran E(G) danou seznamem (1,2), (1,3), (1,5), (2,3), (2,8), (3,2), (3,7), (4,1), (5,4), (5,9), (6,5), (7,10), (8,7), (8,9), (10,8), (10, 11). Jake vychozi vrchol vezmeme vrchol 1. N a obr .. 3.1 jsou silne vytazeny hreny, ktere jsou po skoniieni algoritmu obsaieny v hodnot:i.ch ODKUD a ktp.n~ vytvaieji system nejkratsich cest do vsech dostupnych vrcholu. Vrcholy byly znaCkov:-illy v poradi 1; 2, 3, 5; 8, 7,. 4, 9; 10; 11. Strednikem [sou zde oddeleny mnosiny vreh.ulu, kteryrn byla vypoctena stejna vzdalenosf od vrcnolu 1. Vrchol 6 nebyl oznackova.n, ncbof neni orientovane dostupny z vrcholu L

Obrazek3.l: K pfikladu 3.2.2 hled<ini do ~i:tky.

3.2. PmhledavanI grafu do siiky

51

3.2.3 Lemma (prubeh hledanf do sirky). Hodnaty VZD vrcholu zafazovanych algoritmem 3.2.1 do seznamu FRONTA tvofi neklesajici posloupnost V ka.i dezn okarnaiku SF. hodnoty v..zo vrcholu obsazenych v seznarnu FRONTA lisf nejvyse o jednicku,

DUKAZ: Oznacrne M; mnosinu vsech vrcholn v, kterym algoritmuaprifadil hodnotu VZD(V) = i. Obe tvrzeni doktiz.erne indukci podle doby prace algoritmu.

Zi'ejrne M« = {r}. Krok 4 algoritmu je vykonan nejprve pro vrchol r a bezprostfedne pate seznam FRONTA absahuje mnofinu Ml. Zadny dalsi vrehol totiz hodnotu 1 llemuzc dostat, nebof pouze vrchol r rna. hodnotu O.

Dale je krok 4 vykonavan postupne pro vsechny vrcholy z mnosiny MJ, pi"icelIlz na konsc seznamu jsou zai'azovany vrcholy s hodnotou ~. Po zpracovani posledniho vrcholu z mnofiny Ml obsahuje seznam FRONTA mnozinu M2. Zadny dalsl vrchol totiz hodnotu 2 nemuze dostat, nebof pouze vrcholy z NIl rnaji hodnotn L

Obecne, behem zpr acovavani vrcholu z mnofiny M; obsahuje scznam FRONTA pouze vrcholy s hodnotami i a i + 1 a tesne. po zpracovani posledniho vrr.holu z mnoziny M, obsahuje seznarn FRONTi\ mnozinu Mj+l. 0

3.2.4 Veta. Algoritrnus 3.2.1 skonCi praci po koneenem poctn krokii. Po zastaveni jsou oznackovany prave ty vrcholy, do nich~ vede orientovana cesta z vrcholu T. Je-li oznackcvaa vrchol v :f:. 1·, pak OOKUD(V) je poslsdni hranou v nejkratsi ceste z vrcholu r do vrcholu v a Vzn(v) je delka (tj. pocet hran) teto ncjkratsi cesty.

DUKAZ: KaZd}' vrchol je ihned po oznackovan] zafazen do seznamu FRONTA, a kdy! je pozdeji odtud vyiiat, nemuze uz do nej byt znovu zafazen, ncbot uz Ill;). znacku. Proto kroky 2 ai 4 mohou byt provedeuy celkem nejvysc JV(G)I-krat, algoritmusse tedy sastavi.

To, i.e budou oznackovany prav€ ty vrcholy, do nichi vede z vrcholu 7· orientovana cesta, se dokazc podobne jako veta 3.1.2, str. 48.

ZbYva. dokazat, ze algoritmus spnivne vYP(){:tP. vzdalanostr. Je zfejrne, ze do kazdeho oznackovaneho vrcholu v vede nejaka. cesta 0 delce Vzo(v) a ze tate cesta je zakodovana v hodnotach ODKlJD. Ukazeme sporem, ze tato ccsta je nejkratsi: kdyby do l1ejakt~ho vrcholu 1J existovala cesta kratsi nei VZD(v), pak by ria t.eto ceste rnusela existovat hrana e z vrcholu z = Pvte) do vrcholu y = Kv(e) takova, ze YZD(X) + 1 < Vzo(y). Ph zpracovani vrcholu x v krokn 4 vrehol y jiz bud' byl oznackovan, nebo nebyL Pokud byl, pak by podle lemmatu 3.2.3 mel hodnotu VZD(Y) S VZD(X) + 1, cos by byl spor. Pokud nebyl, pak by byl oznackovan behcm zpracovani vrcholu x a dostal by hodnotu V7.n(y) := VZD(X) + 1, coz by byl opel spar. Vzdalcnosti jsou Ledy vypoct.eny spravne. 0

3.2.5 Cvicenf. Upravte algoritmus hled ani do !Hfky 3.2.1 pro hledani neorientovanych cest,

3.2.6 Cvicenf, V grafu z prikladu 3.2.2 provedte hledani do sfl'ky z vychoziho vrcholu 6. Reste bes pouziti obrazku!

52

KapUola J. Prohledav;ini graru

3.2.7 Test,zda gr~f je bipartitni. Vezrneme libovolny vychozi vrchol T ~ pouzijme hledani neorientovanych cest do sii'ky (viz 3.2.6).

Pokud v grafu existnje mana e,ktera spojuje nejake ova vrcholy x, y, ktere jsou oba v liche nebo oba v sude vzdelenosti ad vyclroziho vrcholu r, pak dany graf neni bipartitni. Touto hranou tot.it proch<izi krnznice Iiche delky (je tvofena hranou e a castrni cest z vrcholu r do vr<;holux a y) a ta se v zadnem bipartitnirn grafu

nernuze vyskytovat.

Pokud naopuk hrana s uycdeo)·mi vlastnostmi neexistuje, pak prohlsdana casL

grafu je btpartitni. Vrcholy, jejichz vzd:"l.lF.nost je licha, tvoi'l jednu stranu, vrcholy v sude vzd:ileno:;ti tVQrl strann druhou. Pokud zbyly v grafu nejake neozllatkovane vrcholy (tj. pokud graf neni souvisly, viz 4.1), zvolnne jako rychozi vrchol r nektery z neoznaCkova.nych vrcholu a. eely postup opakujeme.

Popsany postup Ize zjsdnodusit:' hrany he testovat jiz v prubchu prohledav3.nl

do sii'ky a vzdalenosti staei rozlisovat pouze na sudf a Iiche.

3.3 Prohledavani grafu do hloubky

Hlerlanl do hloubky si he prcdstavit jake pfuzkum grafu cestovatelem, kterj ccstuje po hranach grafu a vrad se dusledne cestou, po ktere prise!.

Navic je hledani do hloubky z<iklad~m i'ady dalsich, mnohdy vclmi vykonnych algoritrna, viz napf. 5.1.13, str. 69, a 5.2.9, str. 76.

3.3.1 Algoritlllus b.ledani do hloubky. VSTUP: Orieutovany graf G a jeho vrc.holl·.

UKOL: Najit vsechny vrcholy, do nichs vede orientovana cesta z vrcholu 1". POMOGNE PROMENN8; Promenna v bude obsahovat jmeno aktmilniho vrcholu, tj. vrcholu "kde pray!") t.ed' [sme". SeznaIIl TRASA bude obsahovat vMy posloupnost hran tvofid.ch tzv. aktualni cestu,tj. cestu z vychoziho vrcholu r do aktualniho vrcholu v. Krome tobo budeme vrcholy, do nichz byia nalezena cesca, znatkovat

podobne jako v algoritmu 3.1.1.

ALGOlUTMUS:

1. [Inicializace.] v:= T; '[RASA := 0; oznackujeme vrchol T, ostatni vrcholy jsou beze znacek.

2. [Volba hrany e.] Vezmeme nekterou dosud nspoufitou hranu e zaCinajici ve vrcnolu v a pokracujeme podle kroku 3. Pokud takova hrana ueexistuje,

pokra,.cujeme podle kroku 5.

3. [Test 1!hodnosti hrany e.] Oznaeme w koncovy vrehol hrany c. Je-li vrchol 111 oznatkovan, pokracujeme podle kroku 2, v opacncm pf\pade podle kroku 4.

4. [Po .. stup do hloubky.j Hranu e pfipiHeIIle na konec seznamu TRASA, polozfme v := 1V a oznackujeme vrchol v. Pokraclljeme krokem 2.

3.3. Prohledtiwini greiu do hloubky

53

5. [Navrat z vrchoiu v.l Je-li seznam TRA5A neprazdny, odebereme z jeho koncc hranu 8, jejf poc.atecni vrchol oznacime u a pokraeujeme podle kroku 2 .. Je-Ii seznam TRASA pr.izdny, vypocet konci,

CASQVE NAROKY: Je-Ii graf zadan ve tvaru seznamu vreholtl a seznarnu vystupnich okoli vsech vrcholfi (viz I .g. 2), probshne hledani v case O( m + n).

POZNAMKA: Pro algoritmua hled ani do hloubky je pcdstasne, ze zc sczuamu TRASA odebirame vzdy hranu, ktcra je v seznamu neikratsi dobu, Tato datova struktura uywi ozuaeovana nazvem z6.sobnik (anglicky stack) a je v jistem smyslu opakem fronty, ktera je naopak podstatna pfi prohledaveni do sifley,

PO:lNAMKA: Predstava cestovatele, ktery chad! orientovanym grafem a vract se, kudy pi'i~el, rna drobnou vadu na knlse: pri postupu vpfed smime jit pouze ve smsru hrany, ale ph navrasu jdeme klidns v protismeru (ovsern pii hledani do hloubky to jinak nejde).

3.3.2 Pffklad, Pousijcmc hledani do hloubky na graf z pl-ikladu 3.2.2, str. SQ. Tento graf je 7.nOVlJ nakreslen na obr, 3 . .2, hrany, ktere byly poufity k postupn flo hloubky, jsou zde vytaieny silne. V kroku .2 jsme pfitom volili hrany vychazejici '2. vrcholu v vzdy v pofadl, ve herem jSOl1 uvedeny v seznamu hran E(C),

4

3

5

6

Obrazek 3 .. 2: K prlkladu hledanf do hloubky,

Prubeh vypoctu je tento: postup vpred do vreh 0 11'1 I, 2, 3, 7, 10, 8, 9, nii.vntt. do vrcholu 8, test hrany (8,7), navrat do vrcholu 10, postup vpfad do vrcholu 11, navrat do vrcholu 10, 7 a 3, test hrany (3,2), navrat do vrcholu 2,. test hrany (2,8),. navrat do vrcholu 1, test hrany (1, 3), postup vpfed do vrcholu 5 a 4, test hrany (4,1), navrat do vrcholu 5, test hr any (5,9), navrat do vrcholu 1.

3.3.3 Veta. Algoritrnus hledani do hloubky 3,3,1 skonci praci po konecncm poctu kroku. Po jeho zastaveni jsou oznadkovany praY!'! ty vrcholy, do nichz vede z vrcholu rorientovana cesta,

DUKAZ: Krok 3 muzc bjt proveden nejvyse [ednou pro kazdou hranu, krok 4 llF.jvy.se jcdnou pro ka_Zdy vrchol. Vrchol, z neho.z je proveden navrat, jii ncbude

54

Kepitole 3. ProbJedavani gmfu

zkouman, nebof je o'Lnai',kov3.n. Tedy i krok 5 bude pro kazdy vrchol proveden nejvyse jecinou. Po kroku 2 vzdy uasledujs krok 3 nebo S, krok 2 tedy muze by-t provcden nejvyse jednou pro kazdy vrchol a hranu,

Zbyvajici ca:;t vety se doH.ze podobne jako veta 3.1.2, str. 48. 0

3.3.4 Konstrukce cest , Oriectcvana cesta z vrchnlu roo vrcholu v je obsazena v seznamu TRASA yidy ve chvili, kdy vrchol v dostav<i znac}m. Obeah seznamu TRASA se vsak behern vypoCt'1l rnenl. Pozadujeme-Ii zachovani informad o nalezeny-eh ccstach I po ukonceni vypoctu, lze algoritmus 3.3.1 doplnit 0 vytvAfeni hod not DOKUD podobne, jako jsme to ucinili v 3.1.4, str , 48. Po provedcni te.to upravy je seznam TRASA jii zbytecny, uebof v kroku 5 lze k navratu z vrcholu v pouzit hodnotu

ODKUD(1!).

3.3.5 Cviceni. V graIu z pfikladu 3.2.2, str. 50, provedte hledan! do hloubky z vychoziho vrcholu 6. Zkustc to bez pou.ziti obrazku!

3.3 .. 6 Hledarri do hloubky v neorientovanych grafech. Algoritmus 3.3.1Ize snadno upra v it pro hledani neorientovanych cest, J edina. zrnena se tYk.i kroku 2, kde volirne libovolnou dosud nepouzitou hranu z mndliny E(v).

Jini moznost spoClva v pfevodu daneho grafu na symetricky orientovany graf; kazda hrana puvodniho gra:fu je nahrazena dvojici opatne orientovanych bran. V takto upravellhn grafu pall: he pfimo pouslt algoritmus 3.3.1.

3.3.7 Navod k prohledavani bludiste. Predstavte si, 1.e jste v bludisti, ktere se sldadi z nezmi[m~ho poctu mistnost] a z neZn8.rIHlho poctu chodeb, kazdachodba spojuje vzdy dye mistnosti. Vasirn 6.kolem je prozkournat systematicky vscchny chodby a mistnostt a najit vychod z bludiste nebo spolchlive zjistit., ze vychod neexistuje .. Mate s sebou kfidu, kterou si muzete deiat na stellY nebo podJahy ehodeb

a mistnosti Zllllcky.

vychozl bod

postup vpi'ed (krok 4)

test vhodnostl hrany (krok 3) navrat (krok 5)

Obrazek3.3: Pfiklad btudiste ;\ jeho prohlcdani rnatodou do hloubky.

Tuto situaci lze mcdelovat neorientovanym grafem, jehoz vrcholy odpcvidaji mistnostem a hrany chodbam, Vy ovsern tento graf predem neznatc. Jstc-li v ncktere mistnosti (vrcholu), vidite pquze fly chodby (hrany], ktcrc vychazeji '£ vaSi ruistnosti.

K prohlcdavani bludiste lze pouzit hledani do hloubky. Pfi hledaui je uutue ozuacovat pouzite chodby a odlisit jc od chodeb, po nichz se buderne teprve vracet. Nejjedncdussi je kreslit pfi prveiu prucliodu chodbou jednu Carll a pri navratn druhou. Z mistnosti pak odchazime pokud mozno neoznafienou chodbou (krok 2)_ Vede-li tl1.t.o chodba no dffve navstivene mistnosti, nevstupujeme do ni, a okamzite se vratime tonz chodbou zpet (krok 3). Pokud jsme piisli do dosud nenavstivene mistnosti, postupujeme z of dale (krok 1). Jsou-li jiz vsechny chcdby vcdouci z mistnosti pouzity (alespon jedenkrat}, vratime se chodbou, ve ktere je jen jedua cara (krok 5). Konec hledani poznamc podIc toho, ze jS!I1e v mistnosti, kde vseehny chodby jsou oznaiieny dvema caran.li. V takovem pi'lpade stojime v mist.e, hie jsrne zaefnali. Poknd vyehod z bludiste existuje a je dosazitelny, museli jsrne j[t. kolem nej~

Priklad bhldiste a mozny zpusob jeho prohlediini je na obr. 3_3. Vyzkousejte na skutecnem pfiklade, Svetla s seboul

3.3.8 Cvicenl. Rozhodnete, zda je ph hledani oricntovanych cest do hloubky pravdivc toto tvrzeni:

Vzdy pfi navratu z vrcholu v jsou oznackovany vsechny vrcholy, do niehz vede z v oricntovana costa,

3.3.9 Hleddnf do hloubky 5 pouzitim rekurzivnf proccdury. Mnohe programovaci jazyky (napf. PASCAL ncbo C) dovoluji, aby procedura (podprograrn) volala sehe sama, Tuto moznost, tzv. rekurzivni volani, lze nekdy vyuzit k t>Jega.ntnimu zaplsu algoritrnn . .lednim z klasickych prikladil je prohledavani grafu do hloubky,

program HLEDANLDO_HLOlJRKY; procedure HLF.DF.J (v : vrchol); begin

oznaCkuj vr-chol v;

pro vsechny hrany e E E+(v) proved' begin

w:= Kv(e);

if (w ncma znacku) then HLEDEJ(W); end;

end;

begin {vlastni prohledavani]

Vsechny vrcho!y grafu musi byt beze :.macek; HLEDEJ(7") ;

end.

Procedure HLEDEJ vezme vrchol v, ktcry ji by! pfedan jako paramctr, a postara se 0 prohledani vsech dosud neoznackovanych vrcholu, ktere jsou z Il.~j dostupne, Po-

56

Kapitola 3. PmlIIedJivillli gmlu.

stare, se 0 to tim, ze vezme vsachny neoznackovane nasledniky vrcholu va u kazdeho z nich po7.adli (sebe sama) 0 prohle.dani vseho, co je Z Ilej dostupne.

Stoji za zmfnku, ze zdc nepbuzlv;l,me f.::i.Juy seznam TRASA. Je t.o zbyteiine, protozc mechanismus rekurzivniho vyvolavani Hi viuy musi pamatovat, karn S8 lIla vratit a v ccm ma pokracovat. Tonto mochanismus pracu]c na principu zasobnikll a, de facto nahrazuje seznam TnASA Z algoritmu 3.3.1. Podrobnosti lze aajit v ucebnir:ich prograrnovani

3 .. 3.10 Konstrukce vsech cest z daneho vrcholu. Snadnou upravou algoritmu hledan! do hloubky 3:3.1 dosahnerne toho, lie v prubehu vypoctu se v seznamu TRASA vyskytnou postupns vsechny posloupncsti hran, ktere odpovidajl vsem cestam, ktere zaCfnajf ve vrcholu r. Lze toho vyuzit napftklad k tomu, abychom ze vsech cest, 'kterc zacinaji v T, vybrali cestu, kted. spliiuje DCjakOU specialni podminku, Takto he napriklad hledat cestu, ktera zacina. v r a obsahuje vscchny vrcholy grafu (tzv. hamiltonovskou ccstu, viz kapitnla 12, str. 197) a lze dokouce snadno ze vsech takovych cest vybrat nejkratsi.

Uprava algoritmu 3.3.1 spoCiva v tom, ie v kroku 5 ph navratu z vrcholn v smazeme jehu znacku a vsechny hrany z E+(v) huderne nadale poklMat za dosud nepouzite. Prijdcme-Ii pak nekdy ZIlOVU (ale [inou cestou) do tohoto vrcliolu, budeme ZTIOVll zkoumat vsechny zpusohy pokracovani. Znacky budou mit yzdy jen ty vrcholy, ktere lezf na ceste obsaiZene v seznamu TRASA-

Poufitl tohoto algoritrnu ovsern je zpravidla ca.sove velice narocml: rioba prace roste exponencialne s poetem vrcholu grafu, pficemz tento rust je tim rychlejsi, Cim vy!iSf jsou stupne vrcholu. Pfidame-li ke grafu nekolik vrcholu, mui:e se doba prace prodlousit nekolikanasobne. Proto lze terrto algoritmus pokladat za vychodisko z nouze, neznarne-li leps! postup.

Tento aigoritmlls lze pokladat 'la. jednoduchou formu tzv. backtrackingu, viz

U.2, str, 189-

3.3.11 Cv idenf', Navrhnete varianty algoritrnu 3.3.] 0 pro hledani neorientovanych cest a pro vyhledani vsech cyklu. nabo kruznic prochazejicleh vrcholem r .

3.3.12 Prohledavani korenoveho sbr ornu do hloubky je jednodussi nef. prohledavani obecneho grafu, Vime-li beepecne, z-e prohledavanygrtLf jc kofenovyrn stromem, neni tfeba vrcholy znackovat. V korep.avem strome Loliz do kai:deho vrcholu vede pouza jedna cesta Z kofene. Diky tomu marne jistotu, ~e postupcm do hloubky se vzdy dostanerne do noveho, dosud lle1Hl.Vstiveneho vrcholu.

3.3.13 Preorder, postorder a inorder. V uspohidanem bmsrnim koi'enovem strome lze poi.'adi vrcholu preorder , postorder a inorder (viz 1.7.2, str. 23) ziskat behem prohledavani stromu do hloubky. Do algoritrnu umistimc na vhodne misto pfikaz pro tisk jmena vrcholu. Umistime-li jcj tesne za pfichod do vrcholu, dostanome pofadi preorder, Urnistime-li jejtesne pfed navrat z vrcholu, dostanerne pofadi postorder. Konecne, budeme-li tiskncut jmeno vrcholu po prohledani jeho leveho porlstrornu, ale pied prohledanim praveho podstrornu, dostaneme pofadi inorder,

57

Kapitola 4

Pojmy zalozcne na

neor ient.ovanych cestach

4.1 Souvislost

4.1.1 Sou vislost, Graf nazyvame s01Lvislym, jestliZe kazde jeho dva vrcholy jsou spojeny neorientovanou cestou.

Pro odlisenl od tzv, silne souvislosti (viz 5.1) neicdy mluvirne 0 ylubti nebo take obycejne souuislosii.

4.1.2 Kornponcnta souvislosti grafu G (tez souuislti komponetit« nebo i jen kompollcllta) .ie kazdy podgraf H grafu G, ktery je souvisly a ktery je rnaximalni s touto v lastnosti, tj. neni castf vets[bo sou vislsho podgrafu.

0----0

7 B

,t},

6 1

4 3

5~

..» l~~'

7 8 5 1

Obrazek 4.1; Grafy k pfikladn 4.1.3.

4..1.3 PiiIdad. Oba grafy na obr. 4.1 rnaji kaZrly ct.yfi komponenty souvislosti S mnofinami vrcllOlu {1,3,5}, {2,4,6}, {7,8}, {9}.

4.1.4 Vlastnosti komponent souvislosti. Na mnozinc vrcholu grafu G dennujme relaci '" pi'edpisem

a '"" b ¢:::::} vrcholy a, b jsou v grafu G spojcny neorientovanou cestou, Velmi snadno lze overit,ze takto definovana relace ""' je ekvlvalcnci (tj . je reflexivni, symctriclui a tranzitivni, viz 1.12.6, str. 34), a ze tcdy urcuje na mnozine vrchohi

58

Kapitola 4. .PojUl_Y zaJozene no. neoJ"ientovanyeli eeseach

rozklad na ekvivalencni Hidy. Podgrafy, ktere [sou mdukovany Mmito tfidami, jsou kpmponentami souvislosti (uebof jsou t.o maximalni souvisle podgrafy).

Odtud okamfite plyne, ze kaidy" vrehol grafu lezi v pfcsne jedne kornponente souvislosti, a take, ze kom ponent U souvisloati, ktera obsahuj e vrchol z , muzemc ziskat jako podgraf indukovany muosmon vsech vIeholtl, ktere jsou nsorientovane

dostupne z vrcholu :c.

4.1.5 Hledani komponent SQllvislosti. Zvolime libovolne vrchol r a pomoci kterehokoli algoritrnu pro hledani neorientovanych cest (viz kap. 3, 5t1. 47) najdeme mnozinu vrcholii neorientovane dostupn:fch z vrcholu r . Podgraf indukovany touto

mnozinou je komponentou souvislosti.

Pak zvolirne vrchol r mimo dosud vytvorene komponcnty 3 cely postup opaku-

[erne, dokurlueni kazdy vrchol zafazen do nektere komponenty.

4.1.6 Cviceni. V nasledujicich nefonmilne. popsa:nych grafech objasuete vyznam pojmu komponenty souvislosti;

1. Vrcholy jsou atomy, hrany [sou chemicke vazby mezi nimi.

2. Vrcholy jsou lide a hrana z vrcholu x do vrcholu y vede pr::i.ve tehdy, kdyz z je otcern nebo matkou osoby y. (Vilimllete si, ze ten to graf je orientovany, ale my se ptarne no. komponenty SDllVis\osti, u nieM ria oricntaci hran nezrueZi.)

4.2 Stromy a kostry

4.2.1 Les a st.rorn. Les je grai, ktery neobsahuje kruznicl. Strum je graf, ktcry neobsahuje krnznicia je navic so u vislY·

Komponentarni souvislosti lesa jsoutedy stromy.

4.2.2 Veta. Kail.dY souvisly graf rna faktor, ktery je stromern.

DUKA.Z: Je.stlize geaf obsahuje krusnici, odstranime 7. grain libovolnou hranu teta krusnice. Souvislost grafu tim zu:sto.ne zachovana.. Takto opakovanym odst.ralIOVanim bran ziskame faktor puvodniho grafu, ktery je souvisly a neobsahuje jiiz.idnoll

kruznrc]. 0

4.2.3 Kostra gr afu. Faktor grafu G, ktery je strornem, nazyvame kostro» graftl G (tez napnutym stromem grafu G).

Predchozi veta 4.2.2 tiki, ie ka.ZdY souvisly graf rnA kostru.

4.2.4 N apnuty les. Faktor grafu G, kted [e lesem a rna stejny pocst komponcnt jako graf G, nazyvame napnutym lesem grafu G.

4.2. Stromy e kosiry

59

4.2.5 Veta. Kaidy graf rna. napnuty Ies,

DUKAZ je podobny jako 4.2.2: je-li v grafu kruznice, pak odstranenim nektere jcji hrany se pocet komponent ~ol1vislosti nezrneni. Opakovanym trhanim hran tedy dost.aneme napnuty les. 0

4.2.6 Veta. Ka:zuy strom s alespoii dvema vrcholy obsahuje alespon dva vrcholy stupne 1.

DUKAZ: :l<i.dna cesta spojujici dva vrcholy stromu llcmuze mft V'etsi pocet hran nez W(G) -II. Vezmerne tedy ccstu C, ktara rna ze vsech rest nejvetsi pocet hran. Oznacmc z , y poeM.eeIli a koncovy vrchol cesty C. Kdyhy nektery z techto vrcholu (aZI1UClne jej x) mel stupeir alespon 2, vychazela by z vrcholuz; JalSf hrana e, ktera nepatfi do cesty C. Jeji drnhy krajni vrchol z nemuze lezet na ceste C, jinak by v grafu existovala kruznice. Byio by ledy moine eestu C prodlouzit 0 hranu e a vrchol s, coi je spor, nebof G byla nejdelsf. Proto vreholy x a y maji stupeii 1. 0

4.2.7 veta. Kazdy strom 0 n vrcholech ma pfesne n - 1 hran.

DUKAZ: Vetu dokazeme indukci podle pcctu vrcholu. Pro graf s 1, 2 nebo ::I vrcholy lzc vetu ovefit pfimo. Predpokladejma tedy platnost vety pro strorny s k: vrcholy a vezmerne libovolny strom, ktery rna k + 1 vrcholu. Podle vety 4.2.6 rna tento strom llejakY vrchol stupne 1. Odstranenirn tohoto vrcholu a jedine hrany s nim incidental ziskame rnensi strom s presne k vreholy a ten podle indukcniho pfedpokladu rna pi'p..sne k - 1 man. Puvodui strom mel tedy k + 1 vrchohi a k hran. 0

DIJSLEoEK: KaZdy souvisly graf 0 n vrcholech rna alespoii n - 1 hran.

4.2.8 Veta. Kaidy les 0 n vrcholech a k; komponeutach souvislosti ma pi'e.~ne n- k hran.

DUKAZ: Oznacme nt, it'l, ... , n" poiity vrchohi v komponentach souvlslosti dansho lesa, Kazda komponentaje strornem, podle vety 4.2.7 jsou tedy pocty hran v techto komponentach rovny 711 -1, n2 - 1, ... , 7l.k -1. Ponevads n = E~l ni, dostaneme seetenirn pocet hran v celem lese n - k. 0

4.2.9 Vlastnosti atr ormr. Neeld G je graf s 11 vrcholy, n ~ 1 vrcholy. Potom nasledujlei podrnfnky jsou ekvivalentni:

1. G je strom.

2. G neobsahujc krusnici a rna pfesne n - 1 bran.

3. G neobsahuje kruznici a rna alespoh n - 1 hran.

4. G je souvisly a rna presne n -1 hran,

5. G jc souvisly a rna nejvysc n - 1 hran.

6. G je souvisly a. odebranim kterekoli hrany pfestane h:9t souvisly,

7. G neobsahuje kruznic! a po pfidani libovolne hrany budc obsahovat presne jednu kruznici,

8, Kazda. dvojice vrchohi je spojena pfesne jednou neorlcntovanou eestou.

60

Kapitola 4. Pojmy zaJozene rm. IleOl·jentovanjcb ccstach

DU!CAz: l.~ £,3,4,5 vyplyva primo z definiee stromu a z vety 4.2.7. 2 => 3 a 4 => 5 jsou zi'ejme bez dub.zu.

3 => 1; Craf G je lesem. Oznacime-li k pocet jeho kompoucnt souvislosti 11. m pocet hran, pak podle vety 4.2.8 Ina graf G pfesne m = n - k hran, Podle pi'edpokladu 3 vsak plati m 2:. n - 1. Po dosazeni marne k $: 1, graf rna tedy jen jednu komponentu souvislosti, je tedy seuvisly, a. proto je to strom.

5 => 1: Graf G je souvisly, obsalruje tedy kostru. Kostra je stromem, a proto rna pi'esne n - 1 hran, coi. je pi'e:me tolik, kolik jich rna samotu)' geaf G. Z toho plyne, ze G je Slim svou vlastnl. kostrou, a je tedy stromem.

1 => 6: Je-li n = I, je tvrzeni sarnosfejme .. Neche tedy n 2:. 2. Graf G je strom, ma tedy pi'esne n - 1 hran. Po cdstraneni libovolne hrany dostancme graf H, ktery rna. jen n - 2 hran, a tudiz podle dl'lsledku vety 4.2.7 neni souvisly.

6 ~ 7: Kdyby G obsahoval krusnici, pak by zustal souvisly i po odstraneni kterekoli hrany z tcto kruznice. Tedy G neobsahuje kruznici. Vytvorme nyni graf H pfidanfm hrany e spojujlcl vrcholy x, y. Vrcholy x, y byly ovsem spojeny cestou v G. To znamena, ze v H existuje kruznice obsahujid hranu e. ZbYva. dokazat, ze tato kruznice je jedina.

Kdyby H obsahoval dye f1km~ krui.nice, prochazely by obe hranou c. Existovaly by tedy dYe ruzne cesty spojujici vrcholy z, y. To by ovsem znamenalo, i.e jiz graf G by musel obsahovat kruznici. Graf H tedy obsahuje pi'esne jednu kruznici,

7 ~ 8: Vezmihne dvojici vrcholu. z , y. Pfidanim hrany e apojujici z; 1-1 vznikne presne jedna kruznice. To znamena, ze uz v grafu G byly z , y spojeny ccstou, Kdyby byly spojeny dvema riiz.nYmi cestami, existovala by j.iz v G kruznice,

8:::} 1: Souvislost grafu je zfejrua. Kdyby v G exist oval a krui.nice, byla by

nektera dvojice vrcholu spojena dvema ruznymi cestami. 0

4.2.10 Cvjceru. Kofenovy strom (definovany v 1.7.1, str. 21) je stromem. DokaiZtc!

4.2.11 veta. J estlize znackovacf algoritmus 3.1.1, str. 47, upraveny pro neorleutovane cesty a. 5 (ipravou 3.1.4 oznackoval vsechny vrcholy grafu G, pak faktor grafu, ktery obsahuje p()uze ty hrany, ktere jsou hodnotami ODKUD ozna))kovanyeh vrehohi ruznych od r , tvoi'i kostru grafu G.

DUKAZ: Do Wdeho vrcholu vede neorientovana cesta tvofena hranami Iaktoru. Faktor [e tedy souvisly, Pocet bran faktoru je W(G) - 11, nebof pouze pro vrchol r nsni hodnota OOKuo(r) definovana.. Podle 4_2.9 je tedy tcnto faktor stromern. 0

POZN A MKA: Podobna tvrzeni platii pro dalsf algoritmy pro hledani cest z daneho vychoziho vrcholu, pokud zaznamemivaji poslcdni hrany cest zpusobem popsanym v 3.1.4.

4.2.12 Cvicenl, Za jakych podmfnek IDa graf nekolik niznych koster?

4.2.13 Cviceni. Kolik vznikne kruznic, pfidame-li ke stromu dye hrany?

4.3. Mjnimruni kostrs.

61

4.2.14 Cviceni, Nakrcslete vsechny vzajemne neizomorfni kostry uplnych grafU ](4 a [(5. Kolik jich je?

4.3 Minimalni kostra

4.3.] Formulace (uohy. Je dan souvisly graf G, jehoi hrany jsou ohodnoceny realnymi tisly, ktera budeme nazyva], cenami. Kostru grafu G nazvernc ?ninim6.lni kostrou, jestlize rna ncjmcnsi cenu, tj. nejrnensi soucet ohodnoccni hran [rnezi vsemi kostrami grafu G).

4.3.2 PHklady aplikad. Pfedpokladejrnc, ze marne za frkol propojit n mist 1,2, ... , n vedenim vysokeho napeti. Pro kazdou dvojici mist i, j marne k dispozici odhad nakladu na postaveni prime Iinky rnezi misty i, i NaSI snahou je propojit vsech n mist co nejlevneji, prit,oIIl v~ak nesmime vedeni vetvit mimo mista, ktera propojujemc.

Je zi'ejme, ze vybudovane linky nesmeji tvoi'it kruznici, jinak by bylo mosno vynechanim nektprp. linky snizit celkove naklady, Vybudovane linky tedy musi tvofit minimalni kostru, Vsimnete si, ze toto nejlevnejs] reSent neni idealni z hlediska spolehlivosti: porucha kterekoli linky zpusobi rozpad site na dye komponenty 50U-

vislosti, .

Jmym pfikladem m-uzc byt silnicni siC, z nfi chcerne v zime udrzovat sjizdnou pouze co nejkratsi ca..st, ktera vzajemne propojf vsechny obce v dane oblasti.

Krome tcchta pi'imych aplikaci se s minimalni kostrou setkavame jako s dHGim problernein pfi r€Sen} slozitejsich kombinatorickych uloh,

4.3.3 Postup hladani minim:ilni kostry.

VSTUP: Souvisly graf G a ohodnoceni hran cenami c : E(G) -t ~. UKOL: Najit minimalni kostru grafu G.

POMOCN-B PROMENNE: Faktor L grafu G, ktery neobsahuje kruznici (tj. napnuty Jes grafu G). K tomuto lesu buderne pridayat vhodne zvolene hrany,

ALGORITMlJS:

1. [Inicializuee.] Necht L je diskretni gr;t,f s mnoainou vrcholu V(G).

2. [Test ukonceni.] Je-li les L stromem, vypocet konci, L je hledana minimalni kostra,

3. [Volbll hrany.] Zvolme libovolns hranu e s touto vlastnosti:

{Hra-na e spojuje dye nlZne komponenty lesa L a alcspoii pro (*) jednu z techto komponent [osnacmc ji A) plati, ze cena hrany e je nejmensi ze vsech cell hran z mnoziny WG(A).

4. [Spojenl komponent.] Hranu e pridejme k lesu L (tim snizime poeet komponent) a pokracujme krokem 2.

62 Kapitola 4. Pojmy zaJozene na neorientovanjdl cestacll

4.3.4 Pf-Iklad. V grafu na obr. 4.2 je minimalnf kostra vytaiena silniL

5

2

6 Obrazek 4.2: Minimaln! kostra.

4.3.5 Veta. Algori trnus 4.3.3 sa po konecnem poctu kroku zastavi a po zastaveni [e L minimalni kostrou grafu G.

DU!{AZ: Kroky algoritrnu 2,3 a 4 se provcdou presne (jV(G)I-l)-knit, nebof pfi kazdern vykonani sc smensi pocet kornponent 0 jednu.

Spravnost algoritmu dokazame mdukef. Ukizem€, ze po celon dobu vypottll platl toto tvrzeni: Graf G je lesem a existuje rninirnalni kostra grafu G takova, ze Ies L je jejim faktorem.

Po provedeni kroku 1 t.o jiste plati. Pi'edpokladejme tedy, ze pled provcdenim kroku 4 je les L faktorem nejake minirnalni kostry K. JestliZe]( obsahuje pfidavanou hranu €, pak sarnozrejme tvrzeni plati i po jejirn pfidani k lesu L. Jeatlize kostra K hranu e neobsahuje, pak pfidanimteto hrany ke kostfe K vznikne kruznice. Tato krusnice obsahuje krome hrany e jeste jednu manu, oZIIaCllle ji h, takovou, ze h E E WG (.4) _ Z podminky C~) plyne, ze c(e) s;_ c(h). Pfidejme nyni ke kosti'e K hranu e a odoberme hranu h. Tiro dostaneme opet kostru, osnacme ji H, pricemi cella teto nove kostry neni vyssi nez cena kostry K. Kostra }1 je tedy take minimalni kostrou, navic vsak obsahuje krome lesa L i hranu e. Obsahuje tedy les L i po provedeni kroku 4, tj, po pi'idani hrany e. 0

4.3.6 Varianty postupu 4.3.3. Podmince (if) v kroku 3 obvykle vyhovuje nelwlik hran najednou, postup 4.3.3 tedy neni jednoznacny. Pfedchozi veta 4.3.5 nam zarucuje, ie to nevadi, Ai uz pri vyberu hrany dodrzime podrninku (*) jakkoli, vysledkt!m bude v-zdy minirnalni kostra,

Pro praktieky vypocet je ovsern vhodne vyber nejak omezit, NejznfunejlH jsou

nasledujici dva algoritmy.

4 .. 3.7 Hladovy algor'itmus- Hrany grafu uspcradame podle jejich cen do neklesajidho pol'adi, tj. od llcjievnej.!ii po nejdraz.::ii. Pak hrany v tomto pofadi probinime a do grafu L pridavame jen ty z nich, kt.ere. v grafu L ncspirsobi vznik kruznice. Tanto algoritrnns je znimy take jako KNiskaltlv, pochlizi Z roku 1956"

Spravnost hladoveho algoritmu vyplyva z faktu, ze mana, kterou aigoritmus pi'idava. ke grafu L, je vzdy nejlevnejsi ze vsech hran, ktere spojuji dye ruzne kornponcnty lesa L. Pfida.vaml. hrana tcdy vzdy splD.uje porlminku (*), a proto spravnost hladoveho algm::itmu vyplyva z vety 4.3.5.

Nazav "hlarlovy algorttrnus' vystihuje fakt, ze k lcsu L pfidavame vsdy tu nejlevnejs! branu, ktera v dane situact pfipada. v uvahu. Takovyto prostoduchy

4-3- Minimcilili ko:;tra

63

postup, kdy sc v kazdelll kroku snazfme o rnaxirnalnf okamzitj zisk bes ohledu na pflpadne budouci problemy, je sice casto pouaivan ph reseni ncjru:wejsich optimalizacnich uloh, ale pro, vet.sinu 610h ncsaruiiuje, ze vysledkem bude skutecne optimalni resenl. Jde tedy zpravidla jen 0 heuristicky algoritmus, viz 11.4, SLL 196. (Zkuste tfeba "hlOOove" hledat nejkratsi ccstu, Snadno najdete pfiklad, kdy hladovy postup da chybny vYslerlek.)

Uloha 0 rninimalni kostrc jc pozoruhcdna tim, ic pro ni hladovy postup vcde ke skntecne optimilnimu resenl zarucene a vzdy, Znovu upozorfiujeme, ie typy uloh, pro ktere hladovy postup Java. zarucene optimalni vysledky, jsou (bohuzel) dosti vzacne.

4.3.8 Jnrnfkuv-Prtmuv algocitrnus popsal v ron: 1930 V. Jarntk a nezavisle ria nem v roee 1957 R. C. Prim:

V postupu 4.3.3 nejprve pevne zvolirne nejaky vrchol v a pak pfi vyberu hrany, ktera splnuje podminku (*), volime jako komponentu A vzdy tu, hera obsahuje vrchol v.

Les L tedy behcrn vypoctu rna jako komponenty souvislosti krome izolovanych vreholii vzdy jen jedeu strom, kt.ery postupnc roste tim, ze k nemu pfidavame hrany, ktere jej nejlevneji spojuji s nekterym izolovanym vrcholem,

Piiuavana. hrana trivi.ilnc spliiuje podminku (0.), dukaz spravnosti algoritrnu terly opet vyplyva z vety 4.3.5.

4.3.9 Boruvkuv a1goritmus je nejstarsim algoritmem pro minirualni kostru, pochazf jiZ z roku 1926 (historicke podrobnosti viz [Sisma97] a [MN96]). Algoritmus funguje za predpokladu, ze ccny vsech hran jsou ruzne, a lze jej popsat takto:

V postupu 4.3.3 vz-dy vezrneme vsechny hrany, ktere splnuji podminku ("'), a pfidame je ke grain L vsechny najcdnou.

Bonrvkuv algoritmus je velrni rychly, ncbof ]Joliet komponent souvislosti lesa L se v kazdem kroku zmensi nejmene 0 polovinu (v typickem pi'ipade mnohern vice), pocct kwku Boruvkova algoritrnu tedy bude nejvyse logz n. Cclkova doba prace tedy bude O(mlogn). Nejrychlejsi znamc algoritmy pro minimalni kostru jsou zaloseny pnive- na myslsnkach Boruvkova algoritmu.

Striktne vzato, Boruvkuv algoritmus neni specialnirn prfpadem postupu 4.3.3, presto lze [eho spravnost pomod postupu 4.3.3 dokazat:

4.3.10 veta [spr avnost Boruvkova algor itrnu}. Boruvkuv algoritmus 4.3.9 spravne naleznc minimalni kostru grafu,

DiJKAZ: Oznacme B mnozinu hran, ktere Bonlvkuv algoritrnus pridav<i k Iesu L v jednom kroku. Ukazp.me, ze obecny postup 4.3.3 mllze v teto situaci v IBI po sobe jdoucich kror.ich udelat totez. Pi'csneji, dokud B i' 0, muze obecny postup 4-3.3 de-Jat to, ze vybere libovolnou hranu z mnoziny E, tuto hranu z mnosiny B odstrani a pfid.i ji k Iesu L. Potfebujeme dokazat, ze pritorn vsechny zbyvajici

64

Kapitola 4. Pojmy zalozp.m~ nil neoricntovanych cestach

hrany v mno~ine B budou stale splnovat, podminku (*), a lze je tedy k lesu L pfidat v da.lsich krocich,

Kazu.e kornponente A lesa L pHrad'me hranu eA, ktera je uejlevnejsi z rnnoziny hran W(A). Ze vsech hran, ktere splliuji podminku (~), jsou nf\ktere hrany takto pfifazp.ny jen jedne komponenta, ostatni jsou prirazeny dvi;\roa komponentam. (Nakreslete si prfkladl)

Je-liz mnoziny B vybrana hrana eA, ktera je pi'irazena jell jednd knmponsnte A, pal, pfldanim hrany €A k lesu L spojime komponeutu A s ncjakou jinou komponentou C. Hrana ee, ktera byla dosud nejlevnejsl hranou z mnoiiny W(C), je pfitorn levnejsl nez eA (proe?) a nyni bude nejlevnejs! hranou z mnoziny W(A u e), bude tedy i nadale spliiovat podminku (*). Ostatni hrany z mnoziny B zustavaji pi'ii'azeny ke kqmponentam mimo A a. C, tj, ke komponentam, ktere se nezmenily, P roto tyto hrany i nadale spliiuji podminku (*)-

Je-ti z mnoziny B vybrana hrana e, ktera je pfifazena dverna komponentam A, C, pak spojenim tcchto dvon korrrponent vznikne komponent.a A lJ C. Hrana CAuG, ktera bude nyui pi'ii'azena. teto komponente, sicc mozna nelezi v B, ale apet olati, ze zbyvajici hrany z mnoziny B zustaNaj! pfirazeny lee komponentarn, ktere ae nezmenily, a proto i nadale splil.uj i podrninku ("*). 0

4.3.11 Cvicenl. Pouzijte vsechny tfi popsane algoritrny na grafz obr. 4.2 a vsimnetesi rozdilu v jejich t:iUllOSti. Vsimnete si t.ake, ze Boruvkuv algoritrnus pro tent.o graf da. (nahodou) spravny vysledek i presto, ze ceny vsech hran nejsou rlizne.

4.3.12 Cviceni. Proc se v Boru'Ikove algoritrnu pozaduje, aby ceny vsech hran byly lluvzajem ruzne? Najdete pfiklad., kdy by to rnohlo vadito Navrhnete upravu Bonivkova algoritrnu takovou, aby spravne pracoval i na grafccb, v nichz ceny nekterych hran jsou stejne.

4.3.13 'Poznamke. Uloha. 0 rainimalnl kostfe rna ve srovnanl s jinyrni ulohami nekoli k pozoruhodnych vlastnosti .. J ednu jsrne jii. zminili v 4.3.7: hladov y algoritmus clava vzdy optimalni reSeni.

Jinou pozorunodnou vlastnosti je to, ze optimaln! ceseni (tj. minimaln! kostra) nezavis! na absolutnich velikostech cen jednotlrvych hran, ale pouze na jejich usp oi'ad ani , tj, na relaci ::; mezi nirni, To znamene, i.e pokud se eeny hran zrnsni, ale nerovnosti meai nimi zustanoll zachovany, nrinimalni kostra bude stejna,

Dukaz tohoto tvrzeni he snadno odvodit ze snravnosti hladovsho (Kruskalova.) algoritmu 4.3.7. Hrany totiz budou probid.ny ve stejnern pofadi, proto i vyslsdek bude stejny- Vyplyva to v~ak i z nasledujfci vety.

4.3.14 VP.ta (charttk terizace minim alni koat.ry}, Kostr a J( grafu G j e minimalni kostrou prave tehdy, kdyz

{pro ka:Zdou hranu e ¢ E(K) a pro kaidou hranu h na

(*"') (jedine) ceste, k. tera v k.ostfe J( spojuje krajui vrcholy

hrany e, plati c::( e) ~ c( h).

4.4. Stupne souvisloeti

65

D UKAZ: Pfedpokladejme, ze kostra K j P. mimmalnt. Kdyby podminka (**) neplatila, existovala by mana e ¢ E(K) a luana h lezid na ceste, kter a v kostfe K spojuje krajnf vrchoiy hrany e~takova, ze c(e) < c(h). Pak bychom vsak mohli ziskat levl1ejsi kostru tim, ze bychom z kostry K odebrali hranu e a nahr adili ji hranou h, coz by by I spor. Podniinka (:+<,,) tedy plati,

Dokiierne opacnuu implikaei, Pfedpokladejme pro spor, ~e pcdminka (**) platl a kostna K neni minirnalnl. Graf G jiste rna nejakou minimalni kostnr, oznacme ji L. Ve7.meme libovolnou hranu e kostry L, ktera uelezi v K. V kostfe K existuje (jedini) .cesta, ktera spojuje krajni vrcholy hrany e. Tato cesta obsahuje alespon jednu hranu h, ktera nelezi v kostfe L (jinak by kostra L obsahovala krusnici). Z pi'edpokladu (**) plyne, i.e c(e) 2; c(h). Jestliae tedy z kostry K odebereme hranu h a nahradime ji hranou e, [:ena kostry J( tim neklesne. Teuso postup (tot.ii v.Ybef luau e, Ii a jejieh vymenu v kostfs K) muieme opakoval., dokud nebudou kostry K a L stejne. Pl"!voclnr kostra K nebyla ncjlcvnejsi, pri vYmemi.ch jejf cena nikdy neklesla, ale v}·sledna. kestra L nejlevnejsf .ie, cosje spar. Kostra [( splnujicl (**) tedy byla nejlevnejsi. 0

4.3 .. 15 A lternativnI navod k hled ani minimalnl kostry. Dfky vete 1.3.14 muzemepostupovat takto: Vezmcme libovolnou kostrn a testovanirn podminky (**) zjistime, zoo. je minimalni. POkUlI neni, tj, najdeme-li hrany e a h, diky rnmz podminka (**) neplati, pak vymsnon hran e a h ziskame !eVllCj1l1 kostru. Toto opaleujerne, dokud nedostaneme kostru, ktera. je minimalnl,

Tento alternativni postup je zpravidla zbytecne pracny, nebof algoritmy zalozene no. 4.3.3 jsou podstatne efektivnejsi, Mame-li vsak kostru, ktera. jtZ Ie "skoro optimalni", muze byt alternativni postup velmi vyhodny,

4.4 Stupne souvislosti

V fade aplikad je ti'eLa rozlisovat mezi "vice souvlslymi' a "mene souvislymi" graIy. Nap!'. u ailnicni Hit.e nas mllz.e zajimat, na kolika mistcch by musela byt pferusena silnice (napf. povodni), aby bylo pferuscno veskere silnicni spojeni mezi dverna danymi misty, popf. aby se silnicni sit rozpadla na neko1ik r.a.st.l, mezi nimiz neni silnicni spojeni.

4.4.1 Hranovy stupeii souvislost l grafu je rlefinovan jako minirnalni pocet hran, jcjichz odstrauenlm se g,-raf stane nesonvislym. Tim je hranovy stupcii souvislosti definovan pro grafy s alaspof dvema vrcholy. Pro grafy s jednim vrcholem definujeme hranovy stupeii souvislosti jake nulu. Graf nazyvame hnJ.1wve k-sou7Ji.~IYm, [e-li jeho hranovy stu pen souvislostialespoii k,

Hranovy stupeii souvislosti ncmuze byt vet.ilf nP'7. stupen kterehokoli vrcholu. (Proe?)

Hranu grafu nazyvarne mostem; jesJ.lize jejfrn odstranenim zvysfmc pocot komponcnt souvislosti, Graf, ktery rna alesDon dva vrcholy, je tedy hranovs 2-souvisly, neobsahuje-li zoony most.

., :

66

Kapitola 4. Pojmy zalozene na neorientovanych ce:st.:kh

4.4.2 Vrcholovy stupen souvislost.i graIn je definovan jako minirnalnl pocet vrcholu, jejicbfb odssranenim se graf stane nesouvislym. Tim je vrcholovy stupen souvislosti definovan pro vsechny grafy krorne uplnyc:h grafi'! (a krome multlgrafu, kt.en! obsahuji upiny graf jako svuj faktor). Pro tyto grafy definujeme vrcholovy stupei'i. souvislosti jakn IV(G)I- L Graf nazyvame »rcholove k-so1.wislym,. je-li jeho vrcholovy stupefi souvislosti alespoii k ..

Vrchol grafu nazyvame artikulaci, jestlise jehu odsrranenim zvyslme pocet komponent souvislosti. Graf, ktery rna alespon 3 vrcholy, je tecly vrcholove 2-sollyisly, neohsahuje-li iaunou artikulaci,

4.4.3 Mengerova veta. Gra{ je vrcholove k-souvisly prave tehdy, kdyz pro kaidc dva vrcholy z , y existuje k vrcholovs disjunktuich cest z x do y, tj. takovych cest, ze krome vrchohi x, y nemaji spolecne vrcholy,

4A.4 Veta. (Ford a. Fulkerson 1956.) Graf je hranove k-sollvisly prave tehdy, kdyz pro kaMe dva vrcholy .x, y existuje k hranove disjunktnich cest z .x do y, tj, takovych cest, ze ruzne cesty nemaji zadnou spolecnou hranu,

4.4.5 Algoritrny pro st upne souvislosti. Vrcholovy a hranovy stupeii souvislosti grafu lze urcit pomoci tokil v sitich, viz. K2.2. Pomoci toku v sltieh lze take dokazat pfedchozf dye vety. Pro zjistovanl, zda da.ny graf je vrr,holove 2-so11visly, nebo vrcholove 3~sOllYisly, existuji spccialni, velmi rychle, ale komplikovane algoritrny.

4.4.6 Cviceni. Na zaklade vet 4.1.3 a 4-4.4 dokazte, Zil vrcholovy stupeii souvislosti je menS] nebo roven hranovemu stupni souvlslosti. Najdete pffklad, kdy nep!ati rovnost.

67

Kapitola 5

Pojmy zalozene na oriontovanych cest.ach

501 Stlna souvislost

5.1.1 8ilna souvialost. OrielltoViil1Y graf G nazyvame yilne so'UviyiY'fIl, jestliz.e pro kaZdou dvojici jeho vrcbohi x, y existuje v G orientovana eesta z x do y a take zpet z y do z.

Sillle souoisto» kompommtou grefu G (tcz silnou komponeniou nebo kotnponentau ,~ilni souvislosti) nazyvarue podgraf H grafu G, kter.y je silne souvisly a ktery je maxim il ni s touto vlastnosti, tj, neni casH veliliho siine sou visleho podgrafu.

5.1.2 Pffklad. Graf G na obr. 5.1 m~ ttyri silne souvisle komponenty Hi, H2, H3, H4• Podgraf indukovany mnozinou {I, 2, 3} ie silne souvisly, ale neni silne sou v islou !cornpon cntou , nebot' je casti vetsiho sHne souvislcho podgrafu HI. Vsirrmete si, zegraf G je souvisly, ale nikoli silne souvisly. Dale si vsimnete, ~e v komponente H1 sice kazda hrana l&~i na nejahim cyklu, ale neexistuje cyklus, ktery by prochazel pres vsechny vrcholy.

r";~------ ......... ., r .......... ..",..,

1

r HI

k.. .... ..J

Obrazek 5.1: Orientovany graf, jeho silne komponenty a kondenzace.

Kapitola S. Pojm,Y zaJozcne nil orientovanycil cestac11

68

5.1.3 Cviceru. Uvasujrne nasledujici graf: Vrcholy grafu jsou jednotlive podminky 1,2,., J 8 z vety 4 .. 2:9, str, 59. Z vrcholu i, do vrcholu i vede mana, kdyz v diikaze vety 4.2.9 je dokazana implikace i =} i. Rozhodnete, zda tento graf je silne souvisly, Tote:;:: provecfte s veton 5.3.4, str. 78. Nakreslete obrazky, Jaky je srnysl silne souvislosti a silne souvislych komponent v techto prfpadech?

5.1.4 Vlaatrnost.i silnjch kornpunent. Na ml10zinc vrcholii grafu G definujme relaci ..... pi'cdpisem

a "" b -¢::::::} existuje orientovana cesta z x do y a take z y do ;1;.

Velmisnadno lze avent, ze takto dsfinovana rei ace _. je ekvivalenci (t], je reflexivni, syrnetricka a tranzrti vni, viz 1.12.6), a ze ted}' urcuje na mnoZine vrcholu rozklad na tiidy ekvivalence (viz 1.12.7). Podgrafy, ktere [sou indukovany temit.o tHdami, jsou komponentaroi silne souvislosti (nebot jsou to maximalni silne souvisle podgrafy).

Odtud okamzite plyne, ze kai?dY vrchol grafu leii v presne jedne komponente silne aouvlslosti.

5.1.5 Veta. Hrana e je obsazena v nejakem eyklu prave tehdy, kdyz oba jeji vrcholy (pocatecni i koncovy) lezi v teze silne souvisle kompouentc.

DUKAZ: Vezmerne libovolnou hranu e z vrcholu z do vrcholu y. Je-li x= V,. tvoH sama hranae cyklus. Je-li x ¥- y a lezi-li x, y v teze silne souvisle komponente, existuje orientovana cssta z y do .7:. Tato casta spolu s hranou e tvoi'i cyklus.

Je-li uaopak hrana e obsasena v cyklu, pak tate hrana tvon orientovanou cestu z x do y a ostatui luany eyklu tva!'i orientovanou csstu z y do x. Oba vrcholy x, y tedy leH ve lltejne silne souvisle komponente, 0

5.1.6 Dusledek. Graf je sUne souvisly prave tehdy, kJyz je (slabe) souvialy a kdyz kaZda jeho hrana leii v nejakem cyklu.

5.1.7 Dusledek, Kazda silne souvisla komponenta, kteni obsahuje alespofi dva ruzlle vrcholy, obsahuje cyklus.

5.1.8 Kondenzace. Kerulenzoce grafu G je prosty oricntovany graf G' bez smycek takavy, ie plati:

1. Vrcholy grafu G1 jsou v~echny silne souvi!-lle komponeutygrafu G.

2. Vrcholy HI, H2 (tj. sHne souvisle kornponenty grafu G) [sou v grafu G' spojeny hranou z H1 do H2 prave tehdy, kdyz HI #- H2 a v grafu G existuje hrana z nekterelio vrcholu komponenty fit do nektereho vrcholu komponenty H2.

5.1.9 Veta. Kondenzacs orisntovanehc grafu rreobsahuje ~adny cykIus.

DUKAZ: Kondenzace [pcdle definice) neobsahuje smycky, Kdyby kondenzace obsahovala cy klus proch azejid alespoii dvema nlznymi vrcholy {tj. silne souvislymi

5.1. Silwi sou v islost

69

komponentami puvodniho grafu) , exist oval by jiz v puvodnim grafu cyklus prochazejici pros tyto komponenty. To by vsak bylo v rozporu s definid silne souvisle o

kornponenty.

..

5.1.10 Dost.upnost , Oznacme (viz 1.5.4, str. 20)

D(';(x) = mnozina vsech vrcholu orientovane dostirpnych v grafu G z vrcbolu x!

Dc (x) = mnofina vsech vrcholu, z nichs je v grafu G orientovans dostupny vrchol x ..

N eburle-Ii hrozi t uedoroz umeni, budeme misto D6' (x) a Dc (:Ii) jJsat s trucneji D+(x) H. D-(x) .. Dale zaved'rne matici doytupnosti D takto:

d .. _ { 1, jestlize vrehol Vj je orientovana dostupny z vrcholu Vi,

IJ - 0 v ostatnich pflpadech.

V definid dostupnosti jsrne samozrejme mohli sc stejnym vyslcdkem mfsto slcdu pouzlt cestu,

- Mnosiny D+ (x) he snadno nalezt pornoci algoritrnu pro prohledavani gr afu uvedenych v kapitole 3, str. 47. Mnozmy D-(.1:) he no.le7.t. pOD7.itim tychz aigoritml'l na obraceny graf (graf, ktery zfskame obracenim orientace vsech hran). Jinou mosnosti je upravit algoritmy prohledavanl tak, aby hledaly cesty "proti smeru hran". Casove n.iroky jsou v obou pfipadech O(m + n).

Matici dostupnosti lze sestrojit po radc:ich n-nasobnyrn potrsitim nektereho 7. tikhto algoriunu v case O(n(m + n)). Elegantncjsi postup s C.asOvjffi odhadem O(nJ) je 7.alozen na 5.4.2, str, 80, 7.2.3, str, 114, a 7.3.4, str, 120.

5 .. 1.11 Veta. Silne souvisla kornponenta obsahujlct vrchol x rna. mnozinu vrcholu rovnu D~ (x) n D- (z}.

DflKAZ bezprostfedne vyplyva z 5.1.4 a z definic mnozlu D+(x) a D-(x). 0

5.1.12 Hleciani silne souvislych komponent. Pfedchozl veta dava jednodumy navod k sestrojeni silne souvislekomponenty, kteraobsahuje dany vrchol T.

Vsechl1Y silue souvisle komponenty pak lze snadno sestrojit opakovanlm tohoto postupu: zvolime vrchol, kkry llelc~i v zadl1c dosud nalezene komponentc, a najderne silnou kornponentu, ktera tento vrchol obsahuje, VyPocet konci, . [sou-li vsechny vrcholy zarazeny do komponent.

Tento primitivnf postup vyzadujfl cas O(k(m+n)), kde m je pocet man, n pocet vrcholu a k pol:et silne sonvislych komponent. V krajnim pf1pru:U\, napr. pro "temer acyklicky' graf, to je O(mn)- Proto uvedams (bez dllkazu) i podstatne rychlejsi algoritmus, jehoz casovy odhad O(m + n) je linearni:

5.1.13 Tarjamiv algor-itrnus pro hledarii silue .souvislych korrrponent uvederns jako ukazku dl'lmyslneho postupu, ktery je zalozen na prohledavani grafu do hloubky (viz 3.3.1, str: 52)" V podstate jde 0 bezne prohledavani do hloubky, v nemi se v;sak Davie provadl pornocne operace vzdy pfi pfichodu do noveho vrcholu, pfl zpracovani hrany a pfi navratu z vrcholu.

70

Kapjtola 5. Pojruy zalozene na orientovanjch cestacb

Algoritmus pfiiazuje kaidenm vrcholu x dye cfselne hodnoty, budeme je znaCit DF's(x) a. VZAD(X). Horlnoty DFS{X) [sou pofadova asia pridelovani v pofadi, v jakern byly vrcholy poprve navstiveny.'

Hodnota VZAD(X) predstavuje "zpM.ny odkaz": Lude rovna nejnizsimu poradovemu cislu DFS(Y) nektereho vreholu y, ktery byl navstlven drive Ile'l x (tj. me. uizsi DFS-ci:;lo), je orientovane dostupny z x po hranach dffve pouzitych pro postup do hloubky a po nejvyse jedne dalsi hrane a ptitom existuje vrchol l':, lezi'd ve stejne silne komponente jako y a z nehaz Je dostupny .jak vrchol x, tak i vrchol y- Pokud takovy vrchol y nsexistuje, bude VZAD(X) = DFS(X)- Vypada to slozite, ale ve skutccnosti ie manipulace s Cisly VZAO velmi jednoducha a spociva ve ti'cch vecech:

• Pi'ijdcme-li poprve do vrcholu II, bude VZAD(V) = DFS(U).

• Najdeme-li hranu, ktera vede z vrcholu v do vrcholu w, ktery jiz byl navstiven, ale jeSte neni zafazen do nejake komponcnty (tj. lezl v tzv, komponentovem ziisobniku, viz dale), pak, pokud DFS{W) < VZAD{U), sniiime hodnatu na VZAD(V) := DFS(W).

• Pi'i navratu z vrcholu w no vreholu v kontrolujeme, zda VZAD(V) ::; YZAD(W), a pokud ueplati, snlzrrne hodnotu na VZAO(V) := VZAO(W).

Vtip algoritmu Je v tom, ze VZAD(X) bude vzdy Drs-cislem vrcholu ze stejne silne souvisIe komponenty jako z. Vzdy bude VZAD(X) S DFS(X), a pokud bude pi'i navratu z vreholu x platit VZAD(X) < DFS(X), pak vrchol, do ktereho se vracime, bude ve stejne silne komponente jako vrchol z.

Pro shromaid'Qvanl vrcholu, ktere pati'i do stejne komponenty, se vjiornto algoritmu pauzlva. zasobnik. Je ti'eba zdura.:.mit" ze [de a zcela jilly (daJ~i) zasobnik, nes ktery se pouziva ph hledani do hloubky pro zapamatovsnl mivratu (viz 3.3 .. 1, str. 53) a ktery je sde skryt v mechanismu volani rekurzivni procedury (viz 3.3.9, str. 55). Pro odliseni mu bud-erne i'ikat komponsntovy zasobnik.

Kaidy vrchol bude no. konec komponentoveho sasobniku zafazen ve chvfli, kdy bude poprve navstfven, ale odstraneni ze zasobniku budeme provadse, teprve ai bude na konci zasobniku shromazdena celli silna komponcnta.

Lze dokazat, ze silnc komponenty se v komponentovem zasalmiku nikdy neprornichaji mezi sebou, Vrchol x, ktery byl z cele kompanenty navstiven ja.ko prvni (3. rna tedy ne.jniZsl DFS(X)), pozname podle taho, ze pro nej v okamziku navratu z tohoto vrcholu plat! VZAD(X) = DFS(X). Lze dokazat, ze vrchol x spolu s vrcholy, Here v Vito chvili j50U v komponentovem ZasObnikll za nim, tvoi'i (eelou) silne souvislou kcmponentu obsahujici vrchol x. Celau komponentu tedy marne pek.ne pohromade, m-uzemc ji tedy zasnamenab a odstranfme ji z komponentcveho zasobniku.

Prornenuou cilu.c_vrcholu pouiijeme pro pTideIova.flf Cfsel DFS a VZAD, ptornenrui cf.tat_kampollent slouzi k Cislovani nalezenych komponent.

Hodnota KOMPONENTA(X) budc pro kazdy vrchol x nejprve rovna -1, po zafazenl do komponentoveho zasobniku bude KOMPONENTA(X) = 0 a konecne po

1 21lal:eni Drs( l)) je odvozeno z anglickeho DeptIJ [o·irst Search, coz_ znumena iLludill! do hlnu bky.

5,1, Silna sou vislost

71

odstraaeni vrcholu :t z komponentoveho zasobniku bude KOMPONENTA(l:) rovna kladnernu poradovemu Cislu silne komponenty, ktera vrchol x obsahuje

program SilneKomponenty;

procedure HLEDEJ (v : vrchol);

begin

Citac_vrcholu := citaLvrcholu + 1;

DFS(V) := Citflc_vrcholu; VZAD(V) := DFS(v); zai'ad' v do komponeutoveho zasobniku; KOMPONENTA(V) := 0;

pro vsechny nasledniky UJ E V+(v) proved' begin

if (KOMPONENTA{W) = ~l) then

begin

(w Jc poprvc navstivcny vrchol} HLEDEJ(W);

{po navratu z vrcholu w upravime hodnotu VZAD(v)} VZAD(V) := rnin(VzAD(V), VZAO(W))

end

else if (K 0 MPO NENTA (w) = -0) then begin

{w je v kompcnentovem ziisobniku} VZAD(v) := min(VZAD(v) , Dr-s(w)); end;

end;

{pied navratem z vrcholu v testujeme hr anicj komponenty} if (VZAO(V) = DFS(V)) then

begin

{v je prvym vrcholem silne komponenty v zasobniku] c'itac_komponcllt := citac_komponent + 1;

repeat

vyjmi vrchol z korupenentoveho zasobniku l;l. oznae jej W; KOMPONENTA(W) ::= Citac_komvone.nt;

until w = v;

end;

eud; {konec proccdury HLEDEJ}

begin [vlastni prohlcdavani]

titaiL vrr;holU := 0; citaiLkompone.nt := 0;

pro vsachny vrcholy x proved' KOIvIPONENTA(:r,) := -1; pro vsechny vrcholy x proved'

if (KOMPONBNTA(X) = ~l) then llLEDEJ(X); end.

CASOVE NAROKY.: O{n + m).

Dilkaz spravnosti algoritmu i c!-l.Soveho udhadu he uajit v kuize [AHU74].

"" ,

72

Kapitola 5. Pojmy zalozene nil oriclltovilnycll cestlicll

5.1.14 P:fiklad. Pouzijeme Tarjamrv algoritrnus pro nalezeni silne souvislych kornponent v grafu s mnosinou vrcholn {1, .... , 11} a runozinou hran:

(1,5) (2,1) (2,7)

(3,9) (4,6) (5,4)

(5,9) (5,10) (6,5)

(9,8) (9,10) (10,3)

(10,6) (11,8)

(7,2) (7,11) (8,11)

Nasledniky kazc!fho vrcholu budeme probira.t ve vzrustajicirn pofadi jejich clset Pfi rucnim vypoctu je vhodne si graf behem prohledavani kreslit tak, aby hrany pouzite pro postup do hloubky byly eo nejpfehlednejsl (napr. zleva doprava a shora dohi jake na obrazku 5.2). Gfsla DFS a VZAO zapisujte do obrazku. Nepoplctte cislo :r:, ktsrym je vrchol pojmenovan, a hodnoty DFS(.r.) a VZAD{:C). Na nasem obrazku jsou hodnoty DFS(:C) uvedeny [ako exponent a nodnoty VZAD(X) jake index u dsla vrcholu x.

'r - ~ -, ,j - - - - - - - ~ - - - - - .,

I} I I

L_~ __ ,......... __ ~_.J

Obr.izek 5.2: K pi'ik\a.rlll hledani sUne souvislych koinponent 5.1.14. Vrcholy jsou oznaceny pcdlc schematu x~, kde c = DFS{X) a z = VZAO(X).

Postup vypoctu Tarjanovym algoritmem je tento:

- zjisfujeme, ze KOMPONENTA(l) =:- - I, tj, vrchol I neni v zadnc komponente;

- hledani do hlouhky proto zahajime ve vrcholu 1;

- postup do hloubky do vrcholu 1, 5, 4 a 6, pfidelena poradovatJsla 1, 7., 3, 4;

- po zpracovanl hrany (5, 5) je VZAD(6) =:- DFS(5) = 2;

- navrat z vrcholu 6 do vrcholu 4, VZAo(4) = VZAD(6) =2;

- navrat z vrcholu 4 do vrcholu5, komponentovy za.sohnik obsahuje posloupnost

(1,5,4,6);

- postup do hloubky do vrchclu 9, _8 a 11, pfidelena pofadova Clsla 5, 6, 7, komponentovy zasobnik obsahuje posloupnost (I, 5,4,6, 9, 8, ll);

ti.s. AC:YKllCKe grary

- po zpracovani hrany (11,8) je VZAD(ll) = DF's(8) = 5;

- navrat z vrcholn 11 do vrcholu 8, VZAD(8) = DFS(8) = 6;

- vrcholy 11 a 8 odebrany ze zasobniku a zara7:eny do komponenty 1;

- navrat; z vrcholu 8 do vrcholu 0;

- postup do hloubky do vrcholii 10 a 3, pfidelena poradova tisia 8 a 9, kompo-

nentovy zasobnik obsahuje posloupnost (1,5,4,6,9,10,3); - po zpracovani hrany (3,9) je VZAD(3) = DFS(9) ;:;; 5;

- navrut z vrchol 3 do vrcholu 10, VZAu(10) ;:;; VZAD(3) = 5;

- po zpracovani hrany (10,6) je VZAo(lO) ;:;; DFS(6) :::: 4;

uavrat z vrchol 10 do vrcholu 9, VZAD(O) = 4;

- navrat z vrcbol 9 do vrcholu 5, YZAD(5) = DFS(5) = 2;

- zpracovanfrn hrany (5,10) se nic nczmenl;

- vrcholy 3, 10, 9, 6, 4 a 5 odebrany ze zasobniku a zafazeny do komponenty 2;

- navrat z vrcholu 5 do vrcholu 1, VZAD(l) ::;:; Dt's(l) ;:;; 1, '

- vrchol 1 odebran ze zasobniku a zafazen do komponenLy 3;

- skoncilo prohledavanf z vrcholu 1, pokracujeme v kontrole, zda kazdy vrchol

jP. v nejake silne komponente;

- nove hledant do hloubky zahajime ~ vrcholu 2;

- postup do hloubky do vrcholu 2 a 7, pfidelena poradova Cislo. 10 a 11,

kornponentovy zasobnlk obsahuje posloupnost (2,7);

- po zpracovanl hrany (7,2) je VZAD(7) = DFS(2) = 10;

- zpraccvaniin hrany (7,11) se nic nezmeni;

- vrcholy 2 a 7 odebrany ze zasobnfku a zafazeny do komponenty 4;

- po navratn r- vrcholn 2 pokracujeme v kontrole, zda kazdy vrchol je v nejake

silne kornponente Vypocet tim konci.

5.1.15 Cvicenf, POIl7.ijt.e Tarjamiv algoritmus na graf z pTikladu 5.1.11, ale zacnete z jineho vrcholu a probirejte hrany v jinern poradi. Vysledne komponenty budou samozfejme stejne.

5.2 Acyklicke grafy

5.2.1 Aeyklicky graf. Acyklicky gmj ie orientovany graf, ktery neobsahuje zarlny eyklus (tedy ani smycku).

Podle 5.1.9 je kazdo. kondenzace aeyklickym grafem. Take naopak, kaida siinl'l souvisle, komponenta acykliekeho grafu rna podle 5.L7 pouzc jeden vrchol, acyklicky graf jc tedy sam SVOll kondenzad.

5.2.2 Veta. K~dj acyklicky graf G obsahuje alespoii [eden vrchol x, pro ktery d+(x) = 0, a alespof jeden vrchol y, pro ktcry d-(y) = O.

DUKAZ; Kdyby pro vsechny vrcholy platilo d I (x) > 0, existovaly by v grafu orientovane sledy a libovolne deice. Totiz z libovolneho vrcholu vychazi alespofi jedna hrana, oznacme ji napi. el, z jejiho konccveho vrcholu vychazi dalsi luana e~!,

74

Kapitola 5. Pojmy zalozene na orielltovanjch cest.avll

7. jejfho koncoveho vrcholu vychazt daW hrana e3 ald. Vc slcdu delsim nez I V CO) I se ovsam must opakovat vrcholy. Usek takovaho sledu mezi dvema ncjblizsimi vyskyty tehoz vrcholn by vsak by] cyklem. To v acyklickern grafu neni rllo~ue. Proto musi existovat vrchol X,. pro ktery d+(x) = O.

Dl'lkaz pro a: (y) je zcela an alog icky. 0

5.2.3 Topologicke usporadaru vrcholu a bran. Topologickl uspofGdanf vrchoM. grafu G je takova posloupnost VI, 11:2, ••• , 'Un vsech vrchohi grafu, ze kdykoIi vede orientova.I1a hranaz Vi do Vj, plat! i < j. Jinymi slovy: pocatccni vrchol hrany je v tcpologickem uspofadani uveden vzdy dfive nez koncovy vrchol teze hrany,

1'opologicke uspoftl.d6.ni hran grafu G je takova posloupnost vsech hran grafu ell ez, ... , em, ze kdykoli KV(ei} = .PV{Cj}, plati i < [. Jrnymi slovy: pro kaidy vrchol 'U plati, ze vscchny hrany z E-(v) pfcdcbazeji vsem hranam z E+(v} .

.Ie zrejme, ze existuje-li topologicke uspoi'iLdani vrcnolu nebo hran, graf je acyklieky. Dokaseme, zc taM naopak v ka7:d~m acyklickeru grafu existuje topologicke uspofadani vrcholu i bran.

Casto se take mluvi 0 tOPQ./ogickim ocislauani vn:holu nebo hran, Je to ohodnoceni (vrcholu nebo hran) souvislou vzestupnou posloupnosti pfirozenych cillel 1,2,.3, ... v pofadi, ktere je dano topologickym uspofadanim. Seradtrne-li tedy vrcholy (hrany) vzestupne podia topologickych eisel, dostaneme topologicke usporadani. Algoritrny, ktere hlcdaji topologicks Ilspoi'adini, casLo poskytuji.svfij vysledek ve forme topologickeho ocislovani.

5.2.4 Aplikace top ologickych usporadani. Pfedst.avte si, ze rmite vykonat niUakou mnezinu cinnost.i. Cinnosti musite vykonat jednu po druhe, tj, nemuzete nebo nesmite delat vice cinnosti najednou a vykonavini zanne c.innosti nesmi byt preruseno jinou cinnostL Vykonani uekterych cinnosti je navic podminsno dokon6mun nekterych jinych cinnostL Napflklad ponosku na levou nohu je tfeba obout pfed obutim Ieve boty a zaklady domu se delaji drive ucZ zdi. Hledate pfipustne poradf', ve kterem lze vykonat vsechny cinnosti.

Ginnosti muzeme poktadat za vrcholy grafu a podmlnky za jeho hrany: je-li CinlIost j podminena dokoncenim Cinnosti i, bude v grafu hrana z vrcholu i do vrr.holu i- Vsechna pi:ipustna poradl cinnosti pak vzajemnc [ednoznaene odpovidaji vsern topologiekym uspofadanlm vrcholu.

Mimochodem, srovnejte tuto aplikaci se sitovymi grafy 2.3.2, str. 42, a najdete podstatne odlisnosti ohou wah.

Dalsi (a vyznamne) pouziti topologiekych usporad.ini je v algoritmech, kten~ pracuji S acyklickymi grafy. Nfi_.kter~ algoritrny se vyrazne zrychli ne.bo zjednodusl, pokud nejaky dile! vY"Pocet provadfme pro vsechny vrchaly v pofadi podle topologickeho llsporadani vrcholu nebo pro vsechny hrany v pof'adi podle topologickeho uspof:Maru bran. Prikladern je vypocet sifoveho grafu 2.3.2, hledanl jidra acyklickeho grafu 5.5.4 neba hledaui nejkratsich cest v- acyklickych grafech 6.4.

5.2.5 Cviccni. Topologicke usporadan! vrcholu caste neni urceno jednoznacne .. Najdete prikJad grafu, ktery rna jen jedno topologlckc uspofadan! vrcholii. Najdete

5.2. Acyldidce grafy

75

nutnou a postacujici podminku, aby acyklicky grill mel jen jedno topologicke usporadanl vrcholu,

Topologicke uspofadanf pran take zpravidla nenf urceno jcdnoznacnc. N aj dete pi'iklad grafu, ktery rna jen jedno topologicke uspofadani hran. Najdctc nutnou a postacujicl podrninku, aby acyklicky graf mel jen jedno topologicke U5jJur,hliilli hran.

5.2.6 Veta [vlas tllosti acyklickych grafU.). N f!(:hf. G je orientovany graf. Pak misledujici podrninky jsou ekvivalentni:

1. G je acyklieky,

2. G nemA srnycky a ka5:ciA jeho si1m). komponenta rna jen jeden vrchol. J. Existuje topologicke usporadan! vrchohi grafu G.

4. Exissuje tcpologicke uspofadani hran grafu G.

DUKAZ: 1 ¢} 2: Vyplyva z vel 5.1.7, str, 68, a 5.L9, str, fi8.

3 :::} 1 a 4 :::} 1: Existence cyklu by byla v rozporu s topologickym uspofadanlm vrchohi is topologickym uspoHrlanlm hran.

1. =:} 3 aI :::} 4: Ditkaz plyne z vP.ty 5.2.8 a z algoritmn 5.2.7, ktery, je-li graf

acyklicky, obe topologicka uspofadan] nalezne. n

5,2.7 Algarit:mus pro top ologicke uspofaddni. Obc posloupnosti (vrcholf i hran] budeme vytvafet soucasne.

Jako VI vybcreme vrchol, do ktcrcho ncvede zOOm1 hrana (viz 5.2.2). Vrchol V1 a vsechny hrany z m!j vychazejid z grafu odstranime a zaradfrne je do pfislusnycb poslonpnosti (vrehol k vrcholum, hrany k hranam), Zbyvajfd graf je opet acyklicky, existuje v nem tedy opat vrchol s nnlovym vstupnirn stupnem, oznacme jej 112. Tento vrchol a vsechny brany z nej vychazejic! opet z grafu odstranime a zafadime do posloupnosti. Takto postupujeme, dokud nejaou uspofddany vsechny vrcholy a hrany,

Nechceme-Ii graf L-ehem vypoctu menit (coz obvykle nechc.erne), m('tzeme se rra vyse popsany postup divat i tak,ze pro za,hzenf do poslcupnosti vybirame vzdy vrchol, jehos vsichni pfedchudci jsou jiz do posloupnosti zafazeni,

Pro vypocet na poCi"t.ar.i se uvedeny pastup zpravidla dale upravuje tak, aby vyber dalsiho zaiazovam\ho vrcholu by] co nejrychlejsi. Pro kaidy vrchol x udrzujeme cislo C(x) rovne poctu bran, ktere do x vedou z vrchohi, ktere nejsou dosud zai'azeny. Hodnoty C(a:) se postupne snizuji 0. ty vrcholy, u nichz bylo takto dosazeno Duly, uchovavamc ve zvlastnfm seznamu M jako kandidaty na zarazeul do posloupnosti.

ALGOR1TMUS:

1. [Vypocet vstupnich stupnu.j Pro vsechny vrcholy x E V(G) poloiime C(x) := := O. Pro vscchny hrany e E E(G) provcdcme C(Kv(c)) := C(Kv(e)) -I- 1.

2. [Inicializace rrmoiiny M.l Do tnnosiny M vlozirne vseclll1Y vrcholy x takove, ie C(x) = 0..

76

Kapitola 5. P()jmy zalozP.I1f! nil orieIltovanych cestach

3. [Vyblr vrcholn.] Je-li M = 0, vypocet koniii, Je-li M =f. 0, odstranimc z M nektery vrchol, oznaeime jej x 1:1. zaradinie jej na konec poslouprrostl vrcholu.

4. lZpn.lcuvuni hran vychazejidch z vrcholu z.] Pro kazdou hranu e E E+(x) provsderne krok 4a a pak pokracujeme krokem 3.

4a_ [Zprncovani Many P..] Zaradirne hranu e na konec posloupnosti hran, oznaeime y:= Kv(e) a poloztme C(y) := C(y) - 1. Jestliie nyui plat! O(y) = 0, zaiad.fme vrchol y do mnoziny M.

CA!;Qvf; NARQKY: O(m + n), kde 11 je poce] vrcholii am pocct hran, POZNAMKA: P(}Zadlljeme-li vysledek vc forme topologickych oclslovanf vrchelti a bran, st<3.ci pfi zara7.ovillll (neLo namisto zai'azovani) vrcholu nebo hrany do ptislusne pos!oupnosti pl'ii'adit vrcholu nebo hrane vzdy dais! pfirozene cislo. Jsou k tomu potfcbne dva citace, jeden pro cls1a vrcholn a jeden pro Clsla hran.

5.2.8 Veta, Jsou-Ii po zastavenl algoritmu 5.2.7 zafazeny do posloupncsti vrchoW. vsechny vrcholy, j50U obe vytvofene posloupnosti (vrchoh) i hran) topologickym usporadanim.

Nejsou-li po zastaveni algoritmu 5.2.7 zaiazeny do posloupnosti vrcholu vsechny vrcholy, graf nell! acyklicky.

DUKAZ: Behem prace algoritmu vzdy tp.~<me pred vykonanirn kroku 3 a tesne po vykonani kroku 4 plat]:

C(x) = por:et hran, ktere do x vedou z vrcholu, ktere dosud nejsou zafazeny do posloupnosti vrcholu,

M = mnosine vsech vrcholu, pro kt.erp. plati C(x) := 0 a ktere dosud nejsou zarazcny do posloupnosti vrchohl.

Ve chvili, kdy je vrchol x zafazovan do posloupnosti vrcholu, je C(x) = 0, vsichni pi'edcMdci vrcholu x jsou jiZ tedy do posloupnosti zai'azeni.

Ve chvili, kdy je zara:>:ovana hrana e do posloupnosti hran, pro jeji paca-teeni vrchol x platf C(x) = O. Vsecbny hrany z E-(x} jiz tedy byly zpracovcny v kroku 4a, a byly tudiz zarazeny do posloupnosti hran,

Pokud by algoritmus nezai'adil vsr~chny vrcholy a presto by doslo k vypra.zdneru mnoZiny M, pak by v podgrafu indukovanem nel.afazenjrni vrcholy rnely vsechny vrcholy kladny vstupni stupeii C(x). Tento podgraf by tedy podle vety 5.2.2 obsahoval cyklus, tlldl:Z by ani pirvodnl gra£ nehyl acyklicky, Aig-oritmus tedy zaiadi vsechny vreholy, a tedy i vsechny hrany, 0

5.2.9 Topologicke uspofadani hledauirn do hlonbky, Pri prohledavanl grafu do hloubky jsou navraty z vrchelu (tj. krok 5 algoritmu 3_3.1) provadeny v poradl, ktere je obraeenirn topologickeho usporadini vrcholU.

5.3. Koren a koienovy strom

77

5.2.10 Cviceni. Poufijte oba algoritrny 5.2.7 i 5.2.9 k topologickemu uspotadan! vrchohi grafu z obr. 5.3. Najdctc vscchna topologicka uspararlani vrchohs. Pozor: to, co je uapsano u vrcholu, jsou jrnena vrcholii, nikoli topologicke ocislovani.

1

9

Obrazek 5,;!: Acyklicky graf.

5.2.11 Cvicenf. Pfedstavte si, ze snatc topologicke uspofadanl vrcholii. NaVTh~ llI3te jcdnoduchy zptisob, [ak z nej ziskat topologicke uspofadan! hran, Navrhnete i opacny postup (z topologickeho usporadani hran topologicke usporadani vrchohi).

5.2.12 Topologlcke usporadani a korenove str omy, Kil.ZdY kofenovy strom je acyklickyrn grafem, Poradi vreholu preorrler rlefinovane v 1.7.2, str. 23, je specialnim pHpadem topologickeho l1spoi'idani vrcholu, Podobne pofadi postorder je obracenym topologickym uspofadanim vrchoh'i.. Srovnejte algoritmy 3.3.13, str , 56, s algoritmem 5.2.9.

5.3 Koren a korenovy strom

5.3.1 Koren grafu. Vrchol x E V(G)[ je koien grafu G, jestlize D+ (x) = V(G), tj. jcstlizc kazdy vrchol grafu G je oricntovane dostupnj z vrcholu z.

Gra.f na ohr. 5.4 mt!. Hi korf'..ny a, b, c.

a

b

c

Obrazck 5.4: Graf se tfemi kofeny.

Pozuamenejrne, ze graf je sUne souvisly pnive tehdy, kdyz ka.ZdY jehu vrchol je jcho kofeuem. Mnozina vsech koreull tvoi'i vZdy I:liluil souvislou komponentn.

5.3.2 Kof'enovy strom. Pfipomenme, ie v 1.7.1, str. 21, jsme dcfinovali kofcnavy strom jako crientcvany graf, v IlClllZ existuje vyzuacny vrchol r, tzv. koien, takovy, z.e do kofene nevedc zadna hrana, do kazdeho jinehc vrcholu vede pfesne jedna hrana a navic jsou vsechny vrcholy z koi'ene T orientovane dostupne,

Ve vete 5.3.4 ukazeme, ze korenovy strom jsme mohli take ekvivalentne definovat jako graf, ktery lc stromem a rna kofen.

78

Kapitola 5. Pojroy zruoiene na orientovanjeh cestlicll

5.3.3 Veta. V kaidem orieu tovanern grafu, ktery roo. karen, sxistuje faktor, ktery ie korenovym stromom.

DUKAZ: Vezmeme kofen grafu jako vycuozi vrchol a pouzijrne llclctery z algoritmu pro prohledlivani grafl'1 Z kapitoiy 3 s upravou 3.1.4. Hrany obsll.ieue v hodnctach ODKUD tVOrl kofenovy strom. (Srovnejte s cl6ka:zem tvrzeni 4.2.11, ser. 60.) 0

5.3.4 Veta. Nechi G je orientovany graf 5 n vrcholy, 1'1,2': 1. Potom nas!edujid podminky jsou ekvivaientni:

1. G rna koren a je stromem.

2. G rna kofen x a do kaZdeho vrcholu vede presne jedna orientovana casta z x

(tj. "Z X do z vede pouze trivialnl cesta).

3. G rna karen a po odstraneni [ibovolne hrany jiz koren nerna,

4. G rna karen x takovy, ie d~(x) ::;;. 0 a pro kazdy jiny vrchol y f. z plat!

J~(x) == 1.

5. G neobsahuje cyk!us a obsahuje vrchol x takov)" ie d~{x) == 0 a pro ka.zdY

vrchol y .J. :r plati d- (y) ::;;. l.

6. G rna karen a neobsahuje krusnici.

7. G rna kofcn a rna nejvyse n ~ 1 hran.

DUKAZ: DUkaz se do znacne miry opira 0 analoglckou vetu 4.2.9, str. 59, ktera charakterisuje stromy.

1 ::::>. 2: Z vlastnosti koreae grafu plyne, ze do kaideho vrcholu z nej vede

alespoii jedna orientovWla. cesta, Kdyby tam vedly dye ruzne cesty, bylo by mozna z nich vybrat krusnici (po jedne ceste vpred, po druM vsad]. To by ale byl spor s predpoklOOem, ie graf G je strom.

2 ~ 3: Vszmeme iibovolnoll hranu e. Do jejiho pocatecnilio vrcholu u vede

presne jedna cesta z kofene grafu, do jejiho konooveho vrcholu v take. 'Ioznamena, ze jedina cesta do vrcholu v obsahuje hranu e, jinak by existovaly cesty dve, Po odstraneni hrany e jiz. proto neexistuje zadna cesta z kofene grafu do vrcholu v.

3 => 4:. Z existence korene plyne d~(y) ?: 1 pro y ¢ x. Kdyby pro nejaky vrchol y bylo d-(y) > 1, ex.istovaly by dve hrany koncicl v y. PonevOOi do [ejich pobitecnich vrchahi vedou cesty z kofene x, vedly by z z do y dye nizne cesty. Vrchol z by tedy zllstal korenem I po odstranent nektere z hran konctcich v y .. Tim je dokazano, ze d-(y) = 1 pro v~echna y ;p x. Kdyby nejakci luana koncila v koreni z , by\o by ji mosno odstranit, aniz by vrchol x prestal byt kofenem, Z tohoplyne,

i.e d~(x) =- O.

4 => 5: Z existence korene plyne (slaba) souvislost. Z vlastnosti vstupnich

stupnu plyne, ze grafG rna pfesne n~ 1 hran. G je tedy stromern, a proto neobsahuje kruznicl. Nemuze tedy obsahovat ani cyklus ..

5 => 6: Vyjdcme z libovolneho vrcholu y l' x a prochazejme grafern proti sm~ru hran, Z kasdeho vrcholu z "# z illuzeme pokraeovat pouze jednim zpusobern, nebof d~ (z) :::: l.Zadnym vrcholem nemuzeme projit dvakrat, nebo~ graf neobsahuje cyklus .. Nase cesta tedy konCl ve vrcholu x, pro ktery platt d-(x) = O. Vrchol x jc

tedy koi'encm grafu G.

5.4. Trenzitivnl uzibrer a redukce

79

. I

I ~

G =? 7: Z existence korcne plync (slab a) souvislost, proto graf G [e stromem, a obsahuje tedy presne n - 1 hran:

7 :::;>, 1: Z existence koren~ plyne (slaba) souvislost, graf G je tedy stromern. 0

5.3.5 Cvlcenl, Bylo by mozne pIidat k vete 5.3.4 nasledujiei ti'i tvrzeni?

8. G je souvisly a obsahuje vrchol x takovy, Zoe d-(x) = 0 a pro kazdy vrchol Y i- x plati d- (y) = 1.

g. G neohsahujs kruznici a obsahnje vrchol .1: takovy, 7.e s: (x) = 0 a pro kaZdy vrchal y i- z plati d-(V) = 1.

10 G rna kofan a neobsahuje cyklus,

Jinak receno, jsou i tato tfi tvrzeni ekvivalentni s tim, ze graJ G jc korcnovym stromem?

5.4 Tranzitivnl uzaver a redukce

Prosty graf mUieme pokladat za mnozinu s bimirni relaci (viz 1.3.5, st.r. 17, it 1.12.4, str. 34). N€ktere u::titecne vlastnosti prostyeh gra6i proto mM:eme s vyhodou studovat pomoci relaci, Vsechny grafy, a nieM bude fee v tomto oddile, budou orientovane a proste.

5.4.1 Tranzitivni gl"af, transitfvni uzav€l". Prosty graf C = (V, R) jc tronxilivlli, jestliie rei ace R je, tranziti vni, tj. jcstlize ((:<:, y) E R & (y, z) E R) => (x, z) E E R.. Graf'je f"fo;jle3:ivlli, jestlii.e relace R je reflexivni, tj .. jestlize graf obsahuje vsechny smycky,

Tranzitivni uzavlr grafu G je nejmensi tranzitivni graf, kteryobsahuje G jako

svilj podgraf. Znacime jej G+. .

Tnmzitivni a "cjlca;ivl1i uzaver grafu G [e nejmensi graf, ktery le reflexivni a tranxitivni a klery obsahuje graf C jako svuj podgraf. ZnaclIIle jej C".

G

Obrazek 5.5; Oricntovany graf a jcho tranzitivni uzavi;ir,

N a obr. 5.5 je nakreslen graf G a jeho tranzitivnl uzav.& G+. Tranzitivnf a reflexivni uzaver C· bychorn z grafu G+ dostali pIidanim srnycky ve vrcholu x.

Je zi'ejme, ze tranzitivnl i trauait.ivni a reflexivni UZRver existuje ke kaz.Jemu grafu - staCi pfidat hrany, ktere jsou nutne pro splneni tranzitivity II. pI'lpadne

80

Kapito/a 5. Pojmy zaJozene na orientovanjcb cestach

reflexivrty. Tento postup je sice horlne neefektivul, ale je z nej patrue, ze kazdy gr/lf je faktorem sveho tranzitivniho i tranzitivuiho a reflexivniho uzavern.

Nasledujici vetil shrnuje nejzajimavejs] vlastnosti traneitivaiho uzaveru,

5.4.2 Veta (vlastnosti tra.nzitivniho uzaveru). Nech€ G, II jsou proste.grafy. Pak platf:

1. V grafu C- vede hrana z vrcholu i do vrcholu j pnive tehdy, kdyz v grafu G existuj e sled z i do s.

2. V gr-afu C+ vede hrana z vrcholui do vrcholu i prave tehdy, kdyz v grafu G existuje netrivialni sled z i do j.

3. Matiee sousednosti grafu C· je roy nil matlci dostu pnosti grafu G (viz 5.1.10, . str. 69).

4. Plat.! (C·)· = C·, (G+)+ = G+.

5. JestliZp. G je podgrafern grafu HI pak take G+ je podgrafern H+ a C· je podgrafem H' .

DUKAz: Tvrzeni 3, 4 a 5 vyplyvaji okami,ile z tvrzeni 1 a 2. Dokaz.erne pouzs tvrzeni 2, tvrzeni 1 se dokazuje pcdohne.

Uvazujme graf G1 definovany takto: graf G' rna stejnou rnnosiau vrcholU jake graf G, tj. V(G') = V(G), a v grafu G' vede orientovana hranaz vrcholu i do vrcholu j prave tehdy, kdyz v puvodnim grafu G vede netrivialni orientovany sled zi do j. UbiZeme, :Ee plat! C+ = G' .

Je zi'ejme, ze graf G' je tranzitivnf: Existujf-li sledy z i do j a z i do k, pak existuje take sled z i do k . Tedy G' obsahuje graf G+ (nebof G+ je nejmensi tranzitlvni). Zbyva dokazat, ze take G+obsahuje G', tj. _kazd:i hrana z G1 leii take v G+: Neche (x, y) je. hrana leifei v G1• Pak v Gexistuj e sled prochazejici vrcholy x = 110, 1)I, 1)"2, ••• ,Vk = y. Pak ale v G+ musi byt diky tramdtivite obsaseny hrany (Vo, V1), (vo, V2), (Vo, 113)·, ..... , (Vo, 11k) = (x, y)_ 0

5.4.3 Hleddni tranzitivniho a reftexivniho uzaveru spoclv:i ve zjistovini orientovane dostupnosti. V grafu 0 n vrclrolech to lze udelat bud' n-nasobnym prohledenim grafu v case O(n(m -I- 71)), nebo podle 7.2.3, str. 114, a algoritrnem 7 .. 3.1 v ca.~t:l 0(n3).

5.4.4 'I'ranzitivni redukce. Tmnzitivnf redukce grafu G je minhnalni podgraf grafu G, ktery rna stejny tranzitivni uzaver jako graf C.

Jinymi slovy: Graf H je tranzitlvnl redukd grafn G, jestliie:

1. H je podgrafem G.

2. H+ == G+.

3. Je-li H' podgrafem grafu H a H of:. HI, pak H' jii nespliiuje podminku 2.

5.4. Txeuzitivni uzrivcr a iedukce

81

Na obr. 5.6 jsou nakresleny dva grafy IiI I II", z nichZ kaZdy jetranzitivni redukci grafu G Z obr. 5.5.

Je zf'ejme, ze tranzitivni rpdukce neni vzdy urcena jcdncznacne.

Obrazek 5.6: nve I"uzmi tranzit.ivui redukcc !!,raiu G :.: obr. G.5.

Snadno Ize nahlsdnont, ze tranzitivni redukce existuje (alespon jedna) pro kazdy graf a ic tranzitivni redukce je vZdy faktorem piivodniho grafu.

5.4.5 Cvi.ceui. Najdete graf, ktcry rna dye IUZlIC trcnzitivni redukce s ruznym poctem bran. (Navod: st.ad ti'i vrcholy.)

5.4.6 Hlcd:ini tranzitivui redukce. Nejprve popfseme velrni [ednoduchy postup, Probinimc postupne vsechny hrany grafu G. Pro kazdou hrann e = (x,y) zjistime, zda vrchul11 je orientovane dostupny z vrcholu x po hranach z mnoziny It \ {e}, tj. bez pouzit! hrany c. Pokud je dostupny, hranu e z grafu odstranime, nebof i bez nl bude mit graf st~jny tranzitivni uzaver. PokuJ dosLuPIl'y neni, pall: naopak hranu e vynechat nelze, nehof bez ni by byl tranzitivni llZaver jillY (mensi). Vysledkem tohoto postupu je jiste tranzitivnl redukce, neboe v grafu zlIsta.ly pOllze hrany, ktere nelze odstranit, anii by se zrnenila relace dostupnosti. Tento primaea.ry postup vyzaduje cas O(m(m + n)), kde n je pocet vrcholfr a. m je pocet hran.

Hledani tra.nzitivni rsdukce he nrychlit nekolika triky:

V danern grafu G najdcme silne souvi.si€ komponenty a nejprve se postarame o hrany, ktere veduu mezi silnyrni kornponentami. Sestrojimc kondenzaci J( grafu G a. najdeme tranzrtivni redukci S teto kondenzace, Kondcnzacc K jc zpravidla mensi nez pirvodni graf a navic je acyklir.ka. K htedanf tranzitivni redukce SIze POllZlt v.yse POPSMY jednoduchy postup, rychlejsi algoritmus pro acyklieke grafy popiseme dile v 5.4.9. Pokud v grafu S mezi silnymi komponentarui lit, H2 vede hrana, pak v pjrvodnhn grafu G pcnechame ze vscch hran mezi HI, Hz jen jednu (kteroukoli), ostatni o dstranirne , nebof se tim nezrneui relace dcstupnosti, Pokud v grafu 5 mezi komponentami HI, H"J. zooml. hrana nevede, pak v puvo[nim grafu G odstranlme dokonce vsechny hrany mezi komponentami H1, H~ a to opet proto, ZC jejich odstranenlm se nezmeni rela.ce dostupnosti.

Dale ss budeme zabyvat kasdou silnoukornponentou zviciSC. Na komponentu pouiijeme Tarjanuv algoritrnns 5.1.13. Z hran uvnitr komponenty ponechamc vscchny hrany, Here byly v Tarjanove algoritmu po'uzit.y pro postup do hloubky, a z os tatnich hran pak pro kaidy vrehol x ponechame jen t.u hranu, ktera z Ilej vede do vrcholu s ncjnizsim cislem DFS. Ostatni hrany odstranirne. Takto redukovana kom-

82

KapitoJa 5. Poiiav zalozene na orientovsnyci: cestach

ponenta bude mit nejvysc 2n - 2 bran, ma-li n vrcholu, ale bude stale silne souvisla [nebof kdybychom znovu pouzili Tarjanuv algoritmus, vypocetl by tytei hodnoty DFS a VZAO). Nynl tedy st.aCf provest -ryse popsany test dostupucsti pro hrany z takto redukovans komponenty. Celkovy ca::Jovy odhad je D(n(m + n)).

5.4.1 Vata. Prosty acyklicky graf rna vii.dy jen jednu tr anzitivni rerlukci. DUKAZ provedeme sporern: Neche graf G :::: (V, R) rna uye nhne tranzitivni redukce G1 = (V, R1), G2 = (V, Rz). Ukazeme, ze je to ve sporu s acyklicnostl.

Vezmeme nejake topologicke ocislovan! vrchohi grafu. Ponevads 01 t= G2, existuje hrana, ktera je obsazena pouzc v jedne z obou redukci G1, O2. Mezi vsemi takovjmi hranami vybereme tu, jejiz vrcholy majf nejmensi rozdll topologickych 6se!. OZIIaCme ji e. Pfedpokladejme, ze e E u, \ R2 (kdyby naopak e E R2 \ R1, byl by dtlkaz podobny). Ponevads vrchol Kv(e) je diky hrane e dostupny z Pv(e) v grafecb G a Gl, rnusi byt dostupny i v grafu G2• V G2 tedy existuje orientovana cesta C z vrcholu Pv(el do vrcholu Kv(e), ktera rna alespoii dve hrany, Kazda mana z tete cesty rna roxdll elsel v topologickem llspofadani osti'e mensf nei. hrana e. Vsechny hrany cesty C nemohou lezet soucasns v R2 i v Rli nebof jinak by graf G1 nebyl rerlukcf (bylo by mozue vyfadit hranu e). Tedy nektera z hran cesty C lezi v G"}.. ale nikoli v G1, pfitom vsak rna mensi rozdil Cl::;el ne:1. hrana e, coz je spar s vol bou hrany e.

Acyklicky graf tedy nemuze mit dye nizne tranzrtivnf redukce, 0

5.4.8 Veta. Maji-li dva acyklicke grafy zyz tranzitivni uzaver, rnaji take tutez tranzrtivni redukci,

DUl(AZ: Vezmffine Iibcvolny acyklieky graf G a [eho tranzitivni uzaver G+. Tranzitivni redukce obou tikhtografU jsou definovany stejne: minimalni podgraf, jehoz t.ranzitivni uzewer je raven grafu G+. Z vety 504.7 pak plyne, ze oba grafy G i G+ majl stejnou tranzitivni redukci.

Mame-li tedy dva acyklicke graly G, H, ktere maji stejny tranzitivni uza-ver G+ = H+. pak vsechny ti'i F;rafy, totiz G, G+ = H+ a H, majf stejnou tranzitivnf rcdukci. 0

5.4.9 Hledanf tranzitivni cedukce acykllckdho grafu. Peedchczf vety 5.4.7 a 5.4.8 umoznujl hledat tranzitivnf redukci acyklickehografu trochuefektivneji, nei jsme uvedli v 5.4.4. Rozhodnuti, zda nektecou hranu muzcme l:i nemuieme vynechat (aniz hychom narusili dostupnost), totiznezruezi na lorn, ktsre hrany jiz byly vynechany drive. Muzeme tcdy postupovat napT takto:

Pro kaidy vrchol x nalezneme mnoziny D-(x) a D+(x) (viz 5.1.10) a vymazsme vsechny hrany, ktere zacfnaj] v D-(x) \ {x} a konci v D+(x) \ {x}.

Tento post up vyzaduje ca.'> D(n(m + n». V knize [Plesnik83] je uverlen rychlejs] algoritmus s CCl.'lovYm odhadem D(nnlR + m), kde mR je pocet hran v tranzitivni redukei.

5 -5. J adro graft! .<1. h ry

83

5.5 Jadro grafu a hry

5.5.1 J adro grafu je mnoeina vrchohi I< takova)ze platf V+ (K) n J{ = 0 a take KUV-(K) = V(G).

Jinymi slovy, 2 jwa vedou hrany pouze mime jadro a. ka.zdY vrchol grafu bud' ~am le~i v jadru, nebo z; llej vede alespen jedna hrana do jadra,

5.5.2 Hra dvou hnico., ktera rna konecny poiiet stavu a v nlz Se bniCi stHJaji v tazich, muze by-t modslovana grafem. Vrcholy odpovidaji stavt"Ull hry, hrany pledstavuji pripustne tahy, tj. zrneny stavu. Pn'i.beh hry odpovida sledu, ve kterern jsden hrae volil vzdy Iiche a druhy hrae sude hrany, Jestlise hrae nemuie tahnout, tj. jestliie z pHslusneho vrcholu ncvyohazi zactna hrana, pak tento hrae prohral. Obsahuje-li graf cyklus, lira ueznusi nikdy skoncit.

Kszdeho hrace jiste napadla otazka, jak hnit, aby :!.arucem'l neprohral. Pokud graf hry rna jadro, \ze neprohravajici strat.egii vyjadi'it vP.t.ou:, "tahni do jMra".

Pokud se vdm pcdaff svym tahern dostat do nektereho vrcholn jidra., pak sice nelze zarufit , ze vyhrajete,ale lze zaruCit, ze neprohrajete. Pokud totiz soupef vl"Jbec lllu~e tahnout, jeho tab povede ven z jadra, Vy pak rnuzetetahnout, a to dokonce zpet do jadra, Jiuak reeeno, af soupef udela cokoli, vy budctc moci ve hie pokracovat, a t.o 7.pl"Hmhllrn, ktery vam zachova ,,:.:a.luku dalsiho tahu".

5.5.3 Pi'iklad, Na hrornadce, je 1:5 zapalek. Dva hnl.ci se stfidaji V tip.kh, tab spoClva v odebrani 1-3 zapalek. Kdo nem.uze'tahnout, tj. kdo uZ nerna co odebrat, prohral, Gra:f tela hry je na obr. 5.7, kde jadro grafu je vyznaceno plnymi te&a.mi.

5

Obrazek 5.7: Graf hry z piikla.du 5.5.3.

5.5.4 Hledanf jadra. Ne lcazdy orientovany graf rna jadro. Pfikladem je graf o t:i'ech vrcholecn a tfech hranach, ktcrc tvofi cyklus, Naopak ncktcrc grafy maji jader nekolik. Pfikladem je graf 0 ctyrech vrcholech a ctyrech hranach, ktere tvoi'i cyklus, V pine obscnosti je 610ha najit jadro dokonce NP~tezbi. V rade specialnlch pfipadf; vsak je' existence jadra zarucena a mnohdylze jadro i snadno sestrojit.

Kaidj aeyklickj graf rna presn?! jedno j . .idto. Lze je sestrojit tack, Zoe probirame vrcholy V obracenem topologickem pofadi: vrchol x z;atadfme do jadra prave tehdy, kdyZ:i;l,dny jeho naslednik do jadra zafazen nebyL Tukto Ize jadro sestrojit 'lease O(m+n).

Take kaZdy orientovany graf ktery neobsahuje cyklus Iiche delky, rna jadro, Dlikaz i s navodem k hledani jMra lze najit v knize [Plesnik83j. Daisi podrulmosti o hrach a [adrech lze najit v knihach [Bergen, Berge58].

84

Kapitola 5. PojmyzaiuzHne na. orientovan:ych cestticb

5.5.5 Cvicenf. Ve hie z pI'ikladu 5.5.3 zmeiune pravidla: prohrava brae, ktery odebere posledni zapalku. Graf teto illohy je jiste acyklicky; ma tedy jadro. Na.krBSlete tento graf a jiidro najdete.

85

Kapitola 6

N ojkr atsi cesty

lJlohy u nejkratsich cestach pat!'! k nejcasteji aplikovauyrn uloham teorie gram.

6.1 Typy uloh a zakladnf fakta

6.1.1 Dlohy 0 nejkrat.stch cestjich. Mejruc oricntovany graf G, jehoz kaa.di hrana e E E(G) je ohodnocena realnym ci:;lem a(e), kterc nazyvarne dilkou hrany Delk« cesty je soucct delek jednotlivych man tvoficieh cestu (viz 1.5.5, str. 20) . . J sou-li x, y dva vreholy grafu, pak vzd6./e.nost u (x, 11) z vrchol u x do vrcholu y definujeme jako delku nejkratsi cesty z z do y, pokud vubec nejaka cesta z x do y existuje. Jostlise neexistuje, definujeme vzdalenost u(x, y) = 00.

Ukolem je najit nejkratsi oriantovanou eestu (popi'. vzdalcnost):

a) z daneho vychoziho vrcholu do daneho cfloveho vrcholu,

b) z daneho vychoziho vrcholu do kaZdeho vrcholu grafu,

c) z kaZdeho vrcholu do daneho cilovcho vrcholu,

d) mczi vsemi uspofadanymi dvojicemi vrcholu.

Dale se budeme zabyvat pouze i'esenfm uloh b) a d). Ulohu c) lze snadno pi'evest na ulohu b) obracenim orientace hran (nebo jednoduchou upravou algoritmu). Oloha. a) by-va. i'esena pomocl algoritmu urcenych pro 610hy b), c) nebo d), postup, ktery- by byl obecne vyhodnejsi, neni znam, Nektere algoritmy (a to jen v nekterych typech grafU.) [sou vsak schopny rozpoznat mosnost korektnfho ukoncenl vypoctu ve chvili, kdy je vypoctena definitivni hodnota pro cilovy vrchol, Na tutu moznost dale v textu vzdy upozornime (viz 6.4.3, 6.5.4 11.6.6).

Ve vsech zminenycn ulohach pfipouetfme i zap orne delky hran. Neni to t.akovy nesmysl, jak to nil. prvy pohled vypada, V roli delek hran totiz rnohou vystupovat naptiklad naklady nil. pruchod hranou, Zaporna. delka pak ndpovida situaci, kdy za pruchod hranou dostaneme naopak zaplaccno, viz 2.2.8, str. '11. Je ovsem pravdou, zc ulohy.ikde delky hran jsou nezaporne, jsou v praxi castcjsi a jejich teseni je 0 neco snazsi (viz 6.5, str. 100).

86

Kapitola 6. Nejkratsf cesty

Obtlznost ulohy oneikratsich cestach podstatne zavisl na tom, zda grill obsahuje cyklus se zapornou delkou. V Lete kapitole se pfevazne budernc zabyvat pripadem, kdy v grafu cyklus se zapornou delkou nani a kdy je reseni relativne snadne (existuji pro ne polynomialni algoritmy). Pokud v grafu cyklus se zaporuou delkou existuje, jc obecna uloha 0 nejkratsich cestach NP-tczka. Zjist:ovanirn cykhi se zapornou dclkou se budeme zabyvat v 6.8.

Hledame-li nejkrats! cesty v multigrafcch, muzeme pi'edem z kazde mnoziny rovnobeznych hran vynechat vsechny krorne nejkrats] z nich, aniz by to melo vIiv na delku nejkratSi cesty. Take smycky muzeme vyloucit , nebof nemohou byt obsazeny v zadne ceste.

Pro i :I j oznacme ali, j) dclku nejkratsl hrany vedouci z vrcholu i do vrcholu j.

Pokud 'lacina hrana z i do i nevede, polozrne a(i,j) = 00. Dale polosme a{i,i) = O.

Hodnoty a(i,j) muzeme uspofadat do tvaru rnatice, buderne ji anacit A a uazyvat matici delek brar: Tato matice ohsahujs vsachny informace, ktcre jsou treba k vypoctu vzdaleaosti.

Podobne muieme vysledne vzdalenosti U.(ilj) uspofadat do tvaru matiee, kterau znacimc U a nazyvame matid vzd6.1enosti.

6.1.2 PHbuzne ulohy. Hledani nejdelsich cest muzeme prevcst na hledani nejkratsich cest obracenim znamenek u delek vsech hran. Casteji vsak pouzivame upraveny postup, viz. nap!'. 6.4.5.

Hledani uejkratsich neorientovanych cest Lze prevest na hledani nejkratsich orientovanych eest tim, ze kazdou manu nahradime dvcrna opacne orientovanymi hranami teze {Mlky. Pokud delky puvodnich hran byly nezaporne, lzepotom pouzit rnetody vylosene v teto kapitole. Jestlizc V· puvodnim grafu mala nejaka hrana zapornou de-lim, vznikne y odvozcnem grafu ZIl,porny cyklus a iiloha je pale podstatne obtiinejsl. Pokud puvodni graf obsahuje hrany zaporne delky, ale iadnou kruznici zaporne delky, lze takovou ulohu pi'evest na hIed ani nejlevnejsiho perfektnfho parovani, viz [Lawlf'r76, Demel91j.

Nekdy je treba hledat nejkratsi nebo nejdelsl cesty v siti, ve ktere jsou ohodnoceny vrcholy nebo vrcholy i hrany a ve ktcre je delka cesty definovana jako soucet delek vsech vrchohi i. hran lezicicb na tete oeste. Hledani nejkratsich ti nejdelsich cest v takove sibi lze pfevest na drive popsanou ulohu v sit], ve kten~ [sou ohodnoceny pouze hrany. Lzc pri tom postupovat takto:

Kazdy vrchol v puvodnfho grafu nahradime dvojicf vrcholu V1, V2, spojime je hranou ev z vrcholu VI do 112 a teto nove hrane dame hodnotu (dclku) puvodniho vrcholu v. Hrany, ktere v piivodnim grafu konCily ve vrcholu u, pi'esmerujeme, aby koncily ve vrcholu VI' Hrany, ktere z vrcholu v vychazcly, nahradime hranami, ktere budou zaCinat ve vrcholu 112. Pffklad ta.kove upravy grafu je nakreslen n:a obr. 8.1, str. 132, viz take obr. 2.3, str , 43 (sitove grafy).

V novern grafu platt, ze v kazdem sledu (a tedy i v kaide ceste) se sti'fdaji hrany, kterym v puvocinfm grafu odpovidaji vrcholy, s hranami, kterym v Pl'lvodnim grafu odpovidaji hrany. Jestlize v piivodnim grafu cesta prcchazela vrcholern v, pak teto cp.ste v novem grafu odpovida cesta, ktera procluizi hranou ell'

6.1.3 Veta. Jestlize v grafu existuje nejaka cesta z vrcholu a do vrcholu b, pak v nem existuje i nejkratsi ccsta z a do b.

DUKAZ: Pocet bran v ceste-je omezen poctem vrcholu grafu, Vsech cest z a do b je tedy konecne rnnoho, proto nekt.era z nioh je nejkratsi, 0

po-zNAMKA: Pro sledy podobna veta neplati: Obsahuje-Ii graf cyklus se zapornou delkou, pak pro nekteTt~ vrcholy a, b sice existuje sled z a do b, ale neexistuje nejkrats] z nich. Ke kaidernll sledu lze tat,ii vytvorit sled 0 neco krats], a to tim, ze budeme dostatccae dlouho prochazet onen zaporny cyklus,

6.1.4 Veta. Jestlize v grafu neni cyklus so z.ipornou nebo nulovou delkou, pak kaidy nejkratsi sled z vrcholu a do vrcholu b .ic i ncjkratsi cestou z a do b.

Jestliae v grafu neni cyklus se zapornou delkou, pak kazdy nejkra.t.sl sled z a do b obsahnja nejkratsi cestu z a do b a delka Vito cesty je stejna,

DUl<AZ: Prve tvrzeni je snadne: Hdyhy nejkratsi sled nebyl cestou, obsahoval by cyklus a ten by mel kladnou delku. Jeho vynechanim by bylo mozuo sledzkratit, nebyl by tedy nejkratsl.

Druhe tvrzenl je jen malieko ohtiznej1l.1: Neni-Ii nejkratsi sled .iii sam ccstou, obsahuje cyklus. Delka tohoto cyklu nemllze byt ani zaporna, ani kladna, .ie tcdy nulova, Vynechanim tohoto cyklu se dslka sledu nezmeni. Opakovanyrn vynechavanfrn cyklu nakonec ziskarne cestu teze delky jako nejkratst sled, tedy nejkratsi cestu, 0

6.1.5 Veta (trojuhelnikova. nerovnost.). Jestli7.e graf neobsahuje cyklus se zlir pornou delkou, pak pro vsechny trojice vrcholii i, i, k vzdalenost 11. splituje nerovnost

(6.1) u('i,j) ~ u(i, k) + u(k,j) .

POZNAMKA: Nazev je odvozen od analogickeho vztahu niezi delkami stran trojuhelnlka,

DUKAZ: Je-li u(i, k) = 00 nebo u(k,n = 00, ncrovnost samozrejme plati. Zabyveime se tedy prfpadem, kdy u(i,k) < 00 au(k,j) < 00. Spojenim nejkratsich cest z vrcholu .j do vrcholu k a z vrcholu k do vrcholn j ziskame sled z i do j. Bud' tcnto sled je sam cestou, nebo z nej cestu vytvorime vynechanlm pHpadnyr:h cykhi. Tyto cykly mely nezapornou delku, delka cesty je tedy nejvy,se uti, k) + u(k,j). Zaroven vsak taro cesta rna delku alesponu(i,j). 0

DUSLEDEK: Jestliic graf neobsahuje cyklus se za:pornol1 delkou, pro ka~tlou trojici vrcholf i, i. k platl:

c-.

.' ,

(1).2)

u(i,j) < a(i,j) ,
u(i,j) < 'u('i,k} + a(k,j} ,
u(i,j) < aCi,k) + u(k,j) . 88

Kapitola 6. NejkratSi cesty

6.1.6 veta. Pfedpokladejme, zee graf neobsahuje cyklus se zapornou delkou. Jest!ize nejkratsi cesta z vrcholu i do vrcholu j prochazi pres vrchol k, pak pocatec.(li usek ttito cesty mezi i a k je nejkratsi cestou z i do k, podobna koncovy usck cesty mezi k a j je nejkratsi cestou z k do j a navic plati u(i.,j) = u(i, k) + u(k,j),

DUKAZ: Oznacme uelku pocatflcnfho useku p a koncoveho q. Plati tedy uti, j) = "" p + q a taMu(i, k) :5 p, lJ.(k,j) Sq. Kdyby platilo uri, k) < p nebo u(k, j) < q, pak by uti, k) + It(k,j) < p +g = u{i,j), coz by bylo v rozporu s trojUhelnikovou nerovnost] 6.1.5. Proto uti, k) ::;; p a u(k, j) = q, Oba useky jsou tedy nejkratsimi cestarni. 0

D USLEDEIC Necht graf neobsahuje cyklus se zapornou delkou a neche i, j jsou dva I'11zne vrcholy, Jef!tlize k je poi":atetnim vrcholem poslcdni hrany v nejkratsi ceste z i do i, pak plati u(i,j) = uti, k) + a(k, j).

D us LEDEK: (Bellmaaovy rovnice.) Jest liz.e graf neobsahuje cy klus se zapornou delkou, pak pro kazdou dvojici vrcbolu i, j platf:

u(i,j) = ~~?{u(i,k) + a(k,j)} .

POZNAMKA: Wta 6.1.6 a jejl dusledky jsou jednou z Iorern tzv. BellmanOVG principu optimality, ktsry je zakladem pomerne obecne optrmalizacnt mstody, tzv. dynamicktho progmmovani.

6.1.7 Cykly se zapoFuou delkou. V grafech, ktere obsahuji cyklus so zapornou delkou, yYse uvcdene vety 6.1.4 aZ 15.1.6 ani jejich dftsledley nepJati. Jednoduchy pfiklad ic na obr, 6,1.

1~. ~-2

5 k

o brazek 6.1: Pf'ikla.d grafu, v nemi neplati trojuhelnflcova nerovnost.

Algoritrny pro nejkratsi cesty, ktere dale uvadima, vsak na platnost tcchto vet spolehaji. Rychlost tcchto algoritmu je totiz zalceena na torn,ze se nestaraji o opakovani vrehohi v ceste, takie vla:'!tne nehledajf nejkratsf cesty, ale nejkratsi sledy. V grafech bez z.ipornYdl cykhi to ovsem vyjde nastejno (viz veta 6.1.4),

Pokud graf obsahuje cyklus se zapornou delkou, nelze tento trik pouzlt, np-bot nejkrats! sled vubec nemusi existovat (viz poznamka u 6.1.3). HledliIlt nejkratslch cest pak je NP-tezka uloha (viz kapitola 11), Jednoduchy (alp. pracny) postup muze hyt zalofen na algoritmu 3.3,.10, str. 56, pro vyhledani vssch coot zaclnajlcich v danem vrcholu .. PotE~ je v torn, ze vsech cest v grafu 0 n vrcholcch rnuze hft. fadov€! nz n!.

ZjisLov.anlrn, zda graf obsahuje cyklus zapornc dclky, se budeme zabyvat v 0.8,

6.1.8 Cvicent. Dokazte dusledky vet 6.L5 a 6,1.6,

6.2. ZlfklauIJI schema vYpoCtuvzdtilcllosti

89

6.2 Zakladni schema vypoetu vzdalenosti

V tomtooddile uvedeme velmi primitivnl navod k hledani uejkraLfiich cest i: dauehc vycbcziho vrcholu, Vsechny ~ ostatni algoritrny, ktere dale pru tento typ ulohy uvadime (krome.oddilu 5.7), jsou vlastns vylepsenyrni sperrialnimi pi'ipady tuhotu zakladniho schematu. Pojmy, triky a tvrzenf, ktere v tomta oddile uvarhme, pale pousijeme v nasledujicich oddilech teto kapitoly,

6.2.1 Zaklallni schema vy-poctu vedalonostf. Pro kn:zdy vrehol :r si budeme pamatovat hodnotu U{x),. ktera bude rovna dolce nejkratsi dosud ualezene cesty z vrchnlu r do vrcholu a: Jestlize jsuie iiidnou cestu i: T do x dosud nenasli, bude U(x) = 00.

Kdyby hodnoty U byly skutecnymi vzdalsnostmi vrrholii grafu ad vrcholu r, ill usela by pro kazdou hranu grafu (x, y) platit tro [uhelnikova nerovnost

(6.3)

U(y) ..::; U(x) + a.(x,y) .

Jestlize neplati, znarnena co, zc U(y) neni delkou ncjkrats] ccsty z r do y, prctofe pres vrcholr vede do y testa kratsi, Proto v takovein p:i'fpade hoduotu U(y) sllizlmc provedenim pfikazll

U(y) :== U(x) + a(x,y) .

V lernmatu G.2.4 dokazeme, ze pak U(y) bude opet delkou nektere (a to kratsi) cesty.z vrc:holu T do vrcholu y. Testy trcjuhclnikovc nerovnosti (6.3) a z nich pi'ipadns vyplyvajici llpravy hodnot U budemc provadet tak dlouho, dokud ncdosahnerne platnosti trojuhelnikove nsrovnosti (6.3) pro v~lOdlllY hrany grafu, Ve vete 6.2.5 dolcl.Zeme, ze tent.o postup musi po kouei':ne mnoha Zemt!rukh skallcil a ze dostaneme spravny vysledek.

Na za~atku vypaau volimc U(x) ;= 00 pro z -=f:. T a U(r) := 0, nebof zpocatku nezname zMnOll cestu i: vrcholu r krome testy trivialni, ktora rna. nulovou delku Zikladni schema vypoctu. vzdalenosti lze shmout takto:

1. Polof U(7') := 0 a pro vsechny vrcholy j -=f:. r poloz U(j) := 00.

2. Vyber libovolnou hranu grafu e a zkontroluj, zda pro ni plati trojtihelnikova ueruvnost (6.3), t], zda U{Kv(e)) ..::; U(Pv(e)) + aCe). Jestlizc neplati (tj. plati-l: opak). proven U(Kv(e)) := U(Pv(e)) + aCe).

3. JestliZe nerovnost (6,3) plati pro VSCChllY hrany grafu, vypocet koncf.

Poznarnenejme, ze taz hrana m\.lze byt pouzita i nekolikrat ke Snlzeni hodnoty U [cjiho koncovcho vrcholu. Pofadi vyberu hran k testu nerovnosti (6.3) i zpiJ.Soh zjisfovani, zda tate ncrovnost jiz plat! pro vsechny hrany, rna, jak uvidlme dale, Vf~lky v Ii v na rychlos t v Y lJoctu. N ei prvc vsak uvedeme pfiklad a vyslovime nekolik tvrzeni, ktera plati nejen pro zakladni schema vypoctu vzdzilcnost], ale i pro algoritrny z nej odvozene.

90

Kapitola 6.. Nejkrat.§{ cesty

6 .. 2.2 Pffklad. Vypocet vzdilenosti pfedvedeme no. grafu z obr. 6.2. Vychosirn vrcholern je vrchol L

3

Obrazek 6.2: Omf k pi'ildadu 6.2.2.

Uvedems pouze ty vypceetni kroky, v nichs S8 hodnota U zrnenila, Hro.ny k testu
nerovnosti (6.3) jsme vybirali umyslne trochu chao ti:ck y.
krok Puuzita hrana hodnot.y U po provedenf kroku
vypoctu PV KV delka U(l) U(2) U(3) U(4) U(5)
0 0 00 00 00 00
1 1 5 3 0 00 00 oo 3*
2 5 2 -2 0 h 00 00 3
3 2 3 5 0 1 6* 00 3
4 3 4 4 0 1 6 10* 3
5 5 3 2 0 1 5* 10 3
6 3 4 4 0 1 5 9* 3
7 1 2 -5 0 -5* 5 9 3
8 2 3 5 0 -5 0* 9 3
9 2 5 2 0 -5 0 9 -3*
10 5 3 2 0 -5 -1:1< 9 -3
11 3 4 4. 0 -5 -1 3* -3 Hodnota U, ktera se .'miZila, je v tabulce oanacena hvezdiekou, V~imnete si, ze hrana (3,4) byla pousita ke snizeni hodnoty U(4) tfiknit.

6.2.3 Cvicenf. Ovefte si na ncjakcm pfiklade (Ueba na grafu Z obnizku 6.1, str. 88), zc pokud graf obsahuje oyklus se zapornou dtHkoll a vrcholy tohoto cyklu jSQU dostupue z vychuzfho vrcholu r, pak vypocet podle schema.tu 6.2.1 nikdy neskonei. Podrobneji 0 tom viz 6.8.2, str. 107.

"

i

,

6.2.4 Lemma. Jestlife graf neobsahuje cyldus sc zzipornou delkou, pak kdykoli behem vypoctu vzdalenos~i podle schematu 6.2.1 pro ka.ZJY vrchnl 11 bud' piaU U(v) == 00, nebo je U(v) delkou nektere cesty z vrcholu r do vrr:holu v.

DUKAz: Oclslujme vzestupne vsechny okamsiky, ve kterych dochazi kG zmenam, tj. ke sniZep.l bodnot U. Kazdou hodnotu U(v), ktera byla vypoctena v okamziku

:,

6.2. Zaldildni scilema v:;rpoctu vzdlilenostf

91

t, oznaeme Ut(v), hodnoty U(v) platne pI1l.ve ted' oznacme UT(V). Je zfcjme, ~e pro kaidy vrchol v mohlo byt vypccteno postupne nekolik bodnot Ut(v) a tyto hodnoty tvofi klesajici posloupnost.

Je-li UT(V) < oo , urcite existuje sled vo, e" Vi, e2, V2,· .. ,Ck, Vk Z vrcholu 7' = Vo do vrcholu v := Vk a posloupnost okamziki.t 0 = to < tl < tz <: ... < tit < T takova, ZP. v kazdem okamziku t; byla vypoctena hodnota Uti (Vi) = Ut;_l (Vi-d +a(e;).

IIodnota UT(V) = Ut,,(Vk) je pfitom rovna souctu delek hran ei, tj. deke sledu.

Dokaeeme sporem, ze tento sled jc cestou, Kdyby se v nem neja.kY vrchol opakoval, vzali bychom dva k ."lobe nejbli~~l vyskyty t.eho7. vreholu Vi = Vj pro i < j. Cast. sledu tvol'ena hranami ei+1,e,+2,'" ,ei by pak tvofila cyklus 0 delce UtJu]) - - ut,(Vj). Ponevadz vsak Utj(Vj) < Udvj) (nebof ti < tj), byla by delka t.ohoto cyklu za.porna., C02 by byl spor. Ilodnota UT(V) tedy je delkon nejake cesty. 0

ti.2.5 Veta. Jestlize graf neobsahuje cyklus zaporn€ delky, pak vypocet podle 6.2.1 skonci po konecne rnnoha zmenach hoduoty U a po nkonceni bude pro vsechny vrcholy z plat.it U(x) =u(l', :&), tj. vzdalenosti U budou vypocteny spravne,

POZN"\MKA: Tato veta nic nefikzi 0 poctu te,stu trojuhelnikove nerovnosti (6.3). Pfi nesikovne volbe hran pro testovani by vypoe:et. nemusel viibec skoncit (kdybychom nap!'. testovali stale lutez. hranu).

DUKAZ: Nejprve si uvedomme, zc podle predchosfho lernmatu je pro kazdj vrchol x vzdy bud' U(x) = 00, nebo je U(x) delkou nejake cesty z r do z. Vsech cest z;CJ.cinajicich ve vrcholu r je konecue mnoho, proto muze behem vypoctu dojit jcn ke konceni': mnohazmenarn hodnoty U.

Ukazeme sporem, ze po ukoncenf vypoctu pro kazdy vrchol 'U bude U(ll) = = u(r, v). Predpokladejrne, ze do nektercho vrcholu 1) vede nejkratst cesta 0 delce u(r, v) < U (tI). Oznacrne y prvni vrchol na teto ceste, pro ktery U(y) > u(r, y). Ponevadz y i= 1", existuje vrchol z , ktery v teto cE'.~te bezprostfedne prcdchazi y. Pro nej jiz plati U(x) = u(r,x) a navic podle dusledku 1 vety 6.1.6 Lake u(r,x) + + a(x, y) = u(r, y). To vsak znarnena, ze vypocet nebyl ukoucen, nebof U(x) + + a(x, y) < U(y), coz je spor. 0

6.2.6 Konstrukce nejkratsich cest. Casto potfebujeme zjistit nejen vzdalenosti, tj. delky nejkratsich eest, ale take !cudy nejkratsi cesty vedon. K tomu lze po snadne uprave pouzit zakladni schema 0.2.1 nebo kterykoli jeho specialni (a zlep~eny) pflpad popsany dale v 6.3 aZ 0.5. Uprava je.tato:

Vz.dy, kdyz dojde ke snizenf bodnoty U(v) pro nektery vrchol ti, zasnamename si pro tento vrchol hranu, ktera snizeni zpusobila, K zapamatovani pousijeme hodnotu ODKllD(V). Na za.catku vypoctu neche neni hodnota ODIWD definovana pro 7.;l,dny vrcbol,

Z diikazu lemmatu 0.2.4 vyplyva, ze je-li hodnota OOKun(v) definovana, pale je jmencm posledni many v nejake cest.e 0 delce U(v) z vrcholu r do vrcholu v. Hodnoty ODKUD pak lze po ukoncenl vypoctu vyuiit ke zpct.nc rckonstrukci nejk.ra~sfch cest (podobne jako v 3.14, str. 48). Poznarnenejme, ze behem vYpoctu se hodnota ODKUO(v) muze nekolikrat zrnenit.

',I

....

, . I

92

Kepitol» 6. Nejkratsi cesty

Owe poznamenejme, ze. evidovani hodnos ODKUD nijak neovliviiuje postup vypoctu podJe sehematu 6.2.1 nebo podle kterehokoli [eho slepseni.

6 .. 2 .. 7 Veta (korenovy strom nejkr atsfch cest], Predpokladejma, ze hodnoty OOKUO(V) byly ziskany podlc 6.2.6 a ze graf neobsahuje cyklus a zaporne deice. Potom po ukonceni vypoctu plat]:

1. Mnoiina vrchola D = {v I ODKUD(V) je dsfinovano] je tvofena vsemi vrcholy orientovane dostupnymi z r a n"lwymi od T.

2. Je-ll ODKl1D(V) daflnovano, pak ODKUD(V) je posledni hranou v (nektere) nejkratsi ceste z r do v.

3. Pro kaedeu hranu ODKUD(y) plat] U(x) + a(x, y) = U(y), kde :r: je pocitecni vrchol hrany OOKUD(Y).

4. Mnozina hran T = {OOKl1D(v) I !II E D} tvofi korenovy strom s korenem r na mnozine vrrholu D U {r}.

5. Kazda cesta z kotene t- do libovolneho vrcholu xED v koi'enovem strome T je zarovef ncjkraLsi cestou z r do x v plhodnfm grafu,

DUI<AZ;

1. Hodnota OnKuo(v) je deflnovana prave tehdy, kdyz !II i=- ,. a U(v) < 00, coz na.'ltava pni:ve tehdy, kdys v :j:: r a vrchol v je erientovane dostupny z vrcholu r. Hodnota OOKun(r) neni definovana, nebof zustane U(r) = O.

2. Fodle vety 6.2.5 je po ukonceni vyPoctu hodnota U(v) delkou nejkratsi cesty z r do v. HI ana, ktera zpusobi1a pcsledni suiieni hodnoty U(v), je poslednl hranou v teto nejkrats! ceste, jmeno teto hrany je tedy nakonec obsazeno v ODKun(v).

3. Thslle po poslednim snfzeni hodnoty U(y) rovnost platila. Hodnota U(y) se od te doby nezmenila a hodnota U(x) taM ne, nebof by se tim porusila troj6helnikova nerovnost, hrana by byla znovu zpracovana a hodnota U(y) by znovu klesla,

4. V kaidem vrcbolu :£ mnoiillY D konCf presne jedna hrana z mnoiiny T, ve vrcholu l' nekonci zaumi. K dukazll, ze jde ° korenovy strom, tedy podle vely 5.3.4 statl dokaaat, ze mnoeina T neobsahuje cyklus. Kdyby obsahovala, platila by pro kaZdou hrsnu (x, y) tohoto cyklu rovnost U (x) -t a(x I II) = U (y). Posledni hrana tohoto cyklu se vsak nemu.ze do mnoziny T dostat, protoze vsechny vrcholy cyklu jiZ rnaji definitivnl hodnoty U a hcdnora OOKUD se muze zmenit jen spolu 5C sniienfm pfislusne hodnoty U. Mnozina T tedy tVOrl kotenovy strom s kofenem T.

5. Z casti 3 veLy vyplyva, :i.e deika eesty Z T do z tvofene hranami z T Je rovna

U(x), tato cest.a je tedy nejkratsi, 0

6.2.8 K cemu je kof enovy strom nejkr3Uich cest. Nejkratsfch cest z vrch olu r do vrcholu !II miize byt nekolik, v kofenovem strome se sa.mozrejrne objevi jen jedna z nich, Presto kofenovy strom nejkratslch C811t poskyt.uje vslmi dobry pfehled o struktufe nejkratsich cest z damiho vjchoziho vrcbolu T. Vyborne se hodi k prezcntaciyysledbi vypoctu, totiz ke sdeleni, kudy nejkrats! cesty vedou .. Napfiklad

6.2. Z:i1dadni schema vypoc.tu yzdMenosti

93

6.2.9 PoCty bran v nejkratsich cestach. Nekdy je tfeba zjistit krornc delky cesty (tj. souctu ohodnoceni) take z kolika hran sc nejkratsi costa sklada. Sarnozrejme to jde spocitat i dodatecne pomoci hodnot ODl<UD. OasLo se vsak JJoll~iva tato jcdnoducha uprava zakladniho schcmatu 6.2.1 (a vsech algcritmu Z TIilj odvoz~m:ich):

1'ro ka.Zdy vrchol v navic evidujeme hodnotu P(v), ktera jc vzdy rovna poctu hran v ceste, jejiz delka (tj. soucet ohodnoceni) jc U(v).

Ph inicializaci polozime Per) :~ 0 a P(v) := 00 pro v 1:- T. V prubehu vypoctu pak vzdy pri zmene hodnoty U(y) := U(x) +a(x,y) zrnenime take F(y) :=: P(x)+ 1.

V samotnem algcritrnu nejsou hodnoty P k nicemu dalsimu pouzity, a proto nijak neovlivni vypocet podle schernatu 6.2.1 nebo podle kterehokoli jeho zlepseni.

Pokud graf ncobsahujc cyklus 0 zaporuc dolce, pak behem vypoctu i po jeho skouceui plati P(z) <71, kde n je pocet vrcholii. grafu. Toho Ize vyuztt ke kontrole, 7.da. graf zapomy cyklus obsahuje, nebo nikoli, Vi7- tez 6.8.2.

po vypoctu nejkratsich cest v prazske silnicnf siti staCi do plauu Prahy zakreslit hrany, ktera n31ezi ke stromu, a vysledne nejkratsi cesty jsou vsechny patrne na prvy pohled.

Kofenovy strom nejkratsieh cest a vetu 0.2.7 he take vyusit ke kontrole spravnosti vypoctenyoh vzdalenosti: sta.c:i pro vsp.ehny hrany grafu zkontrolovat trojuhelnikovou nerovnost (6.3), pricemz pro stromove hrany v rri musi platit rovnost.

Kdybychom pfcdcm znall korCllovy strom nejkratsich cest, mohli bychom vypoeet podle schemata 6.2.1 ;,;naene urychlit. Sta610 by pOU7Jt test (6.3) ponze na hrany stromu v topologickern uspofadani (kofenovy strom je acyklickym grafem) a tim by vypocet koncil. Pak 117. by t.otE>. byla trojuhelnikova nerovnost (6.3) earucene splnena i pro ostatni many grafu. (Dokaztel)

6.2.10 Poznaznka k pocitani s nekonecnam. Algoritmy, ktare jSQU uvedeny v teto kapitole, pracuji c.a.'ito s nekonecnem, nebof to zjednodusuje vyklad. Berne po~ita.Ce a programovaci jazyky ovsern 5 nekonecnem pracovat nedovedou. Jsou dva zpusoby, jak si pomoci:

Nejjednodussi je misto syrnbolu 00 pouzit Ilejakoll velkou konstantu, ktera bude spolehlitJe vetS! nez dvojnasobek delek vsech cest v grafu, Jsou-li napf. absolutni hodnoty delek hran mensi nez 1000 a vrcholu je 50, muzeme misto 00 pouiit cislo 100000 (nebo vetS!). Cfsla vets! nez 100000 pak budcmc pokladat za "llckoDccna.".

Ph pouzit! t.ohoto t.riku musirne ovsern davat pozor, abychorn ani v mezivysledcfch nepresahli maximalni cislo zobrazitelne v pocitaci. Dosia by totiz k tzv. pretecen1, cOz vede ke zcela chybnym vysledkum .

.Iinou moznosti je vyuZit hodnotu OOKlm: Je-li ODKUD(X) jrnenarn np..jake hrany, pak U(x) je delkou nejake cesty, a tedy U(x) < 00. JestliZe naopak hodnota ODKUO(X) .neni jeste jmenem za.dne hrany (nenl dosud definovana), pak U(x) = 00. Abychom mohli hodnoty ODKUO takto vyuiit, musime zvolit ncjake flktivni jmeno, odlisne od jmcn vscch hran, kterc budc znamenat "nedefinovano", a pri inlclallzaci toto [meno dosadit do vscch hodnot ODI<UD. Dobie se k tomu hodi napf, -1.

94 I\apitoJa 6. Nejkrat.<if cesty

6.3 AIgoritmy pro obecne grafy

Aigoritmy, ktere zde uvadime, jsoualepsenymi variantami a spscialnimi pfipady zakladnmo scbernatu vypoctu vzdalenosti 6.2.1.

6.3.1 Algor it mus S opakovanou kontrolou vsech hr an je asi nejjednodus.§!m praktickym provedeulm zakladniho schematu vypoctu vzdalenosti 6.2.1.

1. [Inicializace.] U{r) := 0, pro 1) ¥-- r poloiime U("!)) := 00.

2. [Zpracotlani cele rmwiiny linm.] Pro vsechny hrany grafu provedems v libovolnein pofadi krok 2a. Po zpraeovanf vsech hran pokracujeme podle holm 3.

2a. [Zpracovani hnmy e.] Jestlize U(f'V(e)) + arc) < U(KV(e)), provedeme U(Kv(e)) := U(Pv(e)) + a(e) a ODKun(Kv(e)) := e.

3. [Test ukonceni.] Jestlize btihem prov.ideni kroku 2 nedoslo k zadne zmene hodnoty U, vypocet kane!. V opscnern pripade pokracujcme ZflOVU podle kroku 2.

Z.vety 6.2.5 okarnZite plyne spravnost tohoto algoritrnu. Plat! vhk vice:

6.3.2 Veta. Ph zpracovani grafu bez ~apornych cykh'! algoritmem 6.3.1 vzdy po i-t.ern provedeni kroku2 (pro i = 0,1,2, ... , n - 1) platf:

Pro kaidy vrchol x je hodnota U(x) mens! nebo rovna delco nejkratsl cesty z or do x, ktera Ola nejvyse i hran.

DiisLEDEK: Pffkaz 2 algoritmu 6.3.1 muze byt vykonan nejryse n-krat, doba prace algoritmu tedy je O(mn).

DUKAZ: Pro i = 0 tvrzeni trivialne plati, Predpokladejme, ie tvrzsnf plati pro nejak.,; i. Dok.iieme, ze bude platit tab"! po dalsim proveden1 kroku 2, tj. pro i + 1.

Vezmeme Iibovclny vrchol x, oznacme UH1 (:I;) delku cesty, ktcra je nejkratsf ze vsech cest z r do x, ktere maj] nejvyse i + 1 hran, a dale oznaeine y pfedposlsdnl vrchol v teto eeste, Pocatecni usek tetO cesty z r do y ma nejvy~,e i hran a jeho delka Ui(Y) je nejkrats! ze vsech cest Z r do V, ktere maji nejryse i hran, Podle indukcniho pfedpoklsdu po i-tern vykonani kroku 2 bylo U(y) ~ [/;(y), a proto po datsim provedenl kroku 2, kdy musela byt zpracovana i brana (V, x), musi platit U(x) ~ Ui+J(x), 0

6.3.3 Algoritmus s mrroainou po dezfalych vrcholu, Zakladni schema vypoctu vsdalenoatl 6.2.1 I ze dale zlep§it tim, ze zabranime zL.Ytecnemu testovani hran, o nkhz pfedem vime, ze trojuhelnikovou nerovnoat (6.3) jill splii.t\jf.

Jestlize nejaki hrana e trojuhelnikovou nerovnost (6.3) Jii spliiovala, muz.e k poruseni teto nerovnosti dojit pouze snlzen(m hodnoty U V jejlm po6itecnim vreholu, Naopak, do~lo ... li ke snfzeni hodnoty U(x), ie nutuo otestovat nerovnost (6.3) pro vsechny hrany vych.izejiC£ z vrcholu x, nebof pro tyto hrany by mohia byt

6.3. Algoritmy pro obccnc grafy

95

platnost nerovnosti (6,;;) porusena, Budeme tedy behem vypoctu udrzovat mnofinu !VI "podezfelych" vrchohi, v nichz doslo ke snizeni hodnoty U a ktere v mnozine M cckaji na testovani hran, ktere.z nich vychazejl,

VSTUP: Graf G, ohodnoceni bran a : E(G) -)- IR a vychozi vrchol r. VYSTUP: Pro kazJy vrchol u hodnoty U(v), OOKUD(V).

POMOCNE PROMRNNF.:: Jako pomocnou promsnnou pouzijeme mnozinu M, ktera bude mft tuto vlastnost:

(6.4) Jestlize Pv(e) Ii M, pak hrana C spllluje nerovnost (6.3).

ALGOR!TMU5:

1. [Inicializuce.] U(-,.) := 0, pro u 1'r polozime U(v) := 00 a d.ile.M := {r}.

2. [Vyber vrcholu.] .1 e-li M = 0, vypoc.et konci. Jestlize M o:fi 0, odebereme z mno~iny M nektery vrchol a oznafime jej x.

3 fZpracovani hran vychazejicich z vrchols: :c.] Pro kaiJou hranu e E e+(x) provedemc krok 30. a pozpracovani vsech hran pokracujeme podle kroku 2.

3a. Polozime y := Kv(e) . .Iesthze plat.! U(x) + ate) < U(y), pak provedeme U(y) := U(x) + a(e), ODKUD(y) := e a navic, pokud y Ii M, vlosimc vrchol y do mnoziny M.

PO:lNAMI<,A: Volbu vrcholu z mnoiiny podezfelycl, M lze v kroku 2 di!ilat v porlstate libovolnym 'i.pusobem. Tento zpusob uema vliv na spravnost algoritmu (viz YHta 6.3.6), ovlivnuje vsak jeho rychlost. Uvedeme dva dulezite pi'ipady:

6.3.4 Algoritnms s frontou podedelych vrchohr voli v kroku 2 vrchol, ktery je v mnozlne M nejdele. S mnosinou M tedy pracujeme jako s frontou (viz 3.2.1), tj. jako se seznamem, Z nehoz cdebframe na opacnem konci nei pfidavame. Algoritmus pfitom funguje podobns jako algoritmus S opakovanou kontrolou vsech hran 6.3.1" pouze jsou vynechany nektere zbytecne testy trojuhclnlkove nerovnosti, Zrychlelll vypoCtu ve srovnani s algoritmem 6.3.1 se sice ueprojevi na ca::;ovem odhadu pro nejhorsi pripad (tell zllstava O(mn), viz veta 6.3.7), prrlmerna doba vypoctu je vsak zejmena II Hdky(:h grafu vyrazne krat.sl.

V ypocetni experi.rnenty ukazuji, ze pres svou jednoduchost jo tcnto algoritmus vhodny k hledan! nejkratsich cest ve dvou situacich: jednak v fidkych grafech, tj, v grafech, kde podet hran m nepfesahuje nejaky ncvelky nasobek poctu vrcholu n, jednak v grafech, kdc je vclke procento hran se zapomou delkou, Za zvlastni zminku

: stoji skutecnost, ie dokonce i na gralech s lle'.tapornymi dt'!lkami bran, pokud je gear i'idky, je tento algoritrnuav prumeru rychlejili i nei cast.o doporucovany tzv. Dijkstruv algoritmns,

f'

r

;; , -~

i'

6.3 .. 5 Modifikovany Dijksrruv algor'itmus vall v kroku 2 vrchol, ktery rna nejnizsi hodnotu U. Vztah k originalnhnu Dijkstrovu algoritmu je vysvetlen dale v 0.5, str. 100.

96

Kapito/Il. 6. Nejkratsi ces~'y

Volba vrcholu :r: s nejnizsi hodnotou U(x) se oduvodnuje nadcji, ze takto zvolsna hod nota U(x) se ji7. v dalsfm vypoctu nezmeni a ze uz tedy Lento vrchol nebude znovu 7.arazen do mnosiny M: Spolehnout se na to vsak lze jen v grafech, kdc vsech ny hrany maj i nezapornc delky (v iz 6.5.1). V 0 becnych grafeeh je tonto algoritmus take pornerne dobfe pouzitelny, ale v ojedini'iiych pHpadeeh se muze stat, ie tyz vrchol bude do mnoziny M zatazen dokonce mnohokrat (az 2n-l-knit). Casovy odhad tohoto algoritmu je terly exponencialni.

Vypocetni experimenty ukazuji, ic modifikovany Dijkstniv algoritmus je vhodny k hled.ini nejkratsich cest v hustych grafech, kterp. majf jen male (nebo nulove) procento hran se zapomou delkou, Pokud pocet vrchclu pfesahuje asi tak stovku, je navic vhodne vybfrat minimum v pfikaze 2 trochu chytfeji ne~ prostym prohlizenim vsech hodnot, jinak vetsinu casu promamlme vybiranirn minima. Obvykle se k tomu pouziva datova struktura nazyvana hnlda (anglicky heap), viz napf. fAHU74, Kueer'aS3, Tcipfer95]).

6.3.6 veta (spravnostaigori tmu S lIlI10ZlllO U po dezrelych vrchohr) . Jestlize graf neobsahujc cyklus se zapornou delkou, pak se algoritmus 6,3.3 zastavi a nalezne ncjkratsl cesty z vrcholu r do ostatnich vrchola grafu,

PozNAMKA: Toto plat! nezaviale na, zpusobu volby vrcholu z mnoziny M. DOKAZ: Testy trojuhelnikove nerovnosti a. odpovidajici zmeny hodnot U JSOll provideny zpusobem, ktary je v souladu se schematern 6.2.1. Podle vety 0.2.5 tedy dojde pouze ke konecne mnoha zmenam hodnot U. KaZdy vrchol v i= ·r je do mnoiiny M zafazen pouze vzapeti po zmene [eho hodnoty U(v). Fro to take kroky 2 a 3 algoritmu mohou byt vykonany nejvyse konecny poeet krat, a algoritmus se tedy zastavi.

Dile, snadno lze oyei'it, ze podmfnka (6.4) plati pred kaidfm vykonanlm kroku 2 a po kasdem vykonani kroku 3. Az se tedy algoritmus ?:a,."tavl [tj, v kroku 2 bude M = 0), bude trojuhelnikova nerovnost (6.3) platit pro vsechny hrany grafu, a vypocet tedy bude podle vety 6.2.5 take spravny, 0

6.3.7 Veta (casovy odhad algoritmu s front ou podezrelych vrcholu}. Jeatlize graf neobsahuje cyklus se zapornou delkou, pak behem vypoctu algcritmem 6.3.4 (s frontou podezfelych vrcholu) nebude zMny vrchol zafuzen do mnoainy M vice ueZ (n - I)-knit., kde n je poeet vrcholn grafu.

DUSLEDEK: Algoritmlls skonci praci v Case O(mn).

DUI<AZ: Pro llcely dukazu si algoritmus upravmc podle 6.2.9 tal, aby pro kaidy vrchol v udrzoval pocet bran P(v} v coste, jejiil. delka je U(v). Tate uprava nijak neovlivnf vypocet, poufijcme ji pouze k uvaharn v dukaze.

Pfipomenme, ze s mnozinou M zachazime jake s frontou, tj, jako se seznamem, z nehoz odshlrame na opacnem konci nd pl'idliva.me, Pfi zpracovani bran, kterc vychazejl z vrcholu z , jsou do mncfiny M vkladany vrcholy s hodnotou P(x} + 1. Z toho plync, ze hodnoty P vrcholii, ktere jsou v nejakem okamziku v mnozine M, se mohou lisit nejvyse 0 jednicku, a take to, ze hodnoty P(x) zpracovavanych vrcholu tvofi neklesajici posloupnost (viz tei lemma 3.2.3, str. 51).

::}/

ZAdny vrchol v se neuru~e dostat do mnnziny M d vakrat se stejnou hodnotou P(v)_ Jakmilc je totiz vrchol v vyjmut z mnofiny M s hodnotou P(v) = k, pak od tohoto okamWru jsou do M zarat.Ovany vrcholy pouze S hodnotarni k+ 1 a vyssimi,

Cest.a muze mit nejvyse n' - 1 hran, proto z:idny vrchol ncrmize mit bodnof.u P vyssl nez n -1, a tcdy nemllze bit do mnosiny M zafazen vice IlCZ (n -I)-knit. 0

DUKAZ DU!:iLEDKl;: Pfikaa 3a zpracuje kaZclou hranu nejvyse (n - 1)-krat, nebof jejf poi::itccni vrchol bude vyjmut z mnofiny M nejvyse (n - I)-knit. 0

,4

6.3.8 Priklad. Pouzijeme modifikovany Dijkstn"iv algoritnrus 6.3.5 k vyhlsdani nejkratsich ceet z vrcholu 1 v grafu na ObI. 6.3. Z mnoiiny M tedy buderne vybirat vzdy vrchol s nejnizsl hodnotou U.

6

0- ->'<>5

2

3

Obrazek 6.3: Graf k pWdadu 6.3.8 a vysledny strom nejkratsich cest.

Prubeh vypoctu bude tcnto:
M = {l}
x = 1: M=0
U(2) = 3, M = {2}
U(5) = 4, M = {2,5_} _
x = 2: M ~ {5}
U(4) = 5, M = {4,5}
U(5) beze zrneny M = {4,5} ~ .
x = 5: M = {4} ,
U(2) = 2, M = {2,4} I
U(3) = 10, M = {2,3,4} i .
U(4) = 4, M = {2,3,4} t
x = 2: M = {3,4}
U(4) bese zmeny M = {3,4}
U(5) beze zrneny M = {3,4}
:c = 4 : M:::: {3}
U(3) = 8, M = {3}
x = 3: M=0 t· t .
U(2) bczc zmeny M=~ .:
M=0 I: Vsirnnete si, ze vrchol 2 byl do mnosiny M zaf'azen dvakrat. Sledujte take, jak se v prubehu vypoctu meni korenovy strom nejktatsir.h cest,

98 Kapitola 6. Nejkratsi cesty
Vyslcdek vypoctu lze shrnout do teto tabulky:
vrchol x 1 2 3 4 5
vzdalenost U(x) 0 2 8 4 4
OOKUD(Z) (5,2) (4,3) (5,4) (1,5)
Pocltame-Ji rucne (tj. ne na pocitaci), je vhodne do takove tabulky zapisovat
mezivysledky a zmcnene hodnoty skrtat.
6.3.9 Cvicenf. Najdete nejkratsi cesty z vrcholu 1 do vsech dostupnych vrcholu
a nakreslete korenove stromy nejkratsich cest v teeht(l grafech:
a) Pv Kv a Pv Kv a Pv Kv 1:1.
1 2 16 4 5 12 7 8 11
1 3 6 4 7 21 7 10 6
1 7 36 5 3 2 8 5 4
2 5 10 5 6 6 8 10 2
3 2 8 5 9 8 9 8 14
3 4 4 6 7 3 10 9 0
4 3 2 6 10 7
b) Pv Kv a Pv Kv a Pv Kv a
1 2 2 3 5 -1 5 7 8
1 3 6 3 6 -2 5 9 6
1 5 5 4 3 1 6 8 4
2 3 0 4 5 -2 7 9 0
2 4 4 4. 7 7 8 7 6
2 5 2 5 6 -1 8 9 2 6.4 Algor itrny pro acyklicke grafy

Pro acyklicke grafy je vypocet nejkratsich cest velmi snadny, StaCi v zakladnim scMmatu vypottu vzdalenosti 6.2.1 probirat hrany v topologickem uspofadani:

6.4.1 Veta. Je-ll graf acykiieky a jsou-li jeho brany algoritmem 6.2.1 zpracovavany v topologickem uspof3dani, pak po zpracovani vscch bran buds trojuhelnikova nerovnost (6.3) platit pro v~echny brany.

D(H<AZ: Nerovnost (6.3) plati pro kazdou hranu e tt\sne po jejim zpracovanl, Kdyby nekdy pozdeji byla platnost nerovnosti porusena, bylo by to zpusobeno zpracovanlm nektere hrany, ktera. konCi v Pv(e). To by vsak bylo v rozporu s topologickym uspofadanlm hran, 0

DUSLEDl::K: Y acyklickem grafu lze nejkrats! cesty z daneho vrcholu najit v case O(n + m).

6.4. Algoritmy pro acyklicke grafy

99

Df.rSLEDEK: Pfi pouiitf algoritmu s mnozinou podeztelych vrclJQI11 6.3.3 dosahneme .~t.p.jnH rychleho prubehu vypoctu, vybiramc-Ii vrcholy v kroku 2 v topoIogickem uspoi'.irianL Pousiti tvpologickelw usporaJanf limn v zakladuim schematu 6.2.1 je vsak jednodussi.

6.4.2 Vypocet nejkr atsfch cest :z.aroveii s t.op ologtckyrn usp of'adarrim. Vypocet nejkratsich cest v acyklickem graft! lzes v.fhodou zkombinovat s hlcdanim topologickeho uspoi'adAni algoritmern 5.2.7, str. 75. V algoritrnu 5.2.7 provederne navic toto:

1. V kroku 1 provedeme navfr. [I(r) := 0 a U(v) :.= 00 pro vsechny vrcholy 1} i- r.

2. V kroku 4a pro kazdou zpracovavanou hranu e provedeme navic: Je:'ltii7-p.

U(Kv(e)) > U(Pv(e)) + ate), pak po!ozlme U(Kv(e)) := U(f'v(e)) + a(e.) a ODKUD(Kv(e») := c.

Dukaz spravnosti takto upravcneho algoritmu vyplyva z vet 6.2.7 a 604.1.

6.4.3 Nejkratsi cesty do konkretnfho vrcholn, Vyse popsane algoritmy pro hledani nejkratsich cest v acyklickych grafech lze ukoncit, jsou-li zpracovany vsechny hrany, ktere konci v cilovcm vrcholu. To mu.ze vypocet znacne urychlit. Je zrejme, ze nektera topologicka uspofadani jsou z tohoto hlediska. vyhodnejsi nez jina,

6.4.4 Cvieenf. Reste znovu 610bu 6.3.9b a vyusijte ph tom informaci, ze ten to gnu je acyklicky. Pouzijte oba postupy 6.4.1 i 6.4.2.

6.4.5 Hledani nejdelsich cest v acyklickdrn grafu. Pro hledani nejdelsich cest lze vyuiit popsane aIgoritmy pozmcne znamenek u delek vsech hran. Tim pfevedeme bledani maxima na hled ani minima. Delky hran sice budou zapornc, ale cyklus 0 zaporne delce v acykliekem grafu bit nermiie.

Casto bYva. tato uloha resena specialnrm aigoritmem, ktery z;isbl.me nepatrne odlisnou upravou algoritmu 5.2.7 pro hled ani topologickaho uspofadani (viz tez kapitola 7):

L V kroku 1 polozlrne U(r) := 0 a U(v) :"'" -00 pro vsechny vrcholy 11 1= r.

2. V kroku 4a pro kaidou zpracovavanou hranu e provedeme navic: Jsstlize U(Kv(e)) < U(Pv(c)) + a(e), pak polozime U(Kv(e)) := U(Pv(e)) + a(e) a ODKun(Kv(e» := e.

6.4.6 Vypocet sit'oveho gr afu (viz 2.3.2, str. 42) sc obvykle sklada ze ctyt fizl. V prve fa:>:i najdeme topologicke uspoladani vrcholii nebo hran,

Ve druhe fizi pocltime r.asy Tl (v)., tj. nejdtivejSf mozne 7.lI.i:atky cinllo:lti. K tomu lze pouzit vzorec (2.1) na vsechny vrcholy v topologickern usporadani.

Ve tfetJ" fazi poCitffine easy T2(V)' tj. nejpozdejsi moine terminy, pfi kterych lze stihnout cely projekt v nejla-atsim mosnem case Tl(K). K tomu Ize pouzit vzorec

100

Knpito/a 6_ Nejkratsi CCSGy

(2,2) na vsechny vrcholy v obracenem topologickern tL~p()r;Mhinf, tj._ vrchol P bude zpracovan jako posledni.

Vypocet hodnot Tl a 1"2 Ize alternativne provest podobne jako v 6.4 .. 5, pficemz pro v}·pocet Tl pouaivame hrany v topologickem pofadi a pro vypocet T'l pOllzivame hrany v cbracencm topologlckern pofadi,

Posledni faze spoClvi ve vyPoctu rezetv cinnosti_ eely vypocet i:z;e provest v case O(tn + n).

6.5 Nezaporru; delky hran

Pfipad, kdy vsechny uelky hran jsou nezaporne, je bezespom v praxi neJbeznejsi. Uvadime zoe dva algoritmy pro jeho resenL

Prvy z nich jsme jiz uvcdli - je jim obccne pouzitelny modiflkovany Dijkstruv algorltrnus 6.3.5. Druhym algoritmem je tzv. Dijkslruv algoritmus 6.5.2.

Oba algoritmy, Dijkstrfiv i modifikovany Dijkstniv, se pri praci no. grafech s nezapornyrni delkami hran lisi jen nepatme, behem vypoCtu deiaji skoro totfiz a pro oba plati stejny ~asovy odhad 0(112 + m). Pomoci prograrnatorskych trikil pro vybcr minima (pousltim datove struktury halda, anglicky heap, viz napf. [AHU74, Kucera83, 'T"6pfer95j), lze v obou pHpadech casovyodhad zlepsit na O((m+ + n) logn).

Vypocetni experinrcnty ukazuji, ze tyto triky je vhodne pouzival u gTani s vice nez asi tak stovkou vrcholii. Dale poznamenejme, ze oba tyto algoritrny jsou vhodne zejmena pro hustegrafy (ktere maji "hodne" hran) .. Viz t.ez posnamky 0 dobe vypoctu v 6.3.4 a 6.3.5.

6.5.1 Veta. Jsou-Ii v grafu delky vsech hran nezaporne, pak pfi vyPoclu modifikovanym Dijkstrovym algoritmem 6.3.5 pro kazdy vrchol x plati, ze ve chvili jeho vyjmuti z mnoiiny M je jiz hodnota U{x) definitivni, tj. U(x) = u(r, x).

DUSLEDEK: Kazdy vrchol bude do mnoziny M zai'azen nejvyse jednou, tedy i kazda hrana bude pfikazem 3a spracevana nejvyse jednou, Dale, n-krat opakovanj vyMr minima z nejvyse n hodnot yyiadujc cas O(n'l CaSovy odhad pro eely algoritmus tedy jc O(n'! + m).

DUKAZ.: Oznacmc D mnosinu vsech vrcholii .X, ktere jjz byly vyjmuty z mnofiny

M. Zfcjrne hned po prvnim vykonanl kroku 2 bude D = {r} a tvrzeni vety plat].

Predpokladejma, ze z mnoziny M vybirame vrchol x a i.e pro mnosinu D tvrzcni plati. Dolci.Zeme sporem, ie tvrzenl vety pak plati i pro vrehol z.

Zkusme tedy pro spor predpokhidat.,ze nejkratsi cesta do x rna delku u(r, x) < < U(x). Vezmsme nejkratsi cestu C z vreholu r do vrcholu x. Oznacme w prvni vrchol tet.a cesty, ktery neleiH v D, a dale oznacrne v vrchol, ktery v ceste C vrcbolu w bezprosti'edJle predchizi, a ktery tedy v D leiL Vsechny hrany z mnoziny E+(v) jiz v teto chvili byly algoritrnem zpracovany. Navic, nejkratsi cesta Z 1" do w je cast! cesty C. Jiste tedy plati U(w) = U(I"W). Proto take w 'I- x, nebof U(x) > 1£(r,x). Ponevads nejkratsi cesta C prochazi pres w, plaLi u(r, w) + u(w, x) = u(r, z}, a tedy

101

U(w) +u(w, X) = u{r, x) < U(x) a odtud U(w) < U(x). To je vsak spar s pravidlem pro vyber vrcholu !t (meli jsme vybrat vrchol w). Nejkratsi cesta do x tedy musela mit delku uCI',x) = U(x). 0

1).5.2 Dijks t.ruv algorrt.mus. V literature byva pro vypocst nejkrat~.kh cest v grafu s nez;i,pornYllli delkami hran doporucovan tzv. Dijkstrjiv algoritmus. Je to algoritmus temer t.otoinY a algoritmem, ktery jsmc nazvali modifikovany Dijkstruv. Odlisnost spociva v tom, ze namisto mnosiny M se v nem udrzuje mnozina vrcholu D, Hera obsahuje vrcholy, jejichz hodnota U je jiz definit.ivni a vybira se vrchol s nejnizsi hodnotou U z mnosiny V(G) \ D.

Na grafech s uezapomymi delkami hran funguji oba algoritmy naprosto shodn€! (az na manipulace s muozinaml M a D). Rozdil se projevi, jsou-li delky nskterych hran zaporne. Modifikovany Dijkstruv algoritmus pracuje spravne' i se zapornymi delkarni, ale v tomt.o pripade pro riej plati horsl casovy odhad. Dijkstriiv algoritmus muze dat chybne vysledky, protoze nema zidnou mosuost zpracovat llcktcry vrchol vice nei jednou. (To ovsern nen f z;\;dna ost uda, on nil. to p coste nerd urcen.)

Vzhledem k popularite Dijkstrova algoritmu uvedeme jej v plnern znenL

VS'l'UP: Graf G, vychozi vrchol r a ohodnoceni hran a : E(G) ~ !R takove, ze pro vsechny hrany plati ate) ;::: O.

VV5TUP: Pro kaZdy vrchol II hodnoty U(v), OOKUD(v).

POMOCNE PROMf:NNE: Mnozina vrcholri D t.akl1wi, ie pro vsechny vrcholy v E D bude hodnota U(v) rovna vzdalenosti tt(r,v)_

ALGURITMUS:

1. [lnicializace.] U(r) := 0, pro v ~ r polosime U(v) := 00 a dale D := 0.

2. [Vyber vrcholu.] Jestlize pro vseehny vrcholy v E (V \ D) plat! U(v) = 00, vypocet konci, Jinak z rrmoziny V \ D vyhereme vrchol x, klery rna nejnizsi hodnotu U(x), zatadfme jej do mno7.iny D a pokracujeme krokem 3.

3- [ZpracQvtini hmn lIychdzejicich z vrchot« x.] Pro kazdou hranu e E E+(x) provedeme krok 3a a po zpraeovani vsech hran pokracujcme podle kroku 2.

3a. Polozime y := KV(c). Jestlize plati U(x) + ate) < U(y), pak provedeme U(y) := U(x) + a(e) a ODKUD(~/) := c.

Dodejrne, ze roll mnoziny M podezfelych vrcholu z modifikovaneho Dijkstrova algoritmu 6.3.5 zde hraje mnosina (V \ D) n {v I U(v) < oo}.

6.5.3 Cv icerri. Najdete graf, ktery neobsahuje cyklus se zapornou delkou, obsahujc hranu zapome delky a Dijkstruv algoritmus v nern da chybne vj sledky.

6.5.4 Nejkrats.i cesta do koukret.niho vrcholu. Pokud nas zajiilla nejkratsl cesta pouze do jednoho ciloveho vrcholu, pak oba aJgoritmy (Dijkstnrv i morlifikovany Dijkstrfiv) lze ukoncit, jakrnile cllovy vrchol C odebererne z mnoziny M (nebo u Dijkstrova algoritrnu zafadime do rnnoziny D).

i ,
,
!
I:
r .
[, ,y
! ,
I 102

Pokud marne stesti a cilovy vrchol vypoeteme mezi prvnimi, tj, pokud jen milo vrcholugrafu lez! v mens! vzdalenosti nez cilovy vrchol, muze to vypocct nekJy i znacne urychlit. Ke zlepsenicasoveho odhadu to vsak nevede, protoze 5e muze stat, ze cfiovy vrchol bude nejvzci1ilenejsl, 11 ze tedy bude vypocten liZ jako posledni,

6.6 Vyuzit! dodatecne informace

Ve velmi rozsahlyeh grafech mohou bil vyse llveJen€ postupy !?i'ilis pornale. Namet na zrychleni vypnctu je zalosen na vfre, z:e p:fi hledanf nejkrat.sf cesty z Prahy do Brna je jiste zbytecne zkoumat cestu pres Plzen.

Pokud bychorn dovedli spolehlive zjistit, ze nejkratill cesta z vrcholu r do vreholu c zcela jiste nepovede pres vrchol v, mohli bychorn zpracovani vrcholu v a hran s nim incidsntnich preskocit. Pracovali bychom s mensim grafem, a tedy rychleji. Kriterium pro vyloucenl nekterych vrcholu lze chapat jako dodatecnou inforrnaci, ktera miize urychlit vypocet. Potiz le v tom, z'e takove kritcrium musi byt "uilito na rniru" konkretnim podminkarn ulohy (puvodne zpravidla negrafove}, a take v tom, ze OVerenl spravnosti kriteria (tj. ze nevyloudi prilis mnoho vrcholu] nemusi byt nijak snadne.

Uvedeme jednoduchou modifikaci Dijkstrova algoritmu, ktera pouziva dodatecnou in formaci vc forme ohodnoccni vrcholu h(v).

6.6.1 Heuristickii funkce, Jako dodatecnou informaci pousijernc ohodnoceni vrchol u h ; V --:t JR, ktere spliiuje pro kazdou hranu (z , 1I) podmmku

(6.5)

o.(x,y) 2 h(x) - h(y) .

Spineni teto podminky lzc pro vsechny hranygrafu snadno averit,

Aby hodnoty h mely pi'fznivy vliv na rychlost VyPOf.tll, je tl'eba vzft do bry cilovy vrchol c a. hodnoty h pro nej "uSft na mfru". Dcporucujs se, aby hodnoty h(v) byly dolnfm odhadem vzdalenosti z vrcholu v do ciloveho vrcholu C,. tj .. aby pro kaZdy vrehol v platilo h(v) ~ u(v,c). elm bude odhad presnejsl, tj, eim bude hodnota h('I1) bliie skutecne vzdalenosti u(v, e), tUn bude vypocet rychlejsf,

Jako pfiklad hodnot h vhodnych pro hledani nejkratsich cest v silnicni siti se livid! vzdalenost do ciloveho mista meJen.i vzdusnou ,earoll, Podm!nky (6.5) v tomto pfipade neni tfeba ovefovat, protofe vyplyvaji z geometrickych vlastnosti prostoru.

6.6.2 Dljksrruv algoritmus s heuristikou se od klasickeho Dijkstrova algaritrnu 6.5.2 !isi v jcdinc vecl: pi'i vyberu vrcholu, ktery rna bit v kroku 2 z ai'az en do mnosiny D, volime vzd.v vrchol X, ktcry rna nejniz§i hodnotu U{x) + hex). Stejnou upravu Iza sarnozfejme udeJat i pro modifikovany Dijkstruv algoritmus 6.3.5.

Pro d ukaz spravnosti upravenych algori tmu budeme potfebovat toto lemma..

6.6,3 Lemma, Plati-ll nerovnost (6.5) pro vsechny hrany grafu, pak pro kaide dva vrcholy X,'jJ plat! lake nerovnost u(x,y) ~ hex) - hey}.

6.7. Vfpl)cet ma.tiUf:l vzdlilerlOstf

103

DOKAZ snadno ziskame sectenim nerovnosti (6.5) pro vsechny hrany nejkratsi cesty z. z do y. D

"

6.6.4 veta (spTavnost Dijkstrova algoritrnu 5 heuristikou). Pfedpokla-

dejme, ze vsechny hrany grafu maji nezaporne delky a ze ohodnoceni vrcholu h spliiuje pro vsechny hrany podminku (6-5). Pale pro vscchny vrcholy z zaraZen€ algoritmem 6.6.2 do mnozlny D plat! U(x) = U(1', x). (Jinak receno, pak algoritrnus 6.6.2 pocitri sprtivne.)

DUKAZ je podobnf dUkazu klasicksho Dijkstrova algoritmu, viz take 6.5.1-

N a zacatku je D = {r} a tvrzeni vety plati, Predpokladejme, ze t vrzeni plat! pro rnnosinu D dosud vybranych vrcholu a ite nyni vybirame vrchol x z mnoziny M = (V \ D) n {'U I U(v) < co]. Ukazeme, ze tvrzeni vety platt i pro vrchol z.

Zkusme tedy pro spor pfedpokladat, ze nejkrats! cesta do vrcholu x rna delku u(r, z) < [1(:r;). Oznacme tuto cestu C, dale oznacme w prvni vrchol teto cesty, ktery nelesi v D, a konecne oznacme v vrchol, ktery v ceste C vrcholu w bczprostrcdne pfedchazi, a ktery tedy v D lei!. Vsechny hrany z mn02i11Y E+ Cu) jii. v tete ehvili byly algoritrnem zpracovany. Navic, nejkratsi cesta z r UO 'W je casU cesty C, .Ji~t.e tedy pIaLi' U(w) = 'U(1', w). Proto take 'W I- z', nebof U(x) > n(r, x). Ponevadz nejkratsi cesta C prochaal pres w, plat! u(r, w) + n(w,:r.) = v.(r, :r:), a tedy U(w) + I + ti (to, x) = u( r, x) < U (x). (Az sem to bylo stejne jako v dukaze pro klaslcky Dijkstrav algoritmus.)

Z lemmatu 6_6.3 plyne hew) .5 fL(W,X) + hex) a odtud sectenirn s pfcdchozi nerovnosti dostaneme U(w) + u(w, x) + hew) < U(x) + u(w, x) + hex), a tedy U(w) + hew) < U(x) + h(x), To je vsak spar s pravidlem pro vybcr vrcholu x. Nejkratsi cesta do x tedy musela mit dclku u(r, x) = U(x). 0

6.6.5 Pozmimky. Rychlost Dijkstrova algoritmu s heuristikou je zalozena na tom, Ze vypocet ukoncime ihned po nalezeni definitivni vzdaienosti do cilovcho vrcholu a take na tom, ze vysoka hodnota h v I1cjak6n vreholu zpusobi, ie tento vrchol nebude vybran, a tim uscti'lmc zpracovani hran, ktere z nt1j vychazeji, V krajnim pripade vsak i tento algoritmus bude mnset zpracovat vsechny vrcholy grafu.

Podrninku (6.5) spliiuje trivialnirn zpl"lsobem i nulove ohodnoceni, Klasicky Dijkstrfrv algoritmus 6.5.2 lze tedy pokladat za specialni pfipad algoritmu 6_6.2.

6.7 Vypocet matice vzdalenosti

Samozfcjme, k vypodtu matice vzdalcnosti mu~eme pouait algoritrny popsane v pfedchozich oddilech 6.2 ai 6.5. Tyto algoritmy poskytuji vzay jeden Hdek hledane malice U. Musirne tedy vypocet opakovat pro kazdou volbu vychozfho vrcholu r , tj. v grafu s n vrcholy celkem n-krat. Oddelene provedeni techto vfpoctu ovsem Illlize bft, a take obecne je, mene efektivni nei specialni algoritmus poskytujid celou -rnatici najednou, nebof informace z jednoho vypoctu by mely bYt vyuzity v ostatnich vjpoctech. Proto se dale zameftme na spccialni algoritmy poskytujici celou rna-

tid U a pouzc upozornimc, ze pro fidke graly je vyhodncjsi pocitat kaidy r1idek rna- 'I

I

i:',

You might also like