5.2 Eulerin kehät ja -polut



Samankaltaiset tiedostot
Diskreetit rakenteet

Johdatus diskreettiin matematiikkaan Harjoitus 7,

V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen

Kurssikoe on maanantaina Muista ilmoittautua kokeeseen viimeistään 10 päivää ennen koetta! Ilmoittautumisohjeet löytyvät kurssin kotisivuilla.

PARITUS KAKSIJAKOISESSA

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Algoritmi on periaatteellisella tasolla seuraava:

Induktio kaavan pituuden suhteen

Eräs keskeinen algoritmien suunnittelutekniikka on. Palauta ongelma johonkin tunnettuun verkko-ongelmaan.

verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Tehtävä 4 : 2. b a+1 (mod 3)

Algoritmit 1. Luento 13 Ti Timo Männikkö

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia

Näytetään nyt relaatioon liittyvien ekvivalenssiluokkien olevan verkon G lohkojen särmäjoukkoja. Olkoon siis f verkon G jokin särmä.

Tarkennamme geneeristä painamiskorotusalgoritmia

Algoritmit 1. Luento 9 Ti Timo Männikkö

Induktiotodistus: Tapaus n = 0 selvä; ol. väite pätee kun n < m.

Matematiikan tukikurssi

Lyhin kahden solmun välinen polku

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.

Algoritmit 1. Luento 8 Ke Timo Männikkö

Johdatus graafiteoriaan

MAA10 HARJOITUSTEHTÄVIÄ

Johdatus graafiteoriaan

Graateorian maksimivirtausalgoritmi

Lukion. Calculus. Polynomifunktiot. Paavo Jäppinen Alpo Kupiainen Matti Räsänen Otava PIKATESTIN JA KERTAUSKOKEIDEN TEHTÄVÄT RATKAISUINEEN

6. Approksimointialgoritmit

Luento 6. June 1, Luento 6

Tehtävä 10 : 1. Tehtävä 10 : 2

Polkuintegraali yleistyy helposti paloitain C 1 -poluille. Määritelmä Olkoot γ : [a, b] R m paloittain C 1 -polku välin [a, b] jaon

Johdatus graafiteoriaan

Tehtävä 5 : 1. Tehtävä 5 : 2

T : Max-flow / min-cut -ongelmat

0 v i v j / E, M ij = 1 v i v j E.

KÄYTÄNNÖN JÄRJESTELYJÄ

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko,

isomeerejä yhteensä yhdeksän kappaletta.

Ei-yhteydettömät kielet [Sipser luku 2.3]

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe ratkaisuja (Jyrki Kivinen)

Matematiikan mestariluokka, syksy

j(j 1) = n(n2 1) 3 + (k + 1)k = (k + 1)(k2 k + 3k) 3 = (k + 1)(k2 + 2k + 1 1)

Esimerkki 8. Ratkaise lineaarinen yhtälöryhmä. 3x + 5y = 22 3x + 4y = 4 4x 8y = r 1 + r r 3 4r 1. LM1, Kesä /68

Numeeriset menetelmät

Shorin algoritmin matematiikkaa Edvard Fagerholm

Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna

Luonnollisten lukujen laskutoimitusten määrittely Peanon aksioomien pohjalta

Äärellisten automaattien ja säännöllisten kielten ekvivalenssi

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Selvästi. F (a) F (y) < r x d aina, kun a y < δ. Kolmioepäyhtälön nojalla x F (y) x F (a) + F (a) F (y) < d + r x d = r x

Verkkojen värittäminen

FUNKTIONAALIANALYYSIN PERUSKURSSI Johdanto

7. Satunnaisalgoritmit (randomized algorithms)

Diskreetin matematiikan perusteet Esimerkkiratkaisut 3 / vko 10

Pienin virittävä puu (minimum spanning tree)

Verkon värittämistä hajautetuilla algoritmeilla

Aluksi Kahden muuttujan lineaarinen epäyhtälö

monissa laskimissa luvun x käänteisluku saadaan näyttöön painamalla x - näppäintä.

1 sup- ja inf-esimerkkejä

Tarkastelemme ensin konkreettista esimerkkiä ja johdamme sitten yleisen säännön, joilla voidaan tietyissä tapauksissa todeta kielen ei-säännöllisyys.

58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 2, , vastauksia

Epäyhtälön molemmille puolille voidaan lisätä sama luku: kaikilla reaaliluvuilla a, b ja c on voimassa a < b a + c < b + c ja a b a + c b + c.

Ratkaisu. Tulkitaan de Bruijnin jonon etsimiseksi aakkostossa S := {0, 1} sanapituudelle n = 4. Neljän pituisia sanoja on N = 2 n = 16 kpl.

b) Olkoon G vähintään kaksi solmua sisältävä puu. Sallitaan verkon G olevan

Eulerin verkkojen karakterisointi

Tehtävä 8 : 1. Tehtävä 8 : 2

Lineaarialgebra ja matriisilaskenta II. LM2, Kesä /141

Cantorin joukon suoristuvuus tasossa

Solmu 3/ toteutuu kaikilla u,v I ja λ ]0,1[. Se on aidosti konveksi, jos. f ( λu+(1 λ)v ) < λf(u)+(1 λ)f(v) (2)

7.4. Eulerin graafit 1 / 22

2.2 Täydellinen yhtälö. Ratkaisukaava

Johdatus verkkoteoriaan 4. luento

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

Kysymys: Voidaanko graafi piirtää tasoon niin, että sen viivat eivät risteä muualla kuin pisteiden kohdalla?

1 Määrittelyjä ja aputuloksia

Algoritmit 1. Luento 13 Ma Timo Männikkö

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta

Algoritmit 2. Luento 8 Ke Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Yhtenäisyydestä. Johdanto. Lähipisteavaruus. Tuomas Korppi

Kiinalaisen postimiehen ongelma

2.7 Neliöjuuriyhtälö ja -epäyhtälö

Jos sekaannuksen vaaraa ei ole, samastamme säännöllisen lausekkeen ja sen esittämän kielen (eli kirjoitamme R vaikka tarkoitammekin L(R)).

Reaalifunktioista 1 / 17. Reaalifunktioista

Likimääräisratkaisut ja regularisaatio

10. Painotetut graafit

3SAT-ongelman NP-täydellisyys [HMU ]

MS-A0402 Diskreetin matematiikan perusteet

Kaikki kurssin laskuharjoitukset pidetään Exactumin salissa C123. Malliratkaisut tulevat nettiin kurssisivulle.

Kuvauksista ja relaatioista. Jonna Makkonen Ilari Vallivaara

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

Matematiikan peruskurssi 2

FORD ST _ST_Range_V2_ MY.indd FC1-FC3 27/06/ :24:01

1 sup- ja inf-esimerkkejä

( ) ( ) ( ) ( ( ) Pyramidi 4 Analyyttinen geometria tehtävien ratkaisut sivu 271 Päivitetty a) = keskipistemuoto.

811312A Tietorakenteet ja algoritmit V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit

Topologia Syksy 2010 Harjoitus 9

3. Hakupuut. B-puu on hakupuun laji, joka sopii mm. tietokantasovelluksiin, joissa rakenne on talletettu kiintolevylle eikä keskusmuistiin.

Suuntaamattomia verkkoja lukiossa itsetuotetun oppimateriaalin analysointia

Transkriptio:

5.2 Eulerin kehät ja -polut Königsbergin sillat: onko mahdollista tehdä (kuivin jaloin) kävelyretki siten, että jokainen silta kuljetaan tasan kerran Eulerin polku on verkon polku, joka kulkee jokaisen kaaren kautta tasan yhden kerran. Eulerin kehä on Eulerin polku, joka on kehä (palaa lähtösolmuunsa). Lause (Euler 1735) Suuntaamattomassa verkossa G on Eulerin kehä jos ja vain jos 1. G on yhtenäinen ja 2. jokaisen verkon G solmun asteluku on parillinen. Todistus Ehtojen (1) ja (2) välttämättömyys on ilmeinen. Osoitetaan niiden riittävyys induktiolla kaarten lukumäärän E suhteen. 276

Jos E 3, väite on selvä. Oletetaan, että väite pätee kun E < k. Tarkastellaan verkkoa, joka toteuttaa ehdot (1) ja (2) ja jolle E = k. Verkossa G on ainakin yksin kehä; olkoon sen kaarten joukko P E, P 3. Muodostetaan G = (V, E P ). Verkon G jokainen yhtenäinen komponentti toteuttaa ehdot (1) ja (2). Induktio-oletuksen nojalla jokaisessa yhtenäisessä komponentissa on Eulerin kehä. Koska G on yhtenäinen, saadaan Eulerin kehä seuraamalla kehää P komponentista toiseen ja yhdistämällä siihen komponenttien Eulerin kehät. 277

Samalla idealla saadaan todistetuksi erilaisia variaatioita: Lause Suuntaamaton yhtenäinen verkko sisältää Eulerin kehän, jos ja vain jos paritonasteisia solmuja on 0 tai 2. Lause Suunnattu yhtenäinen verkko sisältää Eulerin kehän, jos ja vain jos jokaisen solmun tuloaste on sama kuin lähtöaste. Lause Suunnattu yhtenäinen verkko sisältää Eulerin polun, jos ja vain jos joko jokaisen solmun tuloaste on sama kuin lähtöaste tai yhdessä solmussa tuloaste = lähtöaste + 1, yhdessä tuloaste = lähtöaste 1 ja muissa tuloaste = lähtöaste. Kaikki nämä yleistyvät ilmeisellä tapauksella moniverkkoihin, joissa kahden solmun välillä voi olla useita kaaria (kuten alkuperäisessä siltaongelmassa). Eulerin kehä voidaan myös löytää tehokkaasti. Tämä tapahtuu etsimällä kehiä ja yhdistämällä niitä, hieman kuten lauseen todistuksessa. Yksityiskohdat jätetään harjoitustehtäväksi. 278

5.3 Verkon pariutus (matching) Olkoon G = (V, E) suuntaamaton verkko. Kaarijoukko M E on pariutus, jos kukin solmu v V esiintyy korkeintaan yhdessä joukon M kaaressa. Pariutus M on maksimipariutus, jos M N kaikilla pariutuksilla N. Jos lisäksi M = V /2, niin M on täydellinen. Esimerkki On annettu n tehtävää t 1,..., t n ja n suorittajaa s 1,..., s n. Asetetaan V = { t 1,..., t n, s 1,..., s n } ja E = { (t i, s j ) suorittaja s j osaa tehdä tehtävän t i }. Nyt verkon (V, E) pariutus antaa joillekin tehtäville pätevän suorittajan, ja täydellisessä pariutuksessa kaikki tehtävät tulevat suoritetuksi. Verkko on kaksijakoinen (bipartite), jos V = V 1 V 2, missä V 1 V 2 = ja E V 1 V 2. Ylläolevassa esimerkissä verkko on kaksijakoinen, V 1 = { t 1,..., t n } ja V 2 = { s 1,..., s n }. Yleisessä tapauksessa joukot V 1 ja V 2 voivat olla eri suuruisia (jolloin täydellinen pariuttaminen on tietysti mahdotonta). 279

Keskitymme tässä kaksijakoisiin verkkoihin. Niissäkään maksimipariutuksen löytäminen ei ole triviaalia. Jos esim. V 1 = V 2 = n/2 ja jokaisesta puoliskon V 1 solmusta on kaari k solmuun puoliskossa V 2, raakaan voimaan perustuva ratkaisu veisi ajan Ω(k n/2 ). Seuraavassa esitettävä menetelmä perustuu täydennyspolkuihin. Solmu v V on pariutettu pariutuksessa M jos (v, w) M jollain w V, muuten vapaa. Olkoon M kaksijakoisen verkon G = (V 1 V 2, E) pariutus ja (v 1,..., v k ) yksinkertainen polku. Kaarijoukko P = { (v 1, v 2 ),..., (v k 1, v k ) } on pariutuksen M täydennyspolku jos 1. solmut v 1 ja v k ovat vapaita ja 2. k on parillinen, kaaret (v 2, v 3 ), (v 4, v 5 ),..., (v k 2, v k 1 ) kuuluvat pariutukseen M ja kaaret (v 1, v 2 ), (v 3, v 4 ),..., (v k 1, v k ) kuuluvat sen komplementtiin E M. Merkitään A B = (A B) (A B) (symmetrinen erotus). 280

Lemma Jos P on parituksen M täydennyspolku, niin N = M P on pariutus ja N = M + 1. Todistus Olkoon P = P 1 P 2, missä P 1 E M ja P 2 M. Siis N = (M P 2 ) P 1. Koska P 1 = P 2 + 1, nähdään N = M + 1. Väitetään, että jokaisen solmun v V asteluku verkossa (V, N) on korkeintaan 1. Solmujen v 1 ja v k asteluvuksi tulee tasan 1 täydennyspolun määritelmän mukaan. Olkoon v { v 1, v k } sellainen, että (v, w) P 1 jollain w. Täydennyspolun määritelmän perusteella (v, w ) P 2 M tasan yhdellä w, joten solmun v asteluku on sama verkoissa (V, N) ja (V, M). Jos ei päde (v, w) P 1, niin selvästi solmun v asteluku verkossa (V, N) on korkeintaan sama kuin verkossa (V, M). Koska M on pariutus, minkään solmun asteluvuksi ei tule yli 1. 281

Edellä esitetty johtaa seuraavaan algoritmihahmotelmaan kaksijakoisen verkon G = (V 1 V 2, E) pariuttamiseksi: 1. Aseta M :=. 2. Etsi pariutuksen M täydennyspolku P. 3. Jos täydennyspolkua ei löydy, tulosta M. Muuten aseta M := M P ja palaa kohtaan 2. Osoitamme pian, että tulostettava M todella on maksimipariutus. Sitä ennen täsmennetään, miten kohta 2 voidaan tehokkaasti toteuttaa. Muodostetaan verkosta G suunnattu verkko G, jossa kaaret on suunnattu joukosta V 2 joukkoon V 1 jos ne ovat pariutuksessa M, ja joukosta V 1 joukkoon V 2 muuten. Siis täydennyspolku muodostaa suunnatun polun vapaasta joukon V 1 solmusta vapaaseen joukon V 2 solmuun. Tällainen on helppo löytää syvyyssuuntaisella haulla, jos sellainen on olemassa. Koska täydennyspolkuja tarvitaan enimmillään O( V ) kappaletta, aikavaativuudeksi tulee O( V ( V + E )) = O( V E ). (Voidaan olettaa V 2 E. Muuten verkossa on eristettyjä solmuja, jotka voidaan aluksi poistaa.) 282

Lause Olkoon M kaksijakoisen verkon G = (V 1 V 2, E) pariutus. Jos M ei ole maksimipariutus, sillä on täydennyspolku. Todistus Olkoon N pariutus ja N > M. Osoitetaan, että verkossa G = (V, M N) on pariutukselle M täydennyspolku. Merkitään S = M N. Koska N S > M S, sisältää M N enemmän joukon N M kaaria kuin joukon M N kaaria. Koska M ja N ovat pariutuksia, jokaisen solmun aste verkossa (V, M N) on korkeintaan 2. Lisäksi jos solmun aste on 2, toinen siihen tuleva kaari on joukosta M N ja toinen joukosta N M. Verkon G yhtenäiset komponentit voidaan siis jakaa seuraaviin luokkiin: 1. yksittäiset solmut, 2. kehät, joissa joka toinen kaari on joukosta M N ja joka toinen joukosta N M ja 3. yksinkertaiset polut, joissa joka toinen kaari on joukosta M N ja joka toinen joukosta N M. Luokkien 1 ja 2 komponentit sisältävät yhtä monta kaarta joukoista M N ja N M, joten luokassa 3 on oltava ainakin yksi polku, jossa on enemmän joukon N M kaaria kuin joukon M N. Tämä on haluttu täydennyspolku. 283

Edellä esitetyn perusteella täydennyspolkujen syvyyssuuntaiseen etsimiseen perustuva algoritmi tuottaa kaksijakoisen verkon maksimipariutuksen ajassa O( V E ). Tehokkaammilla menetelmillä maksimipariutus saadaan ajassa O( V E ) kaksijakoisessa verkossa (Hopcroft ja Karp, 1973) ja myös yleisessä verkossa (Micali ja Vazirani, 1980). Pariutusongelma kaksijakoisessa verkossa voidaan myös palauttaa maksimivuo-ongelmaan, jota ryhdymme seuraavaksi tarkastelemaan. Todetaan vielä klassinen kombinatorinen tulos täydellisten pariutusten olemassaolosta. Lause (Hall 1935) Olkoon G = (V 1 V 2, E) kaksijakoinen verkko, jolla V 1 = V 2. Olkoon solmujoukon U V 1 naapurien joukko N(U) = { v V 2 (u, v) E jollain u U }. Nyt verkolla G on täydellinen pariutus, jos ja vain jos N(U) U kaikilla U V 1. Ehdon välttämättömyys on ilmeinen. Riittävyys seuraa helpohkolla induktiolla, joka kuitenkin sivuutetaan. 284

5.4 Maksimivuo-ongelma Maksimivuo-ongelmassa on annettu suunnattu verkko (V, E), joka ei sisällä yhden mittaisia silmukoita ((v, v) E kaikilla v V ), lähde (source) s V ja nielu (sink) t V ja kapasiteettifunktio c: V 2 R, josta oletetaan c(u, v) 0 aina ja c(u, v) = 0 jos (u, v) E. Intuitiivisesti tarkoituksena on saada aikaan mahdollisimman suuri virtaus lähteestä nieluun verkon (V, E) esittämässä putkistossa, kun c(u, v) ilmaisee solmujen u ja v välisen putken kapasiteetin ja neste noudattaa normaaleja aineen häviämättömyyslakeja. Muodollisemmin funktio f: V 2 R on vuo jos f(u, v) c(u, v) kaikilla u, v V, f(u, v) = f(v, u) kaikilla u, v V ja v V f(u, v) = 0 kaikilla u V { s, t }. Tavoitteena on etsiä maksimivuo eli vuo f, jolla on mahdollisimman suuri voimakkuus f = v V f(s, v). 285

Jos (u, v) E ja (v, u) E, nähdään, että f(u, v) = 0. Jos (u, v) E mutta (v, u) E, saadaan c(u, v) f(v, u) 0 f(u, v) c(u, v). Vuon voimakkuus on siis lähteestä poistuva kokonaisvuo, tai vaihtoehtoisesti nieluun saapuva kokonaisvuo: f(s, v) f(u, t) v V u V = f(s, v) + f(t, v) v V v V = f(u, v) f(u, v) u V v V u V { s,t } v V = 1 f(u, v) + 1 f(v, u) 2 2 u V v V ( V 2) V 0 = 0. u V Jatkossa merkitsemme f(u, X) = v X f(u, v) jne. Siis f = f(s, V ) = f(v, t). v V Vaikka määritelmät sallivat vuon voimakkuuden olla negatiivinen, oletamme jatkossa aina f 0. 286

Historia Maksimivuo-ongelma on klassinen kombinatorinen optimointiongelma, jolle on kehitetty yhä tehokkaampia ja tehokkaampia algoritmeja. Merkitään jatkossa n = V ja m = E, huom. aina n m n 2 ja usein m n 2. Lisäksi tässä C = max u,v f(u, v). vuosi tekijät aikavaativuus 1956 Ford & Fulkerson 1969 Edmonds & Karp O(nm 2 ) 1970 Dinic O(n 2 m) 1974 Karzanov O(n 3 ) 1977 Cherkasky O(n 2 m 1/2 ) 1978 Galil O(n 5/3 m 2/3 ) 1980 Sleator & Tarjan O(nm log n) 1986 Goldberg & Tarjan O(nm log(n 2 /m)) 1994 King, Rao & Tarjan O(nm log n log m n log n ) 1998 Goldberg & Rao O(min { n 2/3, m } 1/2 m log(n 2 /m) log C) Sivutuotteena on saatu mm. itsesäätyvät binäärihakupuut (splay trees; Sleator & Tarjan). Avoin kysymys: onko O(nm) mahdollista? Tällä kurssilla käymme ensin läpi klassiset Ford-Fulkerson- ja Edmonds-Karp-algoritmit ja sitten erään Karzanovin ideaan perustuvan O(n 3 ) algoritmin. 287

Vuon f jäännöskapasiteetti r: V 2 R määritellään r(u, v) = c(u, v) f(v, w). Siis aina r(u, v) 0. Vuon f jäännösverkko on R = (V, E ) missä E = { (u, v) E r(u, v) > 0 }. Kun puhumme vuosta jäännösverkosta, lähde ja nielu ovat entiset mutta kapasiteettifunktiona on jäännöskapasiteetti. Täydennyspolku on jäännösverkon suunnattu polku lähteestä nieluun. Täydennyspolun p = (v 0, v 1,..., v k ), v 0 = s, v k = t, jäännöskapasiteetti on res(p) = min { r(v i 1,i ) 1 i k }. Siis res(p) > 0, ja jäännösverkon maksimivuon voimakkuus on ainakin res(p). 288

4,1 b 3,0 d 3,2 s 1,1 2,2 t 3,3 a 3,2 c 4,2 Verkko ja vuo. Merkintä a 3,2 c tarkoittaa c(a, c) = 3 ja f(a, c) = 2 jne. 3 b d 3 1 s 1 1 2 2 t 2 3 1 a 2 c 2 Edellisen vuon jäännösverkko. Vuolla on esim. jäännöspolku p = (s, b, d, a, c, t) jonka jäännöskapasiteetti on res(p) = r(a, c) = 1. 289

Verkon G leikkaus on ositus (X, X) missä X V, X = V X ja lisäksi s X ja t X. Leikkauksen kapasiteetti on cap(x, X) = c(u, v) u X v X Leikkauksen ylittävä vuo millä tahansa leikkauksella on sama kuin vuon voimakkuus: f(x, X) = f(x, V ) f(x, X) = f(s, V ) + f(u, V ) 1 2 ( u X u X,u s v X f(u, v) + u X ) f(v, u) v X = f(s, V ) + ( X 1) 0 1 2 0 = f. Maksimivuot voidaan karakterisoida leikkausten kapasiteettien avulla: Maksimivuo-minimileikkauslause Seuraavat ehdot ovat yhtäpitäviä: 1. vuo f on maksimivuo 2. vuolla f ei ole täydennyspolkuja 3. f = cap(x, X) jollekin leikkaukselle (X, X) 290

Todistus (1) (2): Jos täydennyspolku on, sitä pitkin vuota voidaan kasvattaa. (2) (3): Oletetaan, että täydennyspolkua ei ole. Olkoon X niiden solmujen joukko, joihin on polku jäännösverkossa R. Siis t X, ja (X, X) on leikkaus. Joukon X määritelmän nojalla f(u, v) = c(u, v) kaikilla u X, v X. Siis f = f(x, X) = cap(x, X). (3) (1): Koska f cap(x, X) mille tahansa vuolle ja leikkaukselle, ehdosta (3) seuraa, että f on maksimivuo (ja (X, X) on minimileikkaus eli kapasiteetiltaan minimaalinen leikkaus). 291