A274101 TIETORAKENTEET JA ALGORITMIT



Samankaltaiset tiedostot
Graafiteoria matematiikkaako?

Königsbergin sillat. Königsberg 1700-luvulla. Leonhard Euler ( )

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

Algoritmit 1. Luento 9 Ti Timo Männikkö

Johdatus graafiteoriaan

A TIETORAKENTEET JA ALGORITMIT

Johdatus graafiteoriaan

Graafin virittävä puu 1 / 20

Algoritmit 1. Luento 8 Ke Timo Männikkö

Diskreetit rakenteet

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

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

v 8 v 9 v 5 C v 3 v 4

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

8.5. Järjestyssuhteet 1 / 19

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

7.4. Eulerin graafit 1 / 22

6.4. Järjestyssuhteet

Algoritmi on periaatteellisella tasolla seuraava:

Kuva Suomen päätieverkko 1 Moottoritiet on merkitty karttaan vihreällä, muut valtatiet punaisella ja kantatiet keltaisella värillä.

Algoritmit 2. Luento 11 Ti Timo Männikkö

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

Liite 2: Verkot ja todennäköisyyslaskenta

GRAAFITEORIA. Keijo Ruohonen

Graafin 3-värittyvyyden tutkinta T Graafiteoria, projektityö (eksakti algoritmi), kevät 2005

keskenään isomorfiset? (Perustele!) Ratkaisu. Ovat. Tämän näkee indeksoimalla kärjet kuvan osoittamalla tavalla: a 1 b 3 a 5

Johdatus graafiteoriaan

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

Algoritmit 2. Luento 2 To Timo Männikkö

GRAAFITEORIAA. Pertti Koivisto Riitta Niemistö

Johdatus verkkoteoriaan 4. luento

PARITUS KAKSIJAKOISESSA

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

Pertti Koivisto ja Riitta Niemistö. Graafiteoriaa

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

Sosiaalisten verkostojen datan notaatio. Notation for Social Network Data

Suunnatut, etumerkilliset ja arvotetut graafit Sosiaalisten verkostojen analysoinnin näkökulmalla

Algoritmit 1. Luento 10 Ke Timo Männikkö

Malliratkaisut Demot

Algoritmit 1. Luento 1 Ti Timo Männikkö

VERKKOTEORIAN ALKEITA. Martti E. Pesonen

Datatähti 2019 loppu

Ohjelmoinnin perusteet Y Python

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

Algoritmit 1. Luento 13 Ti Timo Männikkö

MS-A0401 Diskreetin matematiikan perusteet

Liite: Verkot. TKK (c) Ilkka Mellin (2004) 1

10. Painotetut graafit

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

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

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

Todistus (2.2) Todistus (2.2) jatkoa. (2.2): Oletetaan, että0 n 1,1 n 1 / P i (F) aina kuni = 1,2,...,n. Olkoonf F painoltaan pienin joukonf alkio.

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

Kytkentäkentät, luento 2 - Kolmiportaiset kentät

Algoritmit 1. Luento 14 Ke Timo Männikkö

isomeerejä yhteensä yhdeksän kappaletta.

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Algoritmit 1. Luento 12 Ti Timo Männikkö

Algoritmit 1. Luento 6 Ke Timo Männikkö

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

Algoritmit 1. Luento 12 Ke Timo Männikkö

MS-A0402 Diskreetin matematiikan perusteet

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö

A = a b B = c d. d e f. g h i determinantti on det(c) = a(ei fh) b(di fg) + c(dh eg). Matriisin determinanttia voi merkitä myös pystyviivojen avulla:

Eulerin verkkojen karakterisointi

58131 Tietorakenteet (kevät 2009) Harjoitus 11, ratkaisuja (Topi Musto)

Lineaariset yhtälöryhmät ja matriisit

A TIETORAKENTEET JA ALGORITMIT

Rakenteellinen tasapaino ja transitiivisyys

Algoritmit 2. Luento 12 Ke Timo Männikkö

A TIETORAKENTEET JA ALGORITMIT

Tietorakenteet ja algoritmit - syksy

Algoritmit 2. Luento 3 Ti Timo Männikkö

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

TIE Tietorakenteet ja algoritmit 261

Kytkentäkentät, luento 2 - Kolmiportaiset kentät

Puiden karakterisointi

Harjoitus 1 ( )

MS-A0003/A0005 Matriisilaskenta Malliratkaisut 5 / vko 48

Harjoitus 3 ( )

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

Ohjelmoinnin perusteet Y Python

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

Algoritmit 2. Luento 3 Ti Timo Männikkö

VERKOT. SUHTEIKOT JA VERKOT 1. Johdanto Pisteiden asteet Yhtenäisyys Kulku suhteikossa Hamiltonin kulut...

Kuljetustehtävä. Materiaalia kuljetetaan m:stä lähtöpaikasta n:ään tarvepaikkaan. Kuljetuskustannukset lähtöpaikasta i tarvepaikkaan j ovat c ij

9. Graafit Graafin abstrakti tietotyyppi

Tietorakenteet, laskuharjoitus 10, ratkaisuja. 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

Tietorakenteet ja algoritmit. Verkot. Ari Korhonen

Algoritmit 2. Luento 13 Ti Timo Männikkö

Verkkojen värittäminen

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

Ohjelmoinnin perusteet Y Python

Lineaarialgebra ja matriisilaskenta II Syksy 2009 Laskuharjoitus 1 ( ) Ratkaisuehdotuksia Vesa Ala-Mattila

(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.

(a) L on listan tunnussolmu, joten se ei voi olla null. Algoritmi lisäämiselle loppuun:

Transkriptio:

A274101 TIETORAKENTEET JA ALGORITMIT VERKOT ELI GRAAFIT Lähteet: Timo Harju, Opintomoniste Keijo Ruohonen, Graafiteoria (math.tut.fi/~ruohonen/gt.pdf) HISTORIAA Verkko- eli graafiteorian historia on saanut alkunsa Eulerin työstä v.176 Königsbergin (nyk. Kaliningrad) sillat: http://en.wikipedia.org/wiki/seven_bridges_of_k%c%b6nigsberg Kaupungin läpi virtaa joki, jossa on kaksi saarta Saaret on yhdistetty rantoihin 7 sillalla Voiko rannalta lähteä tietystä pisteestä, kulkea täsmälleen kerran jokaisen sillan yli ja palata lähtöpaikkaansa? Euler ratkaisi ongelman 176 ja kehitti samalla perustan verkkojen eli graafien teorialle 8.11.2005 KyAMK - TiRak, syksy 2005 2 HISTORIAA KÖNIGSBERGIN SILLAT - RATKAISU Yksinkertaistetaan kuvaa hieman N N K O K O S S 8.11.2005 KyAMK - TiRak, syksy 2005 8.11.2005 KyAMK - TiRak, syksy 2005 4

KÖNIGSBERGIN SILLAT - RATKAISU Kaikista neljästä solmusta lähtee pariton määrä kaaria Oletetaan, että seurataan viivoja nostamatta kynää Valitaan yksi solmu tarkasteltavaksi otetaan joku, josta lähte kaarta Kun 1. kerran saavut tähän solmuun, voit lähteä toista kaarta pitkin pois Tämän jälkeen solmuun voi vain saapua kerran Piirtäminen pitää päättää tähän solmuun Toinen vaihtoehto on aloittaa tästä solmusta, jolloin siinä voi vielä kerran käydä Solmu, josta lähtee pariton määrä kaaria voi ainoastaan aloittaa tai päättää reitin K N S O Graafi koostuu pisteistä eli solmuista (vertex) ja niitä yhdistävistä kaarista eli viivoista (edge) Formaalisti: Graafi (graph) on pari (V,E), missä V on pisteiden joukko ja E on pisteparien muodostama viivojen joukko. 8.11.2005 KyAMK - TiRak, syksy 2005 5 8.11.2005 KyAMK - TiRak, syksy 2005 6 Viivat ovat pistepareja (u, v) = (v, u) Pisteet u ja v ovat viivan (u, v) päätepisteet Suunnatuilla graafeilla (u, v) (v, u) eli pisteparien järjestyksellä on merkitystä Solmujen lukumäärää merkitään V :llä ja viivojen määrää E :llä Viivoja voidaan merkitä myös E = {,,, e n } Viivat voivat olla myös painotettuja: (u, v, c), missä c on paino Viivat, joilla on samat päätepisteet, ovat rinnakkaiset Viiva (v, v) on ns. silmukka Pisteet u ja v, joita yhdistää viiva ovat rinnakkaiset Pisteen v aste, merkitään d(v), on niiden viivojen lukumäärä, joiden päätepiste v on Piste, jonka aste on 1 on ns. loppupiste 8.11.2005 KyAMK - TiRak, syksy 2005 7 8.11.2005 KyAMK - TiRak, syksy 2005 8

Graafi, jossa ei ole lainkaan viivoja on tyhjä Graafi, jossa ei ole lainkaan pisteitä, on ns. nollagraafi Graafi, jossa on vain yksi piste, on triviaali Graafi on yksinkertainen, jos siinä ei ole rinnakkaisia viivoja, eikä silmukoita Graafi on yhtenäinen, jos sen jokaisesta pisteestä voidaan kulkea jokaiseen toiseen pisteeseen Graafissa G = (V, E) oleva pisteiden ja viivojen jono (v i0,e j0,v i1,e j1,v i2,,e jk,v ik ) on kulku, jos viivat (v i1,v i2 ), (v i2,v i ),,(v i(k- 1),v ik ) E Kulun pituus on k, v i0 on kulun alkupiste ja v ik kulun loppupiste Kulussa saavat samat pisteet ja viivat esiintyä useitakin kertoja Kulku on reitti, jos mikään viiva ei esiinny useita kertoja Reitti on polku, jos mikään piste ei esiinny kahta kertaa, päätepisteitä lukuun ottamatta 8.11.2005 KyAMK - TiRak, syksy 2005 9 8.11.2005 KyAMK - TiRak, syksy 2005 10 EULERIN POLKU JA HAMILTONIN PIIRI Polku, jonka alku- ja päätepiste ovat samat, on piiri Huom. myös polku (v, v) on piiri, jonka pituus on 1 ja sitä sanotaan silmukaksi Graafin pisteet u ja v ovat yhdistetyt, jos on olemassa u-vkulku Jos pisteet u ja v ovat yhdistetyt sekä pisteet v ja w ovat yhdistetyt, niin myös u ja w ovat yhdistetyt Toisin sanoen jos graafissa on u-vkulku sekä v-w-kulku, niin siinä on myös u-w-kulku Eulerin polku (Euler path) kulkee jokaisen viivan kautta täsmälleen kerran Graafissa, jossa on Eulerin polku voi olla korkeintaan kaksi pistettä, joista lähtee pariton määrä viivoja Lisäksi tällaisessa graafissa on aina vähintään yksi Eulerin polku Hamiltonin piiri kulkee jokaisen pisteen kautta ainoastaan kerran ja sen alku- ja loppupisteet ovat samat 8.11.2005 KyAMK - TiRak, syksy 2005 11 8.11.2005 KyAMK - TiRak, syksy 2005 12

SUUNNATUT GRAAFIT KÄYTÄNNÖN SOVELLUKSIA Suunnattu graafi on vahvasti yhtenäinen (strongly connected), jos sen jokaisesta pisteestä on polku kaikkiin muihin pisteisiin Suunnattu graafi on heikosti yhtenäinen (weakly connected), jos se ei ole vahvasti yhtenäinen mutta olisi suuntaamattomana yhtenäinen Suunnatun graafin pisteen v tuloaste (in-degree) on v:hen päättyvien viivojen (u, v) lukumäärä Solmun v lähtöaste (out-degree) on puolestaan v:stä lähtevien viivojen (v, w) lukumäärä Suunnatun graafin suunnattua piiriä sanotaan sykliksi (cycle) Suunnattu graafi on syklitön (acyclic), jos siinä ei ole yhtään sykliä, muutoin syklinen (cyclic) Useimmat käytännön ongelmia mallintavat graafit ovat painotettuja. Useimmiten ne lisäksi ovat suunnattuja, mutta eivät aina. Lentokenttäverkko Solmu (u, v, c): u on lähtökenttä, v on tulokenttä ja c voi olla välimatka, lentoaika tms. Liikennevirta Solmu (u, v, c): u on mistä, v on minne ja c voi olla tien pituus, kapasiteetti, suurin sallittu nopeus tms. 8.11.2005 KyAMK - TiRak, syksy 2005 1 8.11.2005 KyAMK - TiRak, syksy 2005 14 GRAAFIN ESITTÄMISTAPOJA Miten graafia ei kannata esittää? Graafi tulisi esittää niin, että sitä voidaan käsitellä ohjelmallisesti Ei välttämättä ole helppoa ja itsestään selvää Seuraavassa käsitellään paria tuttua tietorakennetta Ovatko ne käyttökelpoisia graafin esittämiseen? GRAAFIN ESITTÄMISTAPOJA 1. Voitaisiin ajatella, että graafi olisi kätevä esittää binääripuun tapaan: linkitetty rakenne jokainen piste sisältää kentät kaikille mahdollisille viivoille Kritiikkiä: Pisteisiin liittyvien viivojen määrä voi vaihdella Jokaisessa pisteessä tulee varata tilaa viivoille pahimman tapauksen mukaisesti Toinen ongelma on solmujen tavoittaminen: Mistä ja miten etenemällä jokin tietty solmu löytyy? 8.11.2005 KyAMK - TiRak, syksy 2005 15 8.11.2005 KyAMK - TiRak, syksy 2005 16

GRAAFIN ESITTÄMISTAPOJA 2. Pisteestä lähtevien viivojen määrää ei haluta rajoittaa Viivat voitaisiin esittää myös linkitettyinä listoina Kritiikkiä: Rakenne on varsin raskastekoinen Solmujen tavoittaminen ei ole yhtään helpompaa kuin edellisessä menetelmässä GRAAFIN SIVULUETTELO Sivuluettelossa nimen mukaisesti luetellaan verkon sivut eli viivat Luettelon alkiot ovat joko pareja (painottamaton) tai kolmikoita (painotettu) Suuntaamattomassa graafissa jokainen sivu esiintyy kahteen kertaan Toisaalta, jos tiedetään, että graafi on suuntaamaton, ja sivu (u, v) sisältyy graafiin, sivua (v, u) ei tarvitse ilmoittaa, koska sen tiedetään automaattisesti olevan mukana 8.11.2005 KyAMK - TiRak, syksy 2005 17 8.11.2005 KyAMK - TiRak, syksy 2005 18 GRAAFIN SIVULUETTELO NAAPURUUSMATRIISI 1 5 Ohessa on eräs graafi sekä suuntaamattomana että suunnattuna ja molemmissa tapauksissa sivuluettelo Suunnattuun graafiin on lisäksi liitetty painot Samaa graafia käytetään esimerkkinä myös jatkossa Sivuluettelo 1, 2, 1 1,, 2 1, 4 4, 1 2, 1 4, 5 2, 5, 4 2 4 Painottamaton Painotettu 1, 2 1, 2, 1, 1,, 7 1, 4 1, 4, 5 2, 2,, 4 4, 5 4, 5, 2 8.11.2005 KyAMK - TiRak, syksy 2005 19 7 1 5 4 5 2 2 4 Naapuruusmatriisi eli vierusmatriisi on V x V - neliömatriisi: Matriisissa on graafin pisteiden määrän verran sekä sarakkeita että rivejä. Painottamattomalla graafilla rivin u sarakkeen v alkio on 1, jos viiva (u, v) sisältyy graafiin, ja 0 muulloin Painotetulla graafilla viivaa (u, v, c) vastaava matriisin alkion arvo on viivan paino c Puuttuvia viivoja vastaavat matriisin alkiot tulee olla sellaisia, että niitä ei voi sekoittaa viivojen painoihin (esim. -1, -99, tms.) Suuntaamatonta graafia vastaava matriisi on symmetrinen (eli A T = A): Jos viiva (u, v) sisältyy graafiin, niin myös viiva (v, u) sisältyy ko. graafiin. 8.11.2005 KyAMK - TiRak, syksy 2005 20

NAAPURUUSMATRIISI Esimerkki Suuntaamaton verkko Suunnattu verkko 1 2 4 5 1 2 4 5 1 0 1 1 1 0 1 0 1 1 1 0 2 1 0 1 0 0 2 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 4 1 0 0 0 1 4 0 0 0 0 1 5 0 0 0 1 0 5 0 0 0 0 0 Naapuruusmatriisin tilavaatimus on O( V 2 ) käyttökelpoinen esitysmuoto tiheillä (dense) graafeilla, joissa on paljon viivoja Harvojen (sparse) graafien esittämiseen soveltuu paremmin seuraavassa esitettävä naapuruuslista NAAPURUUSLISTA Naapuruuslistassa kutakin pistettä vastaa listan tunnussolu Kyseisestä pisteestä lähtevät viivat tallennetaan tunnussolusta lähtevään linkitettyyn listaan Suuntaamattomille graafeille jokainen listasolu esiintyy kahdessa eri listassa Painottaman graafin listasolu sisältää verkon pisteen numeron sekä linkin seuraavaan soluun Painotetun graafin listasolu sisältää lisäkentän, johon talletetaan viivan paino 8.11.2005 KyAMK - TiRak, syksy 2005 21 8.11.2005 KyAMK - TiRak, syksy 2005 22 NAAPURUUSLISTA Esimerkki Suunnatun graafin naapuruuslista: 1 2 4 2 4 5 5 Tämän esitystavan tilavaatimus on O( V + E ). GRAAFIN PISTEEN TIEDOT KÄYTÄNNÖSSÄ Graafin pisteiden nimet ovat harvoin numeroita Yleensä pisteet sisältävät merkkijonoja, esim. kaupunkien nimiä Numerointi on kuitenkin varsin oleellinen sekä naapuruusmatriisi- että naapuruuslistaesityksessä Tällöin voidaan menetellä seuraavasti: Kun graafia luettaessa vastaan tulee aiemmin esiintymätön piste, annetaan sille seuraava järjestysnumero Pisteen nimi talletetaan sopivaan hakurakenteeseen (esim. binääripuu, hajautustaulu) Kun nimeä tarvitaan, haku on nopeaa (esim. tietyn pisteen esiintyminen, tulostukset, ) 8.11.2005 KyAMK - TiRak, syksy 2005 2 8.11.2005 KyAMK - TiRak, syksy 2005 24