MS-A0401 Diskreetin matematiikan perusteet Osa 6: Verkkoteoria Riikka Kangaslampi Syksy 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 / 46 R. Kangaslampi MS-A0401
Verkko 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 linkkien joukko. Verkko on suunnattu tai suuntaamaton riippuen siitä, tarkastellaanko yksi- vai kaksisuuntaisia linkkejä. Jos verkon kahden solmun välillä on linkki, niin ne ovat toistensa naapureita ja kyseisen linkin päätesolmut. Suuntamaton verkko [V, E] on yksinkertainen, jos {v, v} / E kaikilla v V, eli verkossa ei ole silmukoita. 2 / 46 R. Kangaslampi MS-A0401
Verkko Esimerkki 1 Montako linkkiä n-solmuisessa yksinkertaisessa verkossa voi enintään olla? ( ) n Vastaus:. Tällaista verkkoa kutsutaan täydelliseksi. 2 3 / 46 R. Kangaslampi MS-A0401
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 linkki 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 / 46 R. Kangaslampi MS-A0401
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 linkki. 5 / 46 R. Kangaslampi MS-A0401
Solmun aste Määritelmä 3 Verkon (V, E) solmun v V aste on deg(v) = {A E : v A} eli niiden linkkien 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 linkit läpi yksi kerrallaan. Kukin linkki kasvattaa solmujen astelukujen summaa kahdella, sillä kunkin linkin molemmissa päissä on solmu, joiden astelukuun linkki lasketaan kerran. Siispä linkkien lukumäärä on puolet solmujen astelukujen summasta. 6 / 46 R. Kangaslampi MS-A0401
Solmun aste Esimerkki 5 Lasketaan kättelylemman avulla linkkien lukumäärä täydellisessä verkossa K n = (V, E), jossa siis V = n ja E sisältää kaikki mahdolliset linkit. 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 / 46 R. Kangaslampi MS-A0401
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 / 46 R. Kangaslampi MS-A0401
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 / 46 R. Kangaslampi MS-A0401
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 / 46 R. Kangaslampi MS-A0401
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 linkkejä (e 1,..., e n ) siten, että kahdella peräkkäisellä linkillä on yhteinen solmu. Käsitteellinen ero polun (path) ja kävelyn (walk) välillä: polku voidaan kävellä kahteen eri suuntaan. 11 / 46 R. Kangaslampi MS-A0401
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 / 46 R. Kangaslampi MS-A0401
Eulerin kävely Määritelmä 9 Verkon Eulerin kävely on kävely, joka käy läpi verkon kaikki linkit 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 = linkit, katujen risteykset = solmut.) 13 / 46 R. Kangaslampi MS-A0401
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 / 46 R. Kangaslampi MS-A0401
Eulerin kävely Todistus (jatkuu) Aloitetaan kävely mielivaltaisesta solmusta ja valitaan kullakin askeleella uusi linkki kunnes joku solmu toistuu. (Verkko on äärellinen, joten joku solmu toistuu lopulta. Siihen asti voidaan asteiden parillisuuden nojalla valita aina uusi linkki.) Kun edellä löydetyn syklin linkit poistetaan E:stä, niin saadun verkon (V, E ) kaikkien solmujen aste on edelleen parillinen. (Huom. poistettiin syklistä pelkät linkit.) Siten verkolla (V, E ) on jälleen vähintään yksi sykli, ja voidaan toistaa syklien poistamista kunnes yhtään linkkiä ei jää jäljelle. Näin alkuperäinen linkkien joukko E on yhdiste erillisistä sykleistä. 15 / 46 R. Kangaslampi MS-A0401
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 / 46 R. Kangaslampi MS-A0401
Eulerin kävely Esimerkki 11 (Terveisiä ala-asteelta) Voiko alla olevan kuvion piirtää nostamatta kynää paperista? Eli: onko vastaavalla verkolla Eulerin kävely? Vastaus: Kyllä. Perustelemme sen seuraavalla seurauksella edellisestä lauseesta: 17 / 46 R. Kangaslampi MS-A0401
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 linkki, ja toisinpäin (yhdistetään paritonasteiset solmut linkillä). 18 / 46 R. Kangaslampi MS-A0401
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 / 46 R. Kangaslampi MS-A0401
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 / 46 R. Kangaslampi MS-A0401
Naapurimatriisi (n m)-matriisi on taulukko, jossa on n riviä ja m saraketta. Esimerkiksi [ ] 2 1 3 A = 0 1 1 on 2 3-matriisi. Matriisin elementtiin viitataan ilmoittamalla rivin ja sarakkeen numerot, esimerkiksi yllä olevalle matriisille A(1, 3) = 3 ja A(2, 2) = 1. Matriisit esittävät lineaarikuvauksia, tähän perehdytään kurssilla MS-A000X Matriisilaskenta. Matriiseihin voidaan kuitenkin kerätä myös tieto verkon rakenteesta. 21 / 46 R. Kangaslampi MS-A0401
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. Naapurimatriisissa rivillä i on siis numero 1 sarakkeessa j, jos solmut v i ja v j ovat naapureita. 22 / 46 R. Kangaslampi MS-A0401
Naapurimatriisi Esimerkki 14 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 23 / 46 R. Kangaslampi MS-A0401
Naapurimatriisi Matriiseita voidaan kertoa keskenään. (n n)-matriisien A ja B tulo AB on (n n)-matriisi, jossa AB(i, j) = n A(i, k)b(k, j) k=1 eli AB(i, j) on matriisin A rivin i ja matriisin B sarakkeen j skalaaritulo. (Tämä tulee tutuksi matriisilaskentakurssilla, nyt vain kuriositeettina.) Lemma 15 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) 24 / 46 R. Kangaslampi MS-A0401
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]. 25 / 46 R. Kangaslampi MS-A0401
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 26 / 46 R. Kangaslampi MS-A0401
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ä. Linkkien väritys voidaan määritellä vastaavasti. Sille eivät kuitenkaan päde samat tulokset! 27 / 46 R. Kangaslampi MS-A0401
Sovellus: konfliktiverkot Esimerkki 19 Kuusi opiskelijaa A, B, C, D, E ja F tekevät kuutta eri projektityötä seuraavissa ryhmissä: 1. A, B, C, F 2. B, D 3. C, F 4. B, E 5. A, C, F 6. D, E, F. 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ä? 28 / 46 R. Kangaslampi MS-A0401
Sovellus: konfliktiverkot Esimerkki 19 (jatkuu) Muodostetaan konfliktiverkko G, jonka kuusi solmua numeroidaan ryhmien mukaisilla numeroilla 1 7 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ä. 29 / 46 R. Kangaslampi MS-A0401
Sovellus: konfliktiverkot Esimerkki 19 (jatkuu) Koska solmut {1, 2, 3, 6} 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 4 ja 3. 5 4 6 3 1 2 Siten χ(g) = 4 eli neljä päivää riittää. 30 / 46 R. Kangaslampi MS-A0401
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 on käytettävissä vähän. Muodostetaan verkko G, jonka solmut ovat silmukassa käytetyt muuttujat ja solmujen välillä on linkki, jos niitä vastaavien muuttujien on silmukkaa suoritettaessa oltava käytössä yhtäaikaa. Tarvittavien suoritinmuistipaikkojen määrä on tällöin χ(g). 31 / 46 R. Kangaslampi MS-A0401
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.) 32 / 46 R. Kangaslampi MS-A0401
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 }. 33 / 46 R. Kangaslampi MS-A0401
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 34 / 46 R. Kangaslampi MS-A0401
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ä. 35 / 46 R. Kangaslampi MS-A0401
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. 36 / 46 R. Kangaslampi MS-A0401
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ä linkkejä. 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. 37 / 46 R. Kangaslampi MS-A0401
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 linkki e 1, jonka paino on minimaalinen. Valitaan e 1 :n naapurilinkki e 2, jonka paino on e 1 :n naapurilinkkien joukossa minimaalinen. Jatketaan: joka vaiheessa valitaan tähänastisten linkkien naapurien joukosta minimaalinen siten, että puurakenne (yhtenäisyys, ei syklejä) säilyy Näin saadaan minimaalinen virittäjäpuu T, jonka linkit ovat {e 1,..., e n }. 38 / 46 R. Kangaslampi MS-A0401
MST (= Minimal Spanning Tree) Esimerkki 29 (Virittäjäpuu Primin algoritmilla) 3 A B 6 5 F 7 4 5 C 5 3 E 6 D 39 / 46 R. Kangaslampi MS-A0401
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 linkeistä {e 1,..., e n }, joka ei ole U:n linkki. Kävellään u:sta v:hen puussa U; olkoon e tämän kävelyn ensimmäinen linkki, joka ei ole joukossa {e 1,..., e k 1 }. Tällöin ahneen algoritmin nojalla w(e k ) w(e). Korvataan linkki e linkillä 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 linkki, joka ei ole U k :n linkki. 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). 40 / 46 R. Kangaslampi MS-A0401
MST Edellä esitelty ahne MST-algoritmi oli Primin algoritmi. Toinen ahne algoritmi on Kruskalin algoritmi: valitaan linkki e 1, jonka paino on minimaalinen valitaan linkki e 2, jonka paino on minimaalinen joukossa E \ {e 1 } kussakin vaiheessa hylätään sellaiset linkit, jotka muodostaisivat syklin; jatketaan kunnes virittäjäpuu. Esimerkit näistä algoritmeista verkkotehtävissä. 41 / 46 R. Kangaslampi MS-A0401
MST Esimerkki 30 (Virittäjäpuu Kurskalin algoritmilla) 3 A B 6 5 F 7 4 5 C 5 3 E 6 D 42 / 46 R. Kangaslampi MS-A0401
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 43 / 46 R. Kangaslampi MS-A0401
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. 44 / 46 R. Kangaslampi MS-A0401
Lopuksi Palautekysely aukeaa lähipäivinä, vastauslinkki tulee sähköpostitse. Jos haluat osallistua loppukokeeseen, muista ilmoittautua Oodissa. 45 / 46 R. Kangaslampi MS-A0401
Lopuksi Suurkiitos kaikille! 46 / 46 R. Kangaslampi MS-A0401