MS-A0402 Diskreetin matematiikan perusteet Osa 6: Verkkoteoria Riikka Kangaslampi 2017 Matematiikan ja systeemianalyysin laitos Aalto-yliopisto
Verkkojen peruskäsitteitä
Motivaatiota (...) networks may be used to model a huge array of phenomena across all scientific and social disciplines. Examples include the World Wide Web, citation networks, social networks (e.g., Facebook), recommendation networks (e.g., Netflix), gene regulatory networks, neural connectivity networks, oscillator networks, sports playoff networks, road and traffic networks, chemical networks, economic networks, epidemiological networks, game theory, geospatial networks, metabolic networks, protein networks and food webs, to name a few. (Grady & Polimeni: Discrete Calculus. Springer 2010.) 1 / 44 R. Kangaslampi MS-A0402
Verkko Suunnattu verkko on pari [V, E], missä V on joukko, jonka alkiot ovat verkon solmut ja E on joukon V V osajoukko, jonka alkiot ovat solmujen väliset (suunnatut) kaaret eli linkit. Suuntaamaton verkko (tai vain verkko) on pari [V, E] missä V on joukko, jonka alkiot ovat verkon solmut ja E {{a, b} : a, b V } on verkon solmujen välisten kaarien joukko. Jos verkon kahden solmun välillä on kaari, niin ne ovat toistensa naapureita ja kyseisen kaaren päätesolmut. Suuntamaton verkko [V, E] on yksinkertainen, jos {v, v} = {v} / E kaikilla v V ja suunnatun verkon tapauksessa jos [v, v] / E kaikilla v V. 2 / 44 R. Kangaslampi MS-A0402
Verkko Esimerkki 1 Montako kaarta n-solmuisessa yksinkertaisessa verkossa voi enintään olla? ( ) n Vastaus:. Tällaista verkkoa kutsutaan täydelliseksi. 2 3 / 44 R. Kangaslampi MS-A0402
Verkko Verkon [V, E] polku (solmusta v 0 solmuun v n ) on jono [v 0, v 1,..., v n ], missä v j V, j = 0, 1,..., n ja jokaisella j = 1,..., n on olemassa kaari solmujen v j 1 ja v j välillä. Polun [v 0, v 1,..., v n ] pituus on n. Verkon [V, E] sykli (tai kierros) on sen polku [v 0, v 1,..., v n ] missä v n = v 0. Polku [v 0, v 1,..., v n ] on yksinkertainen jos v j v k, 0 j < k n. Sykli [v 0, v 1,..., v n ] on yksinkertainen jos [v 0, v 1,..., v n 1 ] on yksinkertainen ja suuntaamattomassa verkossa n 2. 4 / 44 R. Kangaslampi MS-A0402
Verkko Esimerkki 2 (Yhtenäinen, ei-yksinkertainen verkko) 1 4 7 10 2 5 8 11 3 6 9 12 Punaisella on piirretty yksinkertainen sykli [1, 2, 6, 8, 10, 7, 4, 1] ja vihreällä polku [3, 5, 9, 11, 12, 9], joka ei ole yksinkertainen. Solmujono [1, 2, 3, 4, 5, 6] ei sen sijaan ole polku, koska esimerkiksi {3, 4} ei ole kaari. 5 / 44 R. Kangaslampi MS-A0402
Solmun aste Määritelmä 3 Verkon (V, E) solmun v V aste on deg(v) = {A E : v A} eli niiden kaarien lukumäärä, joiden toinen päätepiste on v. Lause 4 (Kättelylemma) Jokaiselle verkolle (V, E) pätee deg(v) = 2 E. v V Todistus. Käydään kaaret läpi yksi kerrallaan. Kukin kaari kasvattaa solmujen astelukujen summaa kahdella, sillä kunkin kaaren molemmissa päissä on solmu, joiden astelukuun kaari lasketaan kerran. Siispä kaarien lukumäärä on puolet solmujen astelukujen summasta. 6 / 44 R. Kangaslampi MS-A0402
Solmun aste Esimerkki 5 Lasketaan kättelylemman avulla kaarien lukumäärä täydellisessä verkossa K n = (V, E), jossa siis V = n ja E sisältää kaikki mahdolliset kaaret. Toisaalta deg(v) = n 1 kaikilla v V, joten deg(v) = n(n 1). v V Toisaalta (kättelylemma) 2 E = deg(v), joten v V E = 1 ( ) n 2 n(n 1) =. 2 7 / 44 R. Kangaslampi MS-A0402
Verkkoisomorfismi Isomorfismilla tarkoitetaan sellaista kahden joukon välistä bijektiota, joka säilyttää joukon rakenteen; esimerkiksi ryhmä- tai verkkorakenteen. Määritelmä 6 Kaksi verkkoa (V 1, E 1 ) ja (V 2, E 2 ) ovat isomorfiset, jos on olemassa niiden välinen isomorfismi eli bijektio f : V 1 V 2 jolle {u, v} E 1 {f (u), f (v)} E 2. Isomorfiset verkot ovat esitystä vaille samat. Esimerkiksi solmujen asteluvut ja syklien pituudet ovat samoja. 8 / 44 R. Kangaslampi MS-A0402
Verkkoisomorfismi Esimerkki 7 Ovatko alla olevat verkot isomorfiset? 3 2 c b 4 1 d a 5 6 e f Eivät. Vasemmanpuoleisessa verkossa ei ole yhtään sykliä, jonka pituus olisi 3, mutta sellaisia on oikeanpuoleisessa verkossa. Tästä seuraa, etteivät verkot voi olla isomorfiset. 9 / 44 R. Kangaslampi MS-A0402
Verkkoisomorfismi Esimerkki 8 Ovatko alla olevat verkot isomorfiset? 2 1 b a 5 e 3 4 c d Kyllä. Isomorfismiksi verkkojen välille kelpaa esim. ψ : V 1 V 2, missä ψ(2) = c ja ψ(4) = e (tai päinvastoin), jolloin täytyy olla ψ(1) = d, ψ(3) = b ja ψ(5) = a. 10 / 44 R. Kangaslampi MS-A0402
Kävely verkolla Määritelmä Kävely verkolla (V, E) on jono solmuja (v 0,..., v n ) siten, että {v i, v i+1 } E kaikilla i = 0,..., n 1. Luku n on kävelyn pituus. Kävely alkaa solmusta v 0 ja päättyy solmuun v n. Jos v 0 = v n, niin kävely on suljettu. Kävely voidaan ilmaista myös jonona kaaria (e 1,..., e n ) siten, että kahdella peräkkäisellä kaarella on yhteinen solmu. Käsitteellinen ero polun (path) ja kävelyn (walk) välillä: polku voidaan kävellä kahteen eri suuntaan. 11 / 44 R. Kangaslampi MS-A0402
Yhtenäisyys Määritelmä Verkko on yhtenäinen, jos sen jokaisen kahden solmun välillä on kävely. (Yhtäpitävästi: polku.) Solmujen joukon relaatio u v u:n ja v:n välillä on polku on ekvivalenssi, joka jakaa verkon solmut yhtenäisiin ekvivalenssiluokkiin eli komponentteihin. 12 / 44 R. Kangaslampi MS-A0402
Eulerin kävely Määritelmä 9 Verkon Eulerin kävely on kävely, joka käy läpi verkon kaikki kaaret täsmälleen kerran. Vastaavasti Eulerin sykli: Eulerin kävely, jossa lähtöpiste = päätepiste. Sovellus: Chinese postman problem Postimiehen kannattaa etsiä jakelualueelleen reitti, jossa samaa katua ei kävellä kahdesti ja jossa palataan lähtöpisteeseen. Tällainen löytyy täsmälleen silloin, kun jakelualueen ruutukaavasta löytyy Eulerin sykli. (Kadut = kaaret, katujen risteykset = solmut.) 13 / 44 R. Kangaslampi MS-A0402
Eulerin kävely Lause 10 (Euler 1736) Yhtenäisellä verkolla on Eulerin sykli täsmälleen silloin, kun sen jokaisen solmun aste on parillinen. Todistus ( ) Jos verkolla on Eulerin sykli, niin sykli (kävely) saapuu kuhunkin solmuun yhtä monta kertaa kuin se lähtee ko. solmusta. ( ) Olkoon verkon (V, E) jokaisen solmun aste parillinen. Verkolla (V, E) on ainakin yksi sykli: 14 / 44 R. Kangaslampi MS-A0402
Eulerin kävely Todistus (jatkuu) Aloitetaan kävely mielivaltaisesta solmusta ja valitaan kullakin askeleella uusi kaari kunnes joku solmu toistuu. (Verkko on äärellinen, joten joku solmu toistuu lopulta. Siihen asti voidaan asteiden parillisuuden nojalla valita aina uusi kaari.) Kun edellä löydetyn syklin kaaret poistetaan E:stä, niin saadun verkon (V, E ) kaikkien solmujen aste on edelleen parillinen. (Huom. poistettiin syklistä pelkät kaaret.) Siten verkolla (V, E ) on jälleen vähintään yksi sykli, ja voidaan toistaa syklien poistamista kunnes yhtään kaarta ei jää jäljelle. Näin alkuperäinen kaarien joukko E on yhdiste erillisistä sykleistä. 15 / 44 R. Kangaslampi MS-A0402
Eulerin kävely Todistus (jatkuu) Erilliset syklit voidaan edelleen asettaa järjestykseen siten, että peräkkäisillä sykleillä on yksi yhteinen solmu. (Jos tämä ei onnistuisi, niin verkko ei olisi yhtenäinen.) Etsitty Eulerin sykli saadaan, kun kävellään erilliset syklit läpi järjestyksessä seuraavasti: siirrytään seuraavaan sykliin heti kun kohdataan yhteinen solmu, viimeinen sykli kierretään kokonaan, ja lopuksi peruutetaan samojen yhteisten solmujen kautta ja kierretään syklit loppuun. 16 / 44 R. Kangaslampi MS-A0402
Eulerin kävely Esimerkki 11 (Terveisiä ala-asteelta) Voiko alla olevan kuvion piirtää nostamatta kynää paperista? Eli: onko vastaavalla verkolla Eulerin sykli? Vastaus: Kyllä. Perustelemme sen seuraavalla seurauksella edellisestä lauseesta: 17 / 44 R. Kangaslampi MS-A0402
Eulerin kävely Seuraus Verkolla on Eulerin kävely, joka ei ole sykli. Verkolla on täsmälleen kaksi solmua, joiden aste on pariton. Todistus. Kaksi paritonasteista solmua syntyy, kun poistetaan Eulerin syklistä yksi kaari, ja toisinpäin (yhdistetään paritonasteiset solmut kaarella). 18 / 44 R. Kangaslampi MS-A0402
Hamiltonin kävely Määritelmä 12 Verkon Hamiltonin kävely on kävely, joka käy läpi verkon kaikki solmut täsmälleen kerran. Vastaavasti Hamiltonin sykli: Hamiltonin kävely, jossa lähtöpiste = päätepiste ja välissä olevat solmut käydään läpi täsmälleen kerran. Siinä missä Eulerin kävelylle löytyi helppo kriteeri algoritmeineen, niin Hamiltonin kävely on vaikeampi juttu. Yhtäpitävää ehtoa ei tunneta! 19 / 44 R. Kangaslampi MS-A0402
Hamiltonin kävely Riittävä ehto: Lause 13 Lause (G. Dirac 1952) Jos verkolla on n 3 solmua siten, että kullekin solmulle v pätee deg(v) n/2, niin verkolla on Hamiltonin sykli. Todistus. Sivuutetaan. Ks. esim. http://www.proofwiki.org/wiki/dirac s_theorem 20 / 44 R. Kangaslampi MS-A0402
Naapurimatriisi Jos [V, E] on verkko, jossa on m solmua V = {v 1,... v m }, niin sen naapurimatriisi on m m-matriisi 1, {v j, v k } E, A(j, k) = 0, {v j, v k } / E. Lemma 14 Jos n 1 niin A n (j, k) on n-pituisten polkujen lukumäärä solmusta v j solmuun v k. (Todistetaan kurssilla MS-E1050 Graph Theory) 21 / 44 R. Kangaslampi MS-A0402
Naapurimatriisi Esimerkki 15 Verkon 2 4 1 3 5 naapurimatriisi on 0 1 1 0 0 1 0 1 0 0 A = 1 1 0 1 1. 0 0 1 0 1 0 0 1 1 0 22 / 44 R. Kangaslampi MS-A0402
Naapurimatriisi Esimerkki 15 (jatkuu) Nyt 2 1 1 1 1 1 2 1 1 1 A 2 = 1 1 4 1 1 1 1 1 2 1 1 1 1 1 2 2 3 5 2 2 3 2 5 2 2 ja A 3 = 5 5 4 5 5, 2 2 5 2 3 2 2 5 3 2 Matriisin A 3 alkio A 3 (1, 2) = 3 kertoo, että solmusta 1 solmuun 2 on kolme polkua, joiden pituus on 3. Nämä ovat [1, 3, 1, 2], [1, 2, 1, 2] ja [1, 2, 3, 2]. 23 / 44 R. Kangaslampi MS-A0402
Solmujen väritykset
Solmujen värittäminen Määritelmä 16 Verkon G = (V, E) solmuväritys on funktio ω : V {1, 2,..., k} (jollekin k) siten, että {u, v} E ω(u) ω(v). Pienintä lukua k, jolle tällainen funktio löytyy, sanotaan verkon G kromaattiseksi luvuksi ja merkitään χ(g). Esimerkki 17 24 / 44 R. Kangaslampi MS-A0402
Solmujen värittäminen Esimerkki 18 Täydelliselle n-solmuiselle verkolle K n pätee χ(k n ) = n χ(g) = 1 E = 0 χ(g) = 2 G on kaksijakoinen χ(g) 3: ei tunnettua kriteeriä. Kaarien väritys voidaan määritellä vastaavasti. Sille eivät kuitenkaan päde samat tulokset! 25 / 44 R. Kangaslampi MS-A0402
Sovellus: konfliktiverkot Esimerkki 19 Viisi opiskelijaa A, B, C, D ja E tekevät kuutta eri projektityötä seuraavissa ryhmissä: 1. A, B, C 2. B, D 3. B, C 4. B, E 5. A, C 6. D, E. Jos kunkin projektin tekeminen valmiiksi kestää kokonaisen päivän kultakin ryhmän jäseneltä, onko mahdollista saada kaikkia projekteja valmiiksi vähemmässä kuin kuudessa päivässä? 26 / 44 R. Kangaslampi MS-A0402
Sovellus: konfliktiverkot Esimerkki 19 (jatkuu) Muodostetaan konfliktiverkko G, jonka kuusi solmua numeroidaan ryhmien mukaisilla numeroilla 1 6 ja jossa solmujen välillä on kaari ryhmillä on yhteisiä jäseniä. 5 4 6 3 1 2 Tällöin kaikkien projektien saaminen valmiiksi on mahdollista χ(g) päivässä. 27 / 44 R. Kangaslampi MS-A0402
Sovellus: konfliktiverkot Esimerkki 19 (jatkuu) Koska solmut {1, 2, 3, 4} ja niitä yhdistävät kaaret muodostavat täydellisen verkon K 4, niin on oltava χ(g) 4. Toisaalta näemme kuvasta, että solmut 5 ja 2 voidaan värittää samalla värillä, samoin solmut 6 ja 3. 5 4 6 3 1 2 Siten χ(g) = 4 eli neljä päivää riittää. 28 / 44 R. Kangaslampi MS-A0402
Sovellus: ohjelmointikielen kääntäjä Ohjelman silmukan (for, while) suorittaminen nopeutuu, kun kääntäjä tallentaa silmukassa toistuvasti käytetyt muuttujat tavallisen muistin asemesta suorittimen muistiin. Toisaalta suorittimen muistia käytettävissä vähän. Muodostetaan verkko G, jonka solmut ovat silmukassa käytetyt muuttujat ja solmujen välillä on kaari jos niitä vastaavien muuttujien on silmukkaa suoritettaessa oltava käytössä yhtäaikaa. Tarvittavien suoritinmuistipaikkojen määrä on tällöin χ(g). 29 / 44 R. Kangaslampi MS-A0402
Solmujen värittäminen ahneella algoritmilla Kromaattisen luvun löytäminen on vaikea ongelma: ei tunneta algoritmia, jonka nopeus solmujen lukumäärän kasvaessa olisi polynominen. Kuitenkin seuraavan kalvon ahne algoritmi on usein hyödyllinen sekä käytännössä että osana teoreettisia todistuksia ( by the greedy algorithm... ). Ahneen algoritmin antama luku riippuu järjestyksestä, jossa algoritmi käy läpi verkon solmut, ja ainakin yksi solmujen järjestys antaa verkon kromaattisen luvun. (Mietitään kohta miksi.) 30 / 44 R. Kangaslampi MS-A0402
Solmujen värittäminen ahneella algoritmilla Helppo, mutta ei välttämättä optimaalinen tapa solmujen värityksen löytämiseksi on seuraava ahne algoritmi: Ahne algoritmi Aseta solmut johonkin järjestykseen: [v 1, v 2,..., v n ]. Aseta värit johonkin järjestykseen: [c 1, c 2,..., c r ]. Väritä ensimmäinen solmu ensimmäisellä värillä, eli ω(v 1 ) = c 1. Jos solmut v 1,..., v k on väritetty, niin väritä solmu v k+1 ensimmäisellä käytettävissä olevalla värillä siten, että ehto ettei naapureita väritetä samalla värillä toteutuu, eli ω(v k+1 ) = c j missä j = min {i 1 : {v p, v k+1 } E & p k ω(v p ) c i }. 31 / 44 R. Kangaslampi MS-A0402
Solmujen värittäminen ahneella algoritmilla Esimerkki 20 Väritetään äskeinen konfliktiverkko ahneella algoritmilla, solmun numerojärjestyksessä ja värit järjestyksessä punainen, sininen, vihreä, keltainen, oranssi, violetti. 5 4 6 3 1 2 32 / 44 R. Kangaslampi MS-A0402
Solmujen värittäminen ahneella algoritmilla Lause 21 Olkoon verkon G solmujen suurin asteluku k. Tällöin χ(g) k + 1. Todistus. Kullakin solmulla on enintään k naapuria, joten enintään k väriä riittää naapurien värittämiseen, ja siten itse solmu voidaan värittää jollakin (k + 1):stä ensimmäisestä käytettävissä olevasta väristä. 33 / 44 R. Kangaslampi MS-A0402
Virittäjäpuut
Puu Määritelmä 22 Puu on yhtenäinen, syklitön verkko. Määritelmä 23 Juurrettu puu on puu, jonka yksi solmu v 0 on valittu sen juureksi. Tällöin solmun v taso (eng. level) on kävelyn (v 0,..., v) pituus solmu on lehti (eng. leaf) jos se on tasolla i eikä sillä ole naapureita tasolla i + 1. Esimerkki 24 Sukupuut, tiedostopuut, valintapuut. 34 / 44 R. Kangaslampi MS-A0402
Virittäjäpuu, painotettu verkko Määritelmä 25 Yhtenäisen verkon virittäjäpuu on puu, joka sisältää verkon kaikki solmut. (Tällainen löytyy aina; poistetaan sykleistä kaaria. Huom. ei yksikäsitteinen.) Määritelmä 26 Painotettu verkko on verkko G = (V, E) varustettuna painofunktiolla w : E R. Verkon kokonaispaino on w(g) = e E w(e). Esimerkki 27 Kaupungit yhdistettyinä datakaapeleilla; w(e) on kaapelin e hinta, tai sähköverkot; w(e) on johtimen e resistanssi. 35 / 44 R. Kangaslampi MS-A0402
Minimaalinen virittäjäpuu (eng. MST) Määritelmä 28 Painotetun verkon G minimaalinen virittäjäpuu on sellainen G:n virittäjäpuu T, jolle w(t ) w(u) mille tahansa G:n virittäjäpuulle U. Ahne algoritmi (Prim) Valitaan kaari e 1, jonka paino on minimaalinen. Valitaan e 1 :n naapurikaari e 2, jonka paino on e 1 :n naapurikaarien joukossa minimaalinen. Jatketaan: joka vaiheessa valitaan tähänastisten kaarien naapurien joukosta minimaalinen siten, että puurakenne (yhtenäisyys, ei syklejä) säilyy Näin saadaan minimaalinen virittäjäpuu T, jonka kaaret ovat {e 1,..., e n }. 36 / 44 R. Kangaslampi MS-A0402
MST (= Minimal Spanning Tree) Esimerkki 29 (Virittäjäpuu Primin algoritmilla) 3 A B 6 5 F 7 4 4 5 C 5 3 E 6 D 37 / 44 R. Kangaslampi MS-A0402
MST Miksi edellä saatu virittäjäpuu T todella on minimaalinen? Olkoon U T toinen virittäjäpuu ja olkoon e k = {u, v} ensimmäinen kaarista {e 1,..., e n }, joka ei ole U:n kaari. Kävellään u:sta v:hen puussa U; olkoon e tämän kävelyn ensimmäinen kaari, joka ei ole joukossa {e 1,..., e k 1 }. Tällöin ahneen algoritmin nojalla w(e k ) w(e). Korvataan kaari e kaarella e k. Virittäjäpuu U tulee korvattua virittäjäpuulla U k, jolle w(u k ) = w(u) w(e) + w(e k ) w(u). Olkoon e k+1 ensimmäinen T :n kaari, joka ei ole U k :n kaari. Toistetaan samaa prosessia; saadaan virittäjäpuiden jono U, U k,..., U n = T siten, että w(t ) = w(u n ) w(u n 1 )... w(u k ) w(u). 38 / 44 R. Kangaslampi MS-A0402
MST Edellä esitelty ahne MST-algoritmi oli Primin algoritmi. Toinen ahne algoritmi on Kruskalin algoritmi: valitaan kaari e 1, jonka paino on minimaalinen valitaan kaari e 2, jonka paino on minimaalinen joukossa E \ {e 1 } kussakin vaiheessa hylätään sellaiset kaaret, jotka muodostaisivat syklin; jatketaan kunnes virittäjäpuu. Esimerkit näistä algoritmeista verkkotehtävissä. 39 / 44 R. Kangaslampi MS-A0402
MST Esimerkki 30 (Virittäjäpuu Kurskalin algoritmilla) 3 A B 6 5 F 7 4 4 5 5 C 5 3 E 6 D 40 / 44 R. Kangaslampi MS-A0402
Lopuksi
Jatkoa? Monta diskreetin matematiikan aihealuetta jäi käsittelemättä. Hyvä niin, tästä voi sitten jatkaa eteenpäin! Diskreetin matematiikan jatkokursseja: MS-C1080 - Algebran perusrakenteet MS-E1050 - Graph theory MS-E1051 - Combinatorics MS-E1110 - Number theory MS-E1111 - Galois theory 41 / 44 R. Kangaslampi MS-A0402
Jatkoa? Verkoista kiinnostunut hyötyy myös tilastotieteestä, esim. MS-C2104 - Tilastollisen analyysin perusteet MS-C2103 - Koesuunnittelu ja tilastolliset mallit ja diskreetistä optimoinnista esim. MS-C2105 - Optimoinnin perusteet MS-E2140 - Linear programming MS-E2139 - Nonlinear programming unohtamatta tietotekniikan laitoksen verkkoihin ja algoritmeihin liittyviä kursseja. 42 / 44 R. Kangaslampi MS-A0402
Lopuksi Palautekysely aukeaa lähipäivinä, vastauslinkki tulee sähköpostitse. Jos haluat osallistua loppukokeeseen, muista ilmoittautua Oodissa. 43 / 44 R. Kangaslampi MS-A0402
Lopuksi Suurkiitos kaikille! 44 / 44 R. Kangaslampi MS-A0402