9. Graafit Graafin abstrakti tietotyyppi

Koko: px
Aloita esitys sivulta:

Download "9. Graafit. 9.1. Graafin abstrakti tietotyyppi"

Transkriptio

1 9. Graafit Graafeilla eli verkoilla esitetään yhteystietoja. Esimerkkejä niistä ovat kaupunkikartan kadut ja tietoverkon tietokoneet. Tämä luku tarkastelee verkkojen perusasioita Graafin abstrakti tietotyyppi Abstraktissa mielessä graafi (graph) G on yksinkertaisesti kärkien (vertices) eli solmujen (nodes) joukko V ja solmuparien eli kaarien eli särmien (arcs, edges) joukko E. 9. luku 453

2 Termejä ja perusominaisuuksia Graafin kaaret ovat joko suunnattuja (directed) tai suuntaamattomia (undirected). Kaari (u,v) on suunnattu solmusta u solmuun v, jos pari (u,v) on järjestetty u:n edeltäessä v:tä. Jos järjestystä ei ole määritelty, kaari on suuntaamaton, jolloin (u,v) on sama kuin (v,u). Esim Katsotaan graafia, joka kuvaa kurssin lähdeteoksen kirjoittajien yhteistyöntekijöitä tutkimuksessa. Kaaret ovat symmetrisiä (symmetric), sillä jos A on tehnyt yhteistyötä B:n kanssa, niin asia on myös toisinpäin (kuva 9.1.). 9. luku 454

3 Snoeyink Garg Tollis Goodrich Tamassia Vitter Preparata Chiang Kuva 9.1. Graafi yhteistyöntekijöiden välillä. 9. luku 455

4 Jos kaikki graafin kaaret ovat suuntaamattomia, puhutaan suuntaamattomasta graafista (undirected graph). Vastaavasti suunnatussa graafissa (directed graph, digraph) kaikki kaaret ovat suunnattuja. On myös sekamuotoisia (mixed) graafeja, joissa esiintyy molempia tyyppejä kaaria. Suuntaamaton kaari (u,v) voidaan korvata parilla suunnattuja (u,v) ja (v,u). Kaaren yhdistämät kaksi solmua ovat sen päätesolmut tai kärjet (endpoints, end vertices). Jos se on suunnattu, toinen niistä on alku (origin) ja toinen loppu (destination). Kaksi solmua ovat vierekkäisiä (adjacent), jos ne ovat saman kaaren päätesolmuja. Kaari on solmuun liittyvä tai kuuluva (incident), jos solmu on kaaren alku tai loppu. Solmun v ulkoaste outdeg(v) (outdegree) on siitä lähtevien suunnattujen kaarien lukumäärä ja sisäaste indeg(v) (in degree) siihen tulevien suunnattujen kaarien lukumäärä. Solmun v aste deg(v) (degree) on solmuun yhteydessä olevien kaarien määrä eli samalla sen vierekkäisten solmujen määrä. 9. luku 456

5 Esim Lentoreiteistä voidaan muodostaa graafi G, jonka solmut viittaavat lentokenttiin ja kaaret ovat niihin liittyviä lentovuoroja (kuva 9.2.). Kaaret ovat luonnollisesti suunnattuja, koska lennolla on aina määrätty suunta lähtöpaikasta kohteeseen. Kaksi lentokenttää ovat vierekkäisiä graafissa, jos niiden välillä on lentovuoro. Solmun v sisäaste on kyseiselle lentokentälle saapuvat lennot ja sen ulkoaste siitä lähtevät lennot. Graafin määritelmä viittaa kaarien osalta pikemmin niiden kokoelmaan kuin joukkoon sallien kahdella suuntaamattomalla kaarella olevan samat päätesolmut sekä kahdella suunnatulla kaarella olevan sama alkusolmu ja toisaalta sama loppusolmu. Tällaisia kaaria kutsutaan rinnakkaisiksi (parallel edges) tai monikaariksi (multiple edges). Esim 9.2. voisi sisältää näitä, kun kahden lentokentän välillä olisi useita lentovuoroja eri aikoihin. Eräs toinen erikoistapaus on kaari, joka yhdistää solmun itseensä. Tästä käytetään nimitystä itseissilmukka (self loop). 9. luku 457

6 SFO LAX AA 49 UA 877 UA 120 TW 45 ORD DL 335 DFW AA 411 AA 1387 AA 523 JFK AA 903 MIA BOS NW 35 DL 247 Kuva 9.2. Esimerkki suunnatusta graafista, joka esittää lentoreitistöä. Kaaren UA 120 alku ja loppusolmu ovat LAX ja ORD. LAX ja ORD ovat täten vierekkäisiä. Solmun DFW sisäaste on 3 ja ulkoaste luku 458

7 Yleensä graafeissa ei ole rinnakkaisia kaaria tai itseissilmukoita, jotka ovat poikkeuksellisia. Jos niitä ei esiinny, graafin sanotaan olevan yksinkertainen (simple), mikä yksinkertaistaa graafien tietorakenteiden ja algoritmien esitystä. Tällöin yksinkertaisen graafin kaaret muodostavat solmuparien joukon (set) eikä vain kokoelmaa. Tässä luvussa oletetaan tilanteen olevan tämä ellei toisin mainita. Esitettävien määritelmien laajentaminen erityistapausten huomioonottamiseksi olisi suoraviivaista, mutta jonkin verran työlästä. Oheiset ominaisuudet esittävät graafin kaarien ja solmujen määrien suhteet sekä solmujen asteet. Lause 9.1. Jos graafissa G on m kaarta, niin on v G deg( v ) = 2m. 9. luku 459

8 Perustelu: Kaari (u,v) lasketaan kahdesti esitetyssä summassa, kerran loppusolmunaan u ja toisen kerran loppusolmunaan v. Näin ollen kaarien kokonaisvaikutus solmujen asteisiin on kaksi kertaa kaarien määrä. Lause 9.2. Jos suunnatussa graafissa G on m kaarta, niin on v G in deg( v ) = outdeg( v) = m. v G Perustelu: Suunnatussa graafissa kaari (u,v) vaikuttaa yhden yksikön verran alkusolmun u ulkoasteeseen ja yhden yksikön verran loppusolmun v sisäasteeseen. Niinpä kaarten kokonaisvaikutus solmujen ulkoasteisiin on yhtä kuin kaarten lukumäärä ja samoin on sisäasteilla. 9. luku 460

9 Lause 9.3. Olkoon G yksinkertainen graafi, jossa on n solmua ja m kaarta. Jos G on suuntaamaton, niin on m n(n 1)/2, ja jos G on suunnattu, niin on m n(n 1). Perustelu: Suuntaamattomassa graafissa ei millään kahdella kaarella voi olla samoja päätesolmuja eikä ole itseissilmukoita. Tällöin graafin solmun maksimiaste on n 1. Täten lauseen 9.1. mukaan on 2m n(n 1). Suunnatussa graafissa ei millään kahdella kaarella voi olla samaa alkusolmua ja samaa loppusolmua eikä ole itseissilmukoita. Tällöin graafin solmun maksimisisäaste on n 1. Lauseen 9.2. mukaan on m n(n 1). Lauseen 9.3. tulema on esitettävissä myös muodossa, että n solmuisella yksinkertaisella graafilla on O(n 2 ) kaarta. Graafin polku (path) on vuorottelevien solmujen ja kaarien sekvenssi, joka alkaa solmusta ja päättyy solmuun siten, että jokainen kaari liittyy edeltäjä ja seuraajasolmuunsa. Sykli (cycle) on polku, joka alkaa ja loppuu samaan solmuun. 9. luku 461

10 Polku on yksinkertainen (simple), jos sen solmut ovat erillisiä. Sykli on yksinkertainen (simple), jos sen solmut ovat erillisiä ensimmäistä ja viimeistä lukuunottamatta. Suunnatulla polulla (directed path) kaikki kaaret ovat suunnattuja ja kuljetaan läpi niiden suunnissa, ja suunnatusssa syklissä (directed cycle) määritellään samoin. Esim tapauksessa (BOS, NW 35, JFK, AA 1387, DFW) on suunnattu yksinkertainen polku ja (LAX, UA 120, ORD, UA 877, DFW, AA 49, LAX) on suunnattu yksinkertainen sykli. Graafin G aligraafi (subgraph) on graafi H, jonka solmut ja kaaret ovat graafin G solmujen ja kaarten osajoukkoja. Esim tapauksessa solmut BOS, JFK ja MIA sekä kaaret AA 903 ja DL 247 muodostavat aligraafin. Virittävä aligraafi (spanning subgraph) on graafin G aligraafi, joka käsittää G:n kaikki solmut. Graafi on yhdistetty (connected), jos minkä tahansa solmuparin välillä on polku. Jos graafi ei ole yhdistetty, sen maksimaalisia yhdistettyjä aligraafeja kutsutaan G:n yhdistetyiksi komponenteiksi (connected components). 9. luku 462

11 Metsä (forest) on syklitön graafi. Puu (tree) on yhdistetty metsä eli yhdistetty syklitön graafi. Tämä puun määritelmä on hieman erilainen kuin luvussa 4, koska graafin tilanteessa ei määritelty juurta. Näiden erottamiseksi toisistaan voidaan luvun 4 puu nimetä juurelliseksi puuksi (rooted tree). Metsän yhdistetyt komponentit ovat (vapaita) puita. Graafin virittävä puu (spanning tree) on virittävä aligraafi, joka on (vapaa) puu. Em. määritteiden ominaisuuksia luetellaan seuraavassa. Lause 9.4. Kun suuntaamattomassa graafissa G on n solmua ja m kaarta, niin mainittavat ominaisuudet ovat (perustelu voi olla harjoituksena): Jos G on yhdistetty, niin on m n 1. Jos G on puu, niin on m = n 1. Jos G on metsä, niin on m n luku 463

12 Graafin metodit Abstraktissa tietotyypissä graafin paikat (positions) ovat sen solmut ja kaaret. Graafin alkiot voidaan näin ollen tallettaa joko solmuihin tai kaariin (tai molempiin). Graafi nähdään paikkasäiliönä (luku 4), jolloin graafin abstrakti tietotyyppi tukee metodeja size(), isempty(), elements(), positions(), replace(p,o) ja swap(p,q), missä p ja q viittaavat paikkoihin ja o alkioon. Graafit ovat hyvin monipuolisia rakenteita johtuen niiden erilaisista rakenneosista, solmuista ja kaarista. Graafien metodit jaotellaan kolmeen ryhmään: yleismetodit, suunnattuja kaaria käsittelevät metodit ja graafien päivitys ja muuntamismetodit. Olkoot v solmu, e kaari ja o solmuun tai kaareen talletettu alkio. Seuraavassa esitetään esimerkinomaisesti vain muutamia metodeja, joita voi kehittää lisää monia kymmeniä. Myöskään niiden virheenkäsittelyä ei tarkastella. 9. luku 464

13 Yleismetodeissa ei piitata kaarien suunnista. Ne antavat globaalia tietoa graafista. numvertices(): edges(): Palauttaa G:n solmujen lukumäärän. Palauttaa G:n kaarien luettelon. Seuraavantyyppisissä yleismetodeissa on solmuja ja kaaria argumentteina. degrees(v): Palauttaa solmun v asteen. endvertices(e): Palauttaa kaaren e päätesolmut. areadjacent(v,w): Palauttaa totuusarvon sen mukaan, ovatko v ja w vierekkäisiä solmuja. Kun otetaan huomioon kaarien suuntia, monia erilaisia metodeja on esitettävissä. indegree(v): Palauttaa solmun v sisäasteen. 9. luku 465

14 inadjacentvertices(v): Palauttaa luettelon kaikista solmulle v vierekkäisistä solmuista, jotka tulevat suunnattuja kaaria myöten v:hen. destination(e): Palauttaa suunnatun kaaren e loppusolmun. Päivitysmetodeilla voidaan lisätä tai poistaa kaaria ja solmuja. insertedge(v,w,o): Lisää ja palauttaa suuntaamattoman kaaren solmujen v ja w välistä sekä tallettaa alkion o tähän paikkaan. removevertex(v): Poistaa solmun v ja kaikki siihen liittyvät kaaret. Kuten mainittu, tässä esitettiin ainoastaan muutamia esimerkkejä lukuisista mahdollisista graafimetodeista. (Ne luetellaan tätä täydellisimmin myöhemmissä taulukoissa.) 9. luku 466

15 9.2. Graafien tietorakennetoteutukset Graafin abstrakti tietotyyppi toteutetaan yleensä yhtenä kolmesta vaihtoehdosta. Nämä rakenteet ovat kaarilista (edge list), vierekkyyslista (adjacency list) ja vierekkyysmatriisi (adjacency matrix). Kun näistä kaksi ensimmäistä sisältävät pelkästään tiedon jostakin solmusta ja kaaresta, niiden tarvitsema muistitila on O(n+m), missä n on solmujen ja m kaarien lukumäärät. Kolmas rakennevaihtoehto tarvitsee tilaa O(n 2 ), koska siinä varataan tilaa jokaiselle solmuparille riippumatta siitä, onko niiden välillä kaarta vai ei. Kaarilistarakenne Kaarilista on yksinkertaisin, mutta ei tehokkain graafin esitysmuoto. Solmu v tallettaa alkion o, mikä on eksplisiittisesti esitetty toteutuksen solmuoliossa. 9. luku 467

16 Kaikki solmuoliot talletetaan säiliöön V, joka on tavallisesti sekvenssi tai sanakirja. Jos sovelletaan järjestettyä sekvenssiä, solmuille annetaan järjestysnumero. Sanakirjan tapauksessa ne merkitään avaimilla. Solmun v solmuoliolla, jossa on alkio o talletettuna, on seuraavat tiedot sisältävät muuttujat : viittaus alkioon o solmuun liittyvien suuntaamattomien kaarien määrä, sisäaste ja ulkoaste viittaus solmuolion paikkaan säiliössä V Alkion o sisältävä kaari e esitetään eksplisiittisesti kaarioliolla. Kaarioliot talletetaan säiliöön E, joka on sekvenssi tai sanakirja. Kaarioliolla on seuraavat muuttujat: 9. luku 468

17 viittaus alkioon o Boolen muuttuja sille, onko kaari e suuntaamaton tai suunnattu viittaukset säiliön V solmuolioihin, jotka liittyvät kaaren e päätesolmuihin (e suuntaamaton) tai sen alku ja loppusolmuun (e suunnattu) viittaus kaariolion paikkaan säiliössä E Kaarilistasta on kuvassa 9.3. kaavamainen esitys. Kaarilistasta puhutaan, koska sen toteutus on usein sekvenssi (listana). Kaarilistarakenteen pääpiirre on suora haku kaarista näihin liittyviin solmuihin. Tämä tuottaa yksinkertaisia algoritmeja kaarien käsittelyyn. Sen sijaan käänteinen toiminto, solmuun liittyvien kaarien saanti, vaatii täydellisen haun kaarien säiliössä E. Näin ollen mm. metodi incidentedges(v) toimii ajassa, joka on suhteessa kaarien määrään (eikä solmujen). Taulukossa 9.1. on lueteltu tärkeimpien metodien suoritusajat, joiden perusteluja ei tässä tarkastella. 9. luku 469

18 SFO LAX AA 49 UA 877 UA 120 TW 45 ORD DFW AA 411 (a) DL 335 AA 1387 AA 523 JFK AA 903 MIA BOS NW 35 DL 247 Kuva 9.3. (alku) (a) Suunnattu graafi G kuvasta luku 470

19 E: NW 35 DL 247 AA 49 DL 335 AA1387 AA 523 AA 411 UA 120 AA 903 UA 877 TW 45 V: BOS LAX DFW JFK MIA ORD SFO (b) Kuva 9.3. (loppu) (b) Graafin G kaavamainen esitys kaarilistana. Selvyyden vuoksi viittaukset on tässä merkitty olioiden nimillä (eikä merkitty viittauksia nuolien yhteyteen). 9. luku 471

20 Taulukko 9.1. Graafimetodien suoritusajat, kun toteutus on kaarilistana, missä V ja E on toteutettu kahteen suuntaan linkitettyjen listojen sekvensseinä. Tilavaatimus on O(n+m), missä n on solmujen lukumäärä ja m kaarien lukumäärä. operaatio size, isempty, replaceelement, swap numvertice, numedges vertices edges, directededges, undirectededges elements, positions endvertices, opposite, origin, destination, isdirected, degree, indegree, outdegree incidentedges, inincidentedges, outincidentedges, adjacentvertices, inadjacentvertices, outadjacentvertices, areadjacent insertvertex, insertedge, insertdirectededge, removeedge, makeundirected, reversedirection, setdirectionfrom, setdirectionto removevertex suoritusaika O(1) O(1) O(n) O(m) O(n+m) O(1) O(m) O(1) O(m) 9. luku 472

21 Vierekkyyslistarakenne Graafin G vierekkyyslistarakenne laajentaa kaarilistaa lisäten tietoa, joka tukee solmuun liittyvien kaarien suoraa saantia. Kun kaarilista katsoo kaari solmu suhdetta ainoastaan kaarien näkökulmasta, vierekkyyslista katsoo sitä molempien komponenttien näkökulmasta. Tämä symmetrinen lähestymistapa mahdollistaa graafin abstraktin tietotyypin solmumetodien toteuttamisen paljon nopeammiksi kuin kaarilistan yhteydessä, vaikka näiden muistitilankäyttö on samaa luokkaa suhteessa solmujen ja kaarien määriin. Vierekkyyslista sisältää seuraavat piirteet: kaikki kaarilistan rakenneosat ja lisäksi Solmun v solmuolio käsittää viittauksen säiliöön I(v), joka sisältää solmuun v liittyvien kaarien oliot. Kaaren (u,v) kaariolio käsittää viittaukset kaaren paikkoihin säiliöissä I(u) ja I(v). 9. luku 473

22 Solmun v säiliö I(v) toteutetaan yleensä sekvenssinä, mutta myös mm. sanakirja tai prioriteettijono tulevat kysymykseen kontekstista riippuen. Kun vierekkyyslistaa vielä hieman muunnetaan, saadaan mukaan mahdollisuus, että voi olla sekä suuntaamattomia että suunnattuja kaaria. Käytetään kolmea säiliötä I in (v), I out (v) ja I un (v), jotka sisältävät viittaukset kaariolioihin ja nämä ovat suunnattuja tulevia, suunnattuja lähteviä tai suuntaamattomia kaaria solmuun v liittyen. Kuvassa 9.4. on edeltävän lentoreitistöesimerkin kuvaus vierekkyyslistana. Siinä on lisätty edeltävään verrattuna vierekkyysrakenteet jokaista graafin solmua varten. Mukana ei ole suuntaamattomien kaarien säiliöitä, koska suuntaamattomia kaaria ei ollut mukana esimerkissä. Vierekkyysrakenteiden avulla voidaan nopeuttaa useiden graafimetodien toimintaa. 9. luku 474

23 E: NW 35 DL 247 AA 49 DL 335 AA1387 AA 523 AA 411 UA 120 AA 903 UA 877 TW 45 V: BOS LAX DFW JFK MIA ORD SFO in out NW 35 DL 247 in AA 49 AA 411 out UA120 in AA1387 UA 877 AA 523 out DL 335 AA 49 in NW 35 out AA1387 AA 903 TW 45 in TW 45 out Kuva 9.4. Vierekkyyslistan kaavamainen esitys lentoreitistön tapauksesssa. in DL 247 AA 903 out AA523 AA luku 475 in UA 120 DL 335 out UA 877

24 Taulukko 9.2. Graafimetodien suoritusajat, kun graafi on toteutettu vierekkyyslistana, jossa sekä säiliöt V ja E että vierekkyysrakennesäiliöt on toteutettu sekvensseinä ja nämä kahteen suuntaan linkitettyinä listoina. Tilavaatimus on O(n+m), missä n on solmujen lukumäärä ja m kaarien lukumäärä. operaatio suoritusaika size, isempty, replaceelement, swap numvertice, numedges vertices edges, directededges, undirectededges elements, positions endvertices, opposite, origin, destination, isdirected, degree, indegree, outdegree incidentedges(v), inincidentedges(v), outincidentedges(v), adjacentvertices(v), inadjacentvertices(v), outadjacentvertices(v) areadjacent(u,v) insertvertex, insertedge, insertdirectededge, removeedge, makeundirected, reversedirection, setdirectionfrom, setdirectionto removevertex(v) O(1) O(1) O(n) O(m) O(n+m) O(1) O(deg(v)) O(min(deg(u),deg(v))) O(1) O(deg(v)) 9. luku 476

25 Vierekkyysmatriisirakenne Kuten vierekkyyslista, myös graafin vierekkyysmatriisirakenne laajentaa kaarirakennetta lisäkomponentilla. Nyt lisätään kaarilistan lisäksi matriisi (taulukko) A, josta saadaan määrättyä solmuparien vierekkäisyysominaisuus vakioajassa. Muutamien metodien nopeutus aiheuttaa toisaalta aiempaa suuremman tilavaatimuksen. Tulkitaan solmut nyt kokonaislukuina joukosta {0, 1,, n 1} ja kaaret tällaisten kokonaislukujen pareina. Viittaukset kaariin voidaan nyt tallettaa kaksiulotteisen n n taulukon A alkioihin. Vierekkyysmatriisiesitys laajentaa kaarilistaa seuraavasti (kuva 9.5.): Solmun v olio tallettaa erillisen kokonaislukuavaimen väliltä 0, 1,, n 1. Se on solmun v indeksi (index). Käytetään kuitenkin yksinkertaisuuden vuoksi nimitystä solmu i indeksin sijasta. 9. luku 477

26 Taulukon alkio A[i,j] käsittää viittauksen kaariolioon e, joka menee solmusta i solmuun j. Mikäli tämä on suuntaamaton, e talletetaan sekä alkioon A[i,j] että A[j,i]. Kun kahden solmun välillä ei ole kaarta, jätetään vastavaat alkiot tyhjiksi. Vaikka jotkut metodit nyt ovat nopeampia kuin edeltävien rakenteiden yhteydessä, muutamien muiden suoritusaika kasvaa, koska esim. solmumetodien tilanteissa on käytävä läpi kokonainen rivi tai sarake taulukosta. Lisäksi muistitilavaatimus kasvaa kertaluokkaan O(n 2 ). Myös mikä tahansa solmun lisäys tai poisto vaatii nyt koko taulukon läpikäynnin, joka on O(n 2 ). 9. luku 478

27 BOS DFW JFK LAX MIA ORD SFO (a) NW DL AA DL AA AA UA AA AA UA (b) Kuva 9.5. Vierekkyysmatriisi: (a) graafin G solmujen indeksit ja (b) taulukko A. TW luku 479

28 Taulukko 9.3. Graafimetodien suoritusajat, kun graafi on toteutettu vierekkyysmatriisina. Tilavaatimus on O(n 2 ), missä n on solmujen lukumäärä. Kaarien määrä on m. operaatio suoritusaika size, isempty, replaceelement, swap O(1) numvertice, numedges O(1) vertices O(n) edges, directededges, undirectededges O(m) elements, positions O(n+m) endvertices, opposite, origin, destination, O(1) isdirected, degree, indegree, outdegree incidentedges, inincidentedges, O(n) outincidentedges, adjacentvertices, inadjacentvertices, outadjacentvertices areadjacent O(1) insertedge, insertdirectededge, removeedge, O(1) makeundirected, reversedirection, setdirectionfrom, setdirectionto insertvertex, removevertex O(n 2 ) 9. luku 480

29 9.3. Graafin kulkeminen Kulkeminen (traversal) on järjestelmällinen tapa käydä graafi läpi tutkien kaikki solmut ja kaaret. Kulkeminen on tehokasta, kun se suoritetaan ajassa, joka on lineaarisessa suhteessa solmujen ja kaarien määrään. Tässä tarkastellaan suuntaamattomien graafien kulkemista. Syvyyshaku Ensimmäinen tarkasteltava menetelmä on syvyyshaku (depth first search), jota kuvan 9.6. tilanteet esittävät. Aloitetaan graafin määrätystä alkusolmusta s, joka kiinnitetään merkitsemällä se käydyksi. Solmu s on nyt nykyinen solmu u. Graafi käydään läpi ottamalla (mielivaltaisesti valittu) kaari (u,v). Jos tämä johtaa jo käytyyn solmuun v jossakin tilanteessa, palataan solmuun u. Jos toisaalta solmu v oli käymätön, mennään siihen ja merkitään se nykyiseksi ja käydyksi solmuksi. 9. luku 481

30 Edeltävää toimenpidettä toistetaan, kunnes tullaan umpikujaan eli solmuun, jonka kaikki viereiset solmut on aiemmin käyty. Tällöin peräännytään tultua reittiä takaisinpäin, kunnes löydetään sellainen käymätön kaari ja siis solmu, jolla on käymätön viereinen solmu. Tästä jatketaan taas eteenpäin käymättömiä solmuja edellisin ohjein. Prosessi loppuu, kun lopulta peräännytään alkusolmuun s. Syvyyshakua voidaan kuvata esittämällä kaaret sen mukaan, mihin suuntaan ne kuljetaan. Kaaret, joiden päästä saadaan uusi, ennenkäymätön solmu, ovat löytökaaria (discovery edges, tree edges), ja kaaret, joiden kautta tullaan aiemmin käytyihin, ovat perääntymiskaaria (back edges) (kuva 9.6.). Edellisten avulla saadaan haussa uusia solmuja ja jälkimmäisillä peräännytään. Löytökaarista saadaan tarvittaessa myös virittävä puu. Koodissa 9.1. on syvyyshakualgoritmin pseudokoodi. Siinä oletetaan olevan mukana mekanismi, jolla selvitetään, onko solmussa tai kaaressa käyty. 9. luku 482

31 A B C D A B C D E F G H E F G H I J K L I J K L M N O P M N O P (a) (b) Kuva 9.6. (alku) Esimerkki syvyyshausta. Löytökaaret on merkitty yhtenäisillä viivoilla ja perääntymiskaaret katkoviivoilla: (a) syötegraafi ja (b) löytökaarien polku aina solmuun A asti, kunnes kohdataan perääntymiskaari (B,A). 9. luku 483

32 A B C D A B C D E F G H E F G H I J K L I J K L M N O P M N O P (c) (d) Kuva 9.6. (jatkoa) (c) Solmun F saavuttaminen, joka on umpikuja, ja (d) Perääntymisen jälkeen solmuun C, josta on edetty kaaren (C,G) kautta jälleen umpikujaan, solmuun J. 9. luku 484

33 A B C D A B C D E F G H E F G H I J K L I J K L M N O P M N O P (e) (f) Kuva 9.6. (loppu) (e) Perääntymisen jälkeen solmuun G ja (f) perääntymisen jälkeen solmuun N. 9. luku 485

34 Algorithm DFS(v): Input: solmu v graafista Output: kaaret merkittyinä löytö ja perääntymiskaarina for jokaiselle solmuun v liittyvälle kaarelle e do if kaari e on käymätön then olkoon w kaaren e toinen päätesolmu if solmu w on käymätön then merkitse e löytökaareksi kutsu rekursiivisesti algoritmia DFS(w) else merkitse e perääntymiskaareksi Koodi 9.1. Syvyyshakualgoritmi. 9. luku 486

35 Syvyyshakuun liittyy monia seikkoja, joista mainitaan esimerkkinä se, että kun perääntymiskaaret yhdistävät aina solmun v aiemmin käytyyn solmuun u, ne muodostavat syklin graafissa. Seuraava lause esittää muutamia ominaisuuksia. Lause 9.5. Olkoon G suuntaamaton graafi, jossa syvyyshaku aloitetaan solmusta s. Silloin ovat ominaisuudet: Kuljettaessa graafi käydään kaikki solmut läpi solmun s yhdistetyssä komponentissa. Löytökaaret muodostavat s:n yhdistetyn komponentin virittävän puun. Perustelu jätetään väliin, mutta se on esitettävissä vastaväitetodistusta käyttäen. yksinkertaista Syvyyshaku on suoritusajaltaan tehokas, kun solmussa tehtävät toimenpiteet (testi ja merkintä) ovat suoritettavissa vakioajassa O(1). 9. luku 487

36 Algoritmia kutsutaan täsmälleen kerran jokaista solmua kohti, ja jokainen kaari tutkitaan kahdesti, kerran sen kummastakin päätesolmusta käsin. Muutamin edellytyksin solmun testin ja merkinnän vakioaika, solmu ja kaarimetodien vakiollinen suoritusaika (vierekkyyslista, mutta ei matriisi) ja systemaattinen menettely käydä solmuun liittyvät kaaret ainoastaan kerran kussakin (vierekkyyslista) saadaan syvyyshaulle tehokas suoritus aikaan. Lause 9.6. Olkoon G graafi n solmuineen ja m kaarineen. Syvyyshaku toimii siinä ajassa O(n+m). Lisäksi on olemassa syvyyshakuun perustuvia algoritmeja, jotka toimivat ajassa O(n+m) ongelmille: Sen tutkiminen, onko G yhdistetty. Virittävän puun laskeminen, kunhan G on yhdistetty. G:n yhdistettyjen komponenttien laskeminen. Kahden solmun välisen polun etsiminen tai selvittäminen, ettei sitä ole. Mahdollisen syklin laskeminen. 9. luku 488

37 Leveyshaku Syvyyshaun tapaan leveyshaku (breadth first search) kulkee graafin yhdistetyn komponentin täysin läpi. Leveyshaku etenee konservatiivisesti tasoittain graafia (kuva 9.7.), kun taas sysyyshaussa sukellettiin syvyyksiin. Olkoon aloitussolmu s tasona 0. Se on aluksi kiintopisteenä, josta käydään seuraava taso 1 läpi eli solmun s vierekkäiset solmut. Solmuun tultaessa se merkitään käydyksi. Seuraavaksi käydään tason 1 solmujen vierekkäiset solmut läpi, ja tämä on taso 2. Näin jatketaan tasolta i tasolle i+1, kunnes kaikki solmut ja kaaret on käyty läpi. Leveyshaun kauniina piirteenä on, että jokainen solmu käydään läpi ja merkitään (nimetään, leimataan) lyhimmän polun mielessä eli minimimäärällä kaaria aloitussolmusta lukien. Jos solmu v sijaitsee leveyshaun tasolla i, sen lyhimmän polun pituus solmusta s on i. 9. luku 489

38 0 0 1 A B C D A B C D E F G H E F G H I J K L I J K L M N O P M N O P (a) (b) Kuva 9.7. (alku) Esimerkki leveyshausta, jossa solmuihin liittyvät kaaret tutkitaan aakkosjärjestyksessä vierekkäisistä solmuista. Löytökaaret on merkitty yhtenäisillä nuolilla ja vastakkaiskaaret (ei vielä tässä) katkoviivoilla. (a) Graafi aloitusvaiheessa ja (b) tason 1 käsittely. 9. luku 490

39 A B C D A B C D E F G H E F G H I J K L I J K L M N O P M N O P (c) (d) Kuva 9.7. (jatkoa) (c) Tason 2 käsittely ja (d) tason 3 käsittely. 9. luku 491

40 9. luku 492 A E I B C D N F J G H O K L P M (e) A E I B C D N F J G H O K L P M (f) Kuva 9.7. (loppu) (e) Tason 4 ja (f) tason 5 käsittelyt. E F B

41 Syvyyshaun tapaan leveyshaussa merkitään kaaret kahdella tyypillä. Uusiin solmuihin johtavat ovat jälleen löytökaaria, mutta aiemmin käytyihin johtavat ovat vastakkaiskaaria (cross edges) (kuva 9.7.(f)) erotuksena syvyyshakuun, sillä nämä eivät yhdistä solmua edeltäjiinsä. Leveyshaun pseudokoodiesitys on koodina 9.2. Se tarvitsee lisätilaa kaarien ja solmujen merkitsemiseen ja tasoihin liitettävien säiliöiden tallettamiseen. Algoritmi ei ole rekursiivinen. Leveyshaulla on monia ominaisuuksia, joita selostetaan seuraavasti. Lause 9.7. Olkoon G suuntaamaton graafi, jossa leveyshaku aloitetaan solmusta s. Silloin ovat ominaisuudet: Graafissa käydään läpi kaikki solmut s:n yhdistetyssä komponentissa. Löytökaaret muodostavat s:n yhdistetyn komponentin virittävän puun T, jota kutsutaan leveyshakupuuksi. Leveyshakupuun T polku solmusta s solmuun v tasolle i käsittää i kaarta ja mikä tahansa muu polku niiden välillä on ainakin yhtä pitkä. Jos (u,v) ei ole T:ssä, u:n ja v:n tasonumerot eroavat enintään yhdellä. 9. luku 493

42 Algorithm BFS(s): alustetaan säiliö L 0 sisältämään solmu s i 0 while L i ei ole tyhjä do luodaan tyhjä säiliö L i+1 for jokaiselle solmulle v säiliöstä L i do for jokaiselle solmuun v liittyvälle kaarelle e do if kaari e on käymätön then olkoon w kaaren e toinen päätesolmu if solmu w on käymätön then merkitään e löytökaareksi lisätään w säiliöön L i+1 else i i + 1 merkitään e vastakkaiskaareksi Koodi 9.2. Leveyshakualgoritmi. 9. luku 494

43 Lause 9.8. Olkoon G graafi n solmuineen ja m kaarineen. Leveyshaku graafissa G vaatii ajan O(m+n). On myös muita samassa ajassa toimivia, leveyshakuun perustuvia algoritmeja: Sen tutkiminen, onko G yhdistetty. G:n virittävän puun laskeminen, kunhan G on yhdistetty. G:n yhdistettyjen komponenttien laskeminen. G:n mille tahansa solmulle v lyhimmän polun laskeminen aloitussolmusta s. Kumpaa tulisi käyttää näistä menetelmistä, riippuu sovelluksesta. Esim. lyhimmän polun laskennassa leveyshaku on syvyyshakua parempi. Syvyyshaku on puolestaan soveliaampi vastattaessa monimutkaisiin yhteyskysymyksiin, kuten voidaanko jokainen graafin solmupari yhdistää kahdella erillisellä polulla. Nämä tulokset pätevät kuitenkin vain suuntaamattomille graafeille, joten seuraavaksi tarkastellaan suunnattuja. 9. luku 495

44 9.4. Suunnatut graafit Graafi on suunnattu, jos sen kaaret ovat suunnattuja. Saavutettavuus Saavutettavuuden (reachability) tärkeässä käsitteessä on kysymys siitä, mihin suunnatussa graafissa G päästään kulkemaan. Kulkeminen graafissa tapahtuu luonnollisesti kaarien määrätyissä suunnissa, mikä vaikuttaa itse prosessiin. Solmuilla u ja v sanotaan u:n saavuttavan v:n (ja v on saavutettavissa u:sta), jos on olemassa suunnattu polku u:sta v:hen. Suunnattu graafi G on vahvasti yhdistetty (strongly connected), jos mille tahansa sen solmuparille u ja v edellinen saavuttaa jälkimmäisen ja päinvastoin. G:n suunnattu sykli (directed cycle) on sellainen, jossa kaikki sen kaaret käydään suuntiensa mukaan läpi. G on syklitön (acyclic), jos siinä ei ole yhtään suunnattua sykliä (kuva 9.8.). 9. luku 496

45 BOS ORD JFK SFO DFW LAX MIA (a) Kuva 9.8. (alku) Esimerkkejä saavutettavuudesta suunnatussa graafissa: (a) suunnattu polku lentokentältä BOS kentälle LAX. 9. luku 497

46 BOS ORD JFK SFO DFW LAX MIA (b) Kuva 9.8. (jatkoa) (b) Suunnattu sykli (ORD, MIA, DFW, LAX, ORD). 9. luku 498

47 BOS ORD JFK SFO DFW LAX MIA (c) Kuva 9.8. (jatkoa) (c) Solmusta ORD saavutettavien solmujen ja kaarien aligraafi käsittää muut paitsi solmut JFK ja BOS. 9. luku 499

48 BOS ORD JFK SFO DFW LAX MIA (d) Kuva 9.8. (loppu) (d) Katkoviivoilla merkityt kaaret poistamalla saadaan syklitön suunnattu graafi. 9. luku 500

49 Suunnatun graafin G transitiivinen sulkeuma (transitive closure) G* käsittää G:n solmut ja kaaret (u,v), joille on olemassa suunnattu polku solmusta u solmuun v graafissa G. G* määritellään siis niin, että otetaan G ja lisätään sellaiset kaaret (u,v), joissa v on saavutettavissa solmusta u (eikä G: ssä ollut jo kyseisiä kaaria). Saavutettavuutta koskevia mielenkiintoisia kysymyksiä ovat suunnatun graafin tapauksessa seuraavat: Onko solmu v saavutettavissa solmusta u? Kaikkien sellaisten solmujen etsiminen, jotka ovat saavutettavissa solmusta s käsin. Onko G vahvasti yhdistetty? Onko G syklitön? G:n transitiivisen sulkeuman laskeminen. 9. luku 501

50 Suunnatun graafin kulkeminen Kuten suuntaamattomilla graafeilla, suunnatuillakin käytetään samankaltaisia kulkemisalgoritmeja. Ainoa ero on, että nyt on otettava huomioon kaarien suunnat. Seuraavaksi esitetään rekursiivinen suunnattu syvyyshakualgoritmi koodina 9.3. Sen käytöstä on esimerkki kuvassa 9.9. Algorithm DirectedDFS(v): merkitään solmu v käydyksi for jokaiselle solmun v lähtevälle kaarelle (v,w) do if solmussa w ei ole käyty then kutsu rekursiivisesti algoritmia DirectedDFS(w) Koodi 9.3. Suunnatun syvyyshaun algoritmi. 9. luku 502

51 BOS ORD JFK SFO DFW LAX MIA (a) Kuva 9.9. (alku) Esimerkki suunnatun graafin syvyyshausta: (a) välivaihe, jossa saavutetaan ensi kertaa aiemmin käyty solmu (DFW). 9. luku 503

52 1 BOS 7 SFO ORD 5 JFK 2 DFW 3 LAX 4 (b) MIA 6 Kuva 9.9.(loppu) (b) Päättynyt suunnatun graafin syvyyshaku, jossa on solmujen käyntijärjestys merkitty numeroin. 9. luku 504

53 Suunnatun graafin syvyyshakualgoritmi toimii suuntaamattoman tapaan ajassa O(n+m), missä n on solmujen ja m kaarien määrä. Muutamat suunnattuihin graafeihin liittyvät ongelmat, kuten sen selvittäminen, onko graafi vahvasti yhdistetty, tai transitiivisen sulkeuman laskeminen, vaativat ajan O(n(n+m)). Suunnatut syklittömät graafit Suunnattuja syklittömiä graafeja (directed acyclic graph, DAG) tarvitaan monissa sovelluksissa. Esimerkkinä on Java kielisen ohjelman luokkien välinen periytyminen. Olkoon G suunnattu syklitön graafi, jossa on n solmua. Sen topologinen järjestys (topological ordering) on solmujen järjestys v 1,, v n, missä jokaiselle kaarelle (v i,v j ) on i<j. Topologinen järjestys merkitsee, että mikä tahansa G:n suunnattu polku käy solmut läpi kasvavassa järjestyksessä. Kuvassa on kaksi esimerkkiä näistä. Topologinen järjestys lasketaan topologisen lajittelun (topological sorting) algoritmilla, mutta sitä ei esitetä tässä. 9. luku 505

54 9. luku 506 A B C D F E G I H (a) A B C D F E G I H (b) Kuva Kaksi topologista järjestystä samasta suunnatusta syklittömästä graafista. Järjestysnumero on merkitty solmun viereen.

Algoritmit 1. Luento 9 Ti Timo Männikkö

Algoritmit 1. Luento 9 Ti Timo Männikkö Algoritmit 1 Luento 9 Ti 7.2.2017 Timo Männikkö Luento 9 Graafit ja verkot Kaaritaulukko, bittimatriisi, pituusmatriisi Verkon lyhimmät polut Floydin menetelmä Lähtevien ja tulevien kaarien listat Forward

Lisätiedot

9. Graafit. Termejä ja perusominaisuuksia

9. Graafit. Termejä ja perusominaisuuksia 9. raafit raafeilla eli verkoilla esitetään yhteystietoja. simerkkejä niistä ovat kaupunkikartan kadut ja tietoverkon tietokoneet. Tämä luku tarkastelee verkkojen perusasioita. 9.1. raafin abstrakti tietotyyppi

Lisätiedot

10. Painotetut graafit

10. Painotetut graafit 10. Painotetut graafit Esiintyy monesti sovelluksia, joita on kätevä esittää graafeina. Tällaisia ovat esim. tietoverkko tai maantieverkko. Näihin liittyy erinäisiä tekijöitä. Tietoverkkoja käytettäessä

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT 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

Lisätiedot

10. Painotetut graafit

10. Painotetut graafit 10. Painotetut graafit Esiintyy monesti sovelluksia, joita on kätevä esittää graafeina. Tällaisia ovat esim. tietoverkko tai maantieverkko. Näihin liittyy erinäisiä tekijöitä. Tietoverkkoja käytettäessä

Lisätiedot

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

0 v i v j / E, M ij = 1 v i v j E. Vieruspistematriisi Graafi esitetään tietokoneessa useimmiten matriisin avulla. Graafin G = (V, E), V = {v 1, v 2,..., v n } vieruspistematriisi (adjacency matrix)on n n matriisi M = (M ij ), missä n on

Lisätiedot

6.4. Järjestyssuhteet

6.4. Järjestyssuhteet 6.4. Järjestyssuhteet Joukon suhteilla voidaan kuvata myös alkioiden järjestystä tietyn ominaisuuden suhteen. Järjestys on myös kaksipaikkainen suhde (ja on monia erilaisia järjestyksiä). Suhde R joukossa

Lisätiedot

Algoritmit 1. Luento 8 Ke Timo Männikkö

Algoritmit 1. Luento 8 Ke Timo Männikkö Algoritmit 1 Luento 8 Ke 1.2.2017 Timo Männikkö Luento 8 Järjestetty binääripuu Solmujen läpikäynti Binääripuun korkeus Binääripuun tasapainottaminen Graafit ja verkot Verkon lyhimmät polut Fordin ja Fulkersonin

Lisätiedot

Johdatus graafiteoriaan

Johdatus graafiteoriaan Johdatus graafiteoriaan Syksy 2017 Lauri Hella Tampereen yliopisto Luonnontieteiden tiedekunta 126 Luku 3 Puut 3.1 Puu 3.2 Virittävä puu 3.3 Virittävän puun konstruointi 3.4 Minimaalinen virittävä puu

Lisätiedot

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti.

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti. Tietorakenteet, laskuharjoitus 11, ratkaisuja 1. Leveyssuuntaisen läpikäynnin voi toteuttaa rekursiivisesti käsittelemällä jokaisella rekursiivisella kutsulla kaikki tietyllä tasolla olevat solmut. Rekursiivinen

Lisätiedot

Johdatus graafiteoriaan

Johdatus graafiteoriaan Johdatus graafiteoriaan Syksy 2017 Lauri Hella Tampereen yliopisto Luonnontieteiden tiedekunta 62 Luku 2 Yhtenäisyys 2.1 Polku 2.2 Lyhin painotettu polku 2.3 Yhtenäinen graafi 2.4 Komponentti 2.5 Aste

Lisätiedot

Algoritmi on periaatteellisella tasolla seuraava:

Algoritmi on periaatteellisella tasolla seuraava: Algoritmi on periaatteellisella tasolla seuraava: Dijkstra(V, E, l, v 0 ): S := { v 0 } D[v 0 ] := 0 for v V S do D[v] := l(v 0, v) end for while S V do valitse v V S jolle D[v] on minimaalinen S := S

Lisätiedot

13 Lyhimmät painotetut polut

13 Lyhimmät painotetut polut TIE-20100 Tietorakenteet ja algoritmit 297 13 Lyhimmät painotetut polut BFS löytää lyhimmän polun lähtösolmusta graafin saavutettaviin solmuihin. Se ei kuitenkaan enää suoriudu tehtävästä, jos kaarien

Lisätiedot

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

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Graafit ja verkot Suuntamaton graafi: eli haaroja Joukko solmuja ja joukko järjestämättömiä solmupareja Suunnattu graafi: Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Haaran päätesolmut:

Lisätiedot

811312A Tietorakenteet ja algoritmit V Verkkojen algoritmeja Osa1 : Leveys- ja syvyyshaku

811312A Tietorakenteet ja algoritmit V Verkkojen algoritmeja Osa1 : Leveys- ja syvyyshaku 811312A Tietorakenteet ja algoritmit 2016-2017 V Verkkojen algoritmeja Osa1 : Leveys- ja syvyyshaku Sisältö 1. Johdanto 2. Leveyshaku 3. Syvyyshaku 4. Kruskalin algoritmi 5. Dijkstran algoritmi 811312A

Lisätiedot

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä Luku 7 Verkkoalgoritmit Verkot soveltuvat monenlaisten ohjelmointiongelmien mallintamiseen. Tyypillinen esimerkki verkosta on tieverkosto, jonka rakenne muistuttaa luonnostaan verkkoa. Joskus taas verkko

Lisätiedot

TIE Tietorakenteet ja algoritmit 261

TIE Tietorakenteet ja algoritmit 261 TIE-20100 Tietorakenteet ja algoritmit 261 12 Graafit Seuraavaksi tutustutaan tietorakenteeseen, jonka muodostavat pisteet ja niiden välille muodostetut yhteydet graafiin. Keskitymme myös tyypillisimpiin

Lisätiedot

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

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: Tietorakenteet, laskuharjoitus 10, ratkaisuja 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: SamaLuku(T ) 2 for i = 1 to T.length 1 3 if T [i] == T [i + 1] 4 return True 5 return

Lisätiedot

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

Eräs keskeinen algoritmien suunnittelutekniikka on. Palauta ongelma johonkin tunnettuun verkko-ongelmaan. 5. Verkkoalgoritmeja Eräs keskeinen algoritmien suunnittelutekniikka on Palauta ongelma johonkin tunnettuun verkko-ongelmaan. Palauttaminen edellyttää usein ongelman ja algoritmin pientä modifioimista,

Lisätiedot

Silmukkaoptimoinnista

Silmukkaoptimoinnista sta TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 8. joulukuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe F maanantai 14.12. klo 12 rekisteriallokaatio Arvostelukappale

Lisätiedot

811312A Tietorakenteet ja algoritmit 2015-2016. V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit

811312A Tietorakenteet ja algoritmit 2015-2016. V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit 811312A Tietorakenteet ja algoritmit 2015-2016 V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit Sisältö 1. Johdanto 2. Leveyshaku 3. Syvyyshaku 4. Kruskalin algoritmi 5. Dijkstran algoritmi

Lisätiedot

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen) 58131 Tietorakenteet Erilliskoe 11.11.2008, ratkaisuja (Jyrki Kivinen) 1. (a) Koska halutaan DELETEMAX mahdollisimman nopeaksi, käytetään järjestettyä linkitettyä listaa, jossa suurin alkio on listan kärjessä.

Lisätiedot

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö Algoritmit 2 Luento 2 To 14.3.2019 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2019 Luento

Lisätiedot

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

Kysymys: Voidaanko graafi piirtää tasoon niin, että sen viivat eivät risteä muualla kuin pisteiden kohdalla? 7.7. Tasograafit Graafi voidaan piirtää mielivaltaisen monella tavalla. Graafin ominaisuudet voivat näkyä selkeästi jossain piirtämistavoissa, mutta ei toisessa. Eräs tärkeä graafiryhmä, pintagraafit,

Lisätiedot

Johdatus graafiteoriaan

Johdatus graafiteoriaan Johdatus graafiteoriaan Syksy 2017 Lauri Hella Tampereen yliopisto Luonnontieteiden tiedekunta 166 Luku 4 Erilaisia graafeja 4.1 Eulerin graafi 4.2 Hamiltonin graafi 4.3 Tasograafi 4.4 Graafin värittäminen

Lisätiedot

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö Algoritmit 2 Luento 2 Ke 15.3.2017 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2017 Luento

Lisätiedot

Rakenteellinen tasapaino ja transitiivisyys

Rakenteellinen tasapaino ja transitiivisyys 1 Hypermedian jatko-opintoseminaari 2008-2009 Rakenteellinen tasapaino ja transitiivisyys 20.2.2009 Seppo Pohjolainen 2 Rakenteellinen tasapaino Käsitteitä: Arvotettu graafi (signed graph) (+ tai - ) Suuntaamaton

Lisätiedot

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

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Esimerkki otteluvoiton todennäköisyys A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Yksittäisessä pelissä A voittaa todennäköisyydellä p ja B todennäköisyydellä q =

Lisätiedot

8.5. Järjestyssuhteet 1 / 19

8.5. Järjestyssuhteet 1 / 19 8.5. Järjestyssuhteet 1 / 19 Määritelmä Joukon suhteilla voidaan kuvata myös alkioiden järjestystä tietyn ominaisuuden suhteen. Järjestys on myös kaksipaikkainen suhde (ja on monia erilaisia järjestyksiä).

Lisätiedot

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta 811312A Tietorakenteet ja algoritmit 2016-2017 Kertausta jälkiosasta IV Perustietorakenteet Pino, jono ja listat tunnettava Osattava soveltaa rakenteita algoritmeissa Osattava päätellä operaatioiden aikakompleksisuus

Lisätiedot

Graafin virittävä puu 1 / 20

Graafin virittävä puu 1 / 20 Graafin virittävä puu 1 / 20 Graafin virittävä puu PuuT on graafingvirittävä puu (spanning tree), jos se sisältää kaikkig:n pisteet. Virittäviä puita: 2 / 20 Yhdistämisongelma Yhdistämisongelma:(Connector

Lisätiedot

Tietorakenteet ja algoritmit - syksy 2015 1

Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä

Lisätiedot

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:

Lisätiedot

Tietorakenteet ja algoritmit. Verkot. Ari Korhonen

Tietorakenteet ja algoritmit. Verkot. Ari Korhonen Tietorakenteet ja algoritmit Verkot Ari Korhonen 1 10. VERKOT ( graphs ) 10.1 Yleistä 10.2 Terminologiaa 10.3 Verkon esittäminen 10.4 Verkon läpikäyntialgoritmit (graph traversal) 10.5 Painotetut verkot

Lisätiedot

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta 811312A Tietorakenteet ja algoritmit 2018-2019 Kertausta jälkiosasta V Hashtaulukot ja binääriset etsintäpuut Hashtaulukot Perusajatus tunnettava Tiedettävä mikä on tiivistefunktio Törmäysongelman hallinta:

Lisätiedot

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

3. Hakupuut. B-puu on hakupuun laji, joka sopii mm. tietokantasovelluksiin, joissa rakenne on talletettu kiintolevylle eikä keskusmuistiin. 3. Hakupuut Hakupuu on listaa tehokkaampi dynaamisen joukon toteutus. Erityisesti suurilla tietomäärillä hakupuu kannattaa tasapainottaa, jolloin päivitysoperaatioista tulee hankalampia toteuttaa mutta

Lisätiedot

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 1. Luento 7 Ti Timo Männikkö Algoritmit 1 Luento 7 Ti 31.1.2017 Timo Männikkö Luento 7 Järjestetty binääripuu Binääripuiden termejä Binääripuiden operaatiot Solmun haku, lisäys, poisto Algoritmit 1 Kevät 2017 Luento 7 Ti 31.1.2017

Lisätiedot

14. Luennon sisältö. Kuljetustehtävä. Verkkoteoria ja optimointi. esimerkki. verkkoteorian optimointitehtäviä verkon virittävä puu lyhimmät polut

14. Luennon sisältö. Kuljetustehtävä. Verkkoteoria ja optimointi. esimerkki. verkkoteorian optimointitehtäviä verkon virittävä puu lyhimmät polut JYVÄSKYLÄN YLIOPISTO 14. Luennon sisältö Kuljetustehtävä esimerkki Verkkoteoria ja optimointi verkkoteorian optimointitehtäviä verkon virittävä puu lyhimmät polut kevät 2012 TIEA382 Lineaarinen ja diskreetti

Lisätiedot

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö Algoritmit 2 Luento 7 Ti 4.4.2017 Timo Männikkö Luento 7 Joukot Joukko-operaatioita Joukkojen esitystapoja Alkiovieraat osajoukot Toteutus puurakenteena Algoritmit 2 Kevät 2017 Luento 7 Ti 4.4.2017 2/26

Lisätiedot

v 8 v 9 v 5 C v 3 v 4

v 8 v 9 v 5 C v 3 v 4 Verkot Verkko on (äärellinen) matemaattinen malli, joka koostuu pisteistä ja pisteitä toisiinsa yhdistävistä viivoista. Jokainen viiva yhdistää kaksi pistettä, jotka ovat viivan päätepisteitä. Esimerkiksi

Lisätiedot

PARITUS KAKSIJAKOISESSA

PARITUS KAKSIJAKOISESSA PARITUS KAKSIJAKOISESSA GRAAFISSA Informaatiotekniikan t iik seminaari i Pekka Rossi 4.3.2008 SISÄLTÖ Johdanto Kaksijakoinen graafi Sovituksen peruskäsitteet Sovitusongelma Lisäyspolku Bipartite matching-algoritmi

Lisätiedot

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

Graafin 3-värittyvyyden tutkinta T Graafiteoria, projektityö (eksakti algoritmi), kevät 2005 Graafin 3-värittyvyyden tutkinta T-79.165 Graafiteoria, projektityö (eksakti algoritmi), kevät 2005 Mikko Malinen, 36474R 29. maaliskuuta, 2005 Tiivistelmä Artikkelissa käydään läpi teoriaa, jonka avulla

Lisätiedot

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien

Lisätiedot

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

58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 2, , vastauksia 58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 2, 652013, vastauksia 1 [6 pistettä] Vastaa jokaisesta alla olevasta väittämästä onko se tosi vai epätosi ja anna lyhyt perustelu Jokaisesta kohdasta

Lisätiedot

Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 2. Luento 6 To Timo Männikkö Algoritmit 2 Luento 6 To 28.3.2019 Timo Männikkö Luento 6 B-puun operaatiot Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2019 Luento 6 To 28.3.2019 2/30 B-puu 40 60 80 130 90 100

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT GRAAFITEHTÄVIÄ JA -ALGORITMEJA Lähteet: Timo Harju, Opintomoniste Keijo Ruohonen, Graafiteoria (math.tut.fi/~ruohonen/gt.pdf) GRAAFIN LÄPIKÄYMINEN Perusta useimmille

Lisätiedot

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

V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen Luento omatoimisen luennan tueksi algoritmiikan tutkimusseminaarissa 23.9.2002. 1 Sisältö Esitellään ongelmat Steiner-puu Kauppamatkustajan

Lisätiedot

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

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko, Tehtävä 1 : 1 a) Olkoon G heikosti yhtenäinen suunnattu verkko, jossa on yhteensä n solmua. Määritelmän nojalla verkko G S on yhtenäinen, jolloin verkoksi T voidaan valita jokin verkon G S virittävä alipuu.

Lisätiedot

Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia

Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia Kukin alkio (viite) talletettuna solmuun (node) vastaa paikan käsitettä

Lisätiedot

Oikeasta tosi-epätosi -väittämästä saa pisteen, ja hyvästä perustelusta toisen.

Oikeasta tosi-epätosi -väittämästä saa pisteen, ja hyvästä perustelusta toisen. Tietorakenteet, kevät 2012 Kurssikoe 2, mallivastaukset 2. (a) Järjestämistä ei voi missään tilanteessa suorittaa nopeammin kuin ajassa Θ(n log n), missä n on järjestettävän taulukon pituus. Epätosi: Yleisessä

Lisätiedot

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen) TKT0001 Tietorakenteet ja algoritmit Erilliskoe 5.1.01, malliratkaisut (Jyrki Kivinen) 1. [1 pistettä] (a) Esitä algoritmi, joka poistaa kahteen suuntaan linkitetystä järjestämättömästä tunnussolmullisesta

Lisätiedot

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

Kurssikoe on maanantaina 29.6. Muista ilmoittautua kokeeseen viimeistään 10 päivää ennen koetta! Ilmoittautumisohjeet löytyvät kurssin kotisivuilla. HY / Avoin ylioisto Johdatus yliopistomatematiikkaan, kesä 201 Harjoitus 7 Ratkaisut palautettava viimeistään perjantaina 26.6.201 klo 16.00. Huom! Luennot ovat salissa CK112 maanantaista 1.6. lähtien.

Lisätiedot

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö Algoritmit 1 Luento 10 Ke 14.2.2018 Timo Männikkö Luento 10 Algoritminen ongelmanratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Lisäyslajittelu Valintalajittelu Permutaatiot

Lisätiedot

Algoritmit 1. Luento 13 Ti 23.2.2016. Timo Männikkö

Algoritmit 1. Luento 13 Ti 23.2.2016. Timo Männikkö Algoritmit 1 Luento 13 Ti 23.2.2016 Timo Männikkö Luento 13 Suunnittelumenetelmät Taulukointi Kapsäkkiongelma Ahne menetelmä Verkon lyhimmät polut Dijkstran menetelmä Verkon lyhin virittävä puu Kruskalin

Lisätiedot

Pienin virittävä puu (minimum spanning tree)

Pienin virittävä puu (minimum spanning tree) Pienin virittävä puu (minimum spanning tree) Jatkossa puu tarkoittaa vapaata puuta (ks. s. 11) eli suuntaamatonta verkkoa, joka on yhtenäinen: minkä tahansa kahden solmun välillä on polku syklitön: minkä

Lisätiedot

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet ) T-79144 Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet 11-22) 26 29102004 1 Ilmaise seuraavat lauseet predikaattilogiikalla: a) Jokin porteista on viallinen

Lisätiedot

58131 Tietorakenteet ja algoritmit (syksy 2015) Toinen välikoe, malliratkaisut

58131 Tietorakenteet ja algoritmit (syksy 2015) Toinen välikoe, malliratkaisut Tietorakenteet ja algoritmit (syksy 0) Toinen välikoe, malliratkaisut. (a) Alussa puu näyttää tältä: Lisätään 4: 4 Tasapaino rikkoutuu solmussa. Tehdään kaksoiskierto ensin oikealle solmusta ja sitten

Lisätiedot

Algoritmit 1. Luento 13 Ma Timo Männikkö

Algoritmit 1. Luento 13 Ma Timo Männikkö Algoritmit 1 Luento 13 Ma 26.2.2018 Timo Männikkö Luento 13 Suunnittelumenetelmät Taulukointi Kapsäkkiongelma Ahne menetelmä Verkon lyhimmät polut Dijkstran menetelmä Verkon lyhin virittävä puu Kruskalin

Lisätiedot

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö Algoritmit 2 Luento 14 Ke 3.5.2017 Timo Männikkö Luento 14 Ositus ja rekursio Rekursion toteutus Kertaus ja tenttivinkit Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 2/30 Ositus Tehtävän esiintymä ositetaan

Lisätiedot

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe malliratkaisut ja arvosteluperusteet

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe malliratkaisut ja arvosteluperusteet 58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe 15.6.2018 malliratkaisut ja arvosteluperusteet 1. [10 pistettä] Hakemistorakenteet. Vertaa linkitettyjen listojen, tasapainoisten hakupuiden ja

Lisätiedot

Miten käydä läpi puun alkiot (traversal)?

Miten käydä läpi puun alkiot (traversal)? inääripuut ieman lisää aidon binääripuun ominaisuuksia lehtisolmuja on yksi enemmän kuin sisäsolmuja inääripuut tasolla d on korkeintaan 2 d solmua pätee myös epäaidolle binääripuulle taso 0: 2 0 = 1 solmu

Lisätiedot

Algoritmit 1. Luento 14 Ke 25.2.2015. Timo Männikkö

Algoritmit 1. Luento 14 Ke 25.2.2015. Timo Männikkö Algoritmit 1 Luento 14 Ke 25.2.2015 Timo Männikkö Luento 14 Heuristiset menetelmät Heuristiikkoja kapsäkkiongelmalle Kauppamatkustajan ongelma Lähimmän naapurin menetelmä Kertaus ja tenttivinkit Algoritmit

Lisätiedot

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

Suunnatut, etumerkilliset ja arvotetut graafit Sosiaalisten verkostojen analysoinnin näkökulmalla Suunnatut, etumerkilliset ja arvotetut graafit Sosiaalisten verkostojen analysoinnin näkökulmalla Hypermedian jatko-opintoseminaari 2008-2009 12.12.2008 Jaakko Salonen jaakko.salonen@tut.fi TTY / Hypermedialaboratorio

Lisätiedot

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero Alkioiden avaimet Usein tietoalkioille on mielekästä määrittää yksi tai useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero 80 op

Lisätiedot

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö Algoritmit 2 Luento 11 Ti 24.4.2018 Timo Männikkö Luento 11 Rajoitehaku Kapsäkkiongelma Kauppamatkustajan ongelma Paikallinen etsintä Lyhin virittävä puu Vaihtoalgoritmit Algoritmit 2 Kevät 2018 Luento

Lisätiedot

Algoritmit 1. Luento 4 Ke Timo Männikkö

Algoritmit 1. Luento 4 Ke Timo Männikkö Algoritmit 1 Luento 4 Ke 18.1.2017 Timo Männikkö Luento 4 Tietorakenteet Pino Pinon toteutus Jono Jonon toteutus Lista Listaoperaatiot Algoritmit 1 Kevät 2017 Luento 4 Ke 18.1.2017 2/29 Pino Pino, stack,

Lisätiedot

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

Königsbergin sillat. Königsberg 1700-luvulla. Leonhard Euler ( ) Königsbergin sillat 1700-luvun Königsbergin (nykyisen Kaliningradin) läpi virtasi joki, jonka ylitti seitsemän siltaa. Sanotaan, että kaupungin asukkaat yrittivät löytää reittiä, joka lähtisi heidän kotoaan,

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PUURAKENTEET, BINÄÄRIPUU, TASAPAINOTETUT PUUT MIKÄ ON PUUTIETORAKENNE? Esim. Viereinen kuva esittää erästä puuta. Tietojenkäsittelytieteessä puut kasvavat alaspäin.

Lisätiedot

8. Lajittelu, joukot ja valinta

8. Lajittelu, joukot ja valinta 8. Lajittelu, joukot ja valinta Yksi tietojenkäsittelyn klassisista tehtävistä on lajittelu (järjestäminen) (sorting) jo mekaanisten tietojenkäsittelylaitteiden ajalta. Lajiteltua tietoa tarvitaan lukemattomissa

Lisätiedot

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

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia 58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, 10..2014, vastauksia 1. [9 pistettä] (a) Todistetaan 2n 2 + n + 5 = O(n 2 ): Kun n 1 on 2n 2 + n + 5 2n 2 + n 2 +5n 2 = 8n 2. Eli

Lisätiedot

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

58131 Tietorakenteet (kevät 2009) Harjoitus 11, ratkaisuja (Topi Musto) 811 Tietorakenteet (kevät 9) Harjoitus 11, ratkaisuja (Topi Musto) 1. Bellmanin-Fordin algoritmin alustusvaiheen jälkeen aloitussolmussa on arvo ja muissa solmuissa on arvo ääretön. Kunkin solmun arvo

Lisätiedot

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

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I. Vaihto-ominaisuudella on seuraava intuition kannalta keskeinen seuraus: Olkoot A I ja B I samankokoisia riippumattomia joukkoja: A = B = m jollain m > 0. Olkoon vielä n = m A B, jolloin A B = B A = n.

Lisätiedot

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

verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari Tehtävä 9 : 1 Merkitään kirjaimella G tehtäväpaperin kuvan vasemmanpuoleista verkkoa sekä kirjaimella H tehtäväpaperin kuvan oikeanpuoleista verkkoa. Kuvan perusteella voidaan havaita, että verkko G on

Lisätiedot

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina Hakupuut tässä luvussa tarkastelemme puita tiedon tallennusrakenteina hakupuun avulla voidaan toteuttaa kaikki joukko-tietotyypin operaatiot (myös succ ja pred) pahimman tapauksen aikavaativuus on tavallisella

Lisätiedot

Tieto- ja tallennusrakenteet

Tieto- ja tallennusrakenteet Tieto- ja tallennusrakenteet Sisältö Tyyppi, abstrakti tietotyyppi, abstraktin tietotyypin toteutus Tallennusrakenteet Taulukko Linkitetty rakenne Abstraktit tietotyypit Lista (Puu) (Viimeisellä viikolla)

Lisätiedot

Algoritmit 2. Luento 4 To Timo Männikkö

Algoritmit 2. Luento 4 To Timo Männikkö Algoritmit 2 Luento 4 To 21.3.2019 Timo Männikkö Luento 4 Hajautus Yhteentörmäysten käsittely Avoin osoitteenmuodostus Hajautusfunktiot Puurakenteet Solmujen läpikäynti Algoritmit 2 Kevät 2019 Luento 4

Lisätiedot

Algoritmit 2. Luento 6 Ke Timo Männikkö

Algoritmit 2. Luento 6 Ke Timo Männikkö Algoritmit 2 Luento 6 Ke 29.3.2017 Timo Männikkö Luento 6 B-puun operaatiot B-puun muunnelmia Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 2/31 B-puu

Lisätiedot

Diskreetit rakenteet

Diskreetit rakenteet Diskreetit rakenteet 811120P 5 op 7. Oulun yliopisto Tietojenkäsittelytieteiden laitos 2015 / 2016 Periodi 1 Mikä on verkko? verkko (eli graafi) koostuu solmuista ja väleistä, jotka yhdistävät solmuja

Lisätiedot

811312A Tietorakenteet ja algoritmit, 2014-2015, Harjoitus 7, ratkaisu

811312A Tietorakenteet ja algoritmit, 2014-2015, Harjoitus 7, ratkaisu 832A Tietorakenteet ja algoritmit, 204-205, Harjoitus 7, ratkaisu Hajota ja hallitse-menetelmä: Tehtävä 7.. Muodosta hajota ja hallitse-menetelmää käyttäen algoritmi TULOSTA_PUU_LASKEVA, joka tulostaa

Lisätiedot

Algoritmit 1. Luento 12 Ke Timo Männikkö

Algoritmit 1. Luento 12 Ke Timo Männikkö Algoritmit 1 Luento 12 Ke 15.2.2017 Timo Männikkö Luento 12 Pikalajittelu Pikalajittelun vaativuus Osittamisen tasapainoisuus Lajittelumenetelmien vaativuus Laskentalajittelu Lokerolajittelu Kantalukulajittelu

Lisätiedot

Johdatus verkkoteoriaan 4. luento

Johdatus verkkoteoriaan 4. luento Johdatus verkkoteoriaan 4. luento 28.11.17 Viikolla 46 läpikäydyt käsitteet Viikolla 47 läpikäydyt käsitteet Verkko eli graafi, tasoverkko, solmut, välit, alueet, suunnatut verkot, isomorfiset verkot,

Lisätiedot

Tarkennamme geneeristä painamiskorotusalgoritmia

Tarkennamme geneeristä painamiskorotusalgoritmia Korotus-eteen-algoritmi (relabel-to-front) Tarkennamme geneeristä painamiskorotusalgoritmia kiinnittämällä tarkasti, missä järjestyksessä Push- ja Raise-operaatioita suoritetaan. Algoritmin peruskomponentiksi

Lisätiedot

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö Algoritmit 1 Luento 10 Ke 11.2.2015 Timo Männikkö Luento 10 Algoritminen ongelman ratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Väliinsijoituslajittelu Valintalajittelu

Lisätiedot

T : Max-flow / min-cut -ongelmat

T : Max-flow / min-cut -ongelmat T-61.152: -ongelmat 4.3.2008 Sisältö 1 Määritelmät Esimerkki 2 Max-flow Graafin leikkaus Min-cut Max-flow:n ja min-cut:n yhteys 3 Perusajatus Pseudokoodi Tarkastelu 4 T-61.152: -ongelmat Virtausverkko

Lisätiedot

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

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta AVL-puut eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta pohjana jo esitetyt binäärihakupuiden operaatiot tasapainotus vie pahimmillaan lisäajan lisäys- ja

Lisätiedot

Algoritmit 1. Luento 12 Ti Timo Männikkö

Algoritmit 1. Luento 12 Ti Timo Männikkö Algoritmit 1 Luento 12 Ti 19.2.2019 Timo Männikkö Luento 12 Osittamisen tasapainoisuus Pikalajittelun vaativuus Lajittelumenetelmien vaativuus Laskentalajittelu Lokerolajittelu Kantalukulajittelu Algoritmit

Lisätiedot

Tietorakenteet, esimerkkivastauksia viikon 12 laskareihin

Tietorakenteet, esimerkkivastauksia viikon 12 laskareihin Tietorakenteet, esimerkkivastauksia viikon laskareiin (a) Oletetaan seuraavan kuvan mukainen verkko ja etsitään lyyimpiä polkuja solmusta Ensimmäiseksi käsitellään solmu B, jonka etäisyys on kolme Seuraavaksi

Lisätiedot

Malliratkaisut Demot

Malliratkaisut Demot Malliratkaisut Demot 4 3.4.017 Tehtävä 1 Tarkastellaan harjoituksen 1 nopeimman reitin ongelmaa ja etsitään sille lyhin virittävä puu käyttämällä kahta eri algoritmia. a) (Primin algoritmi) Lähtemällä

Lisätiedot

isomeerejä yhteensä yhdeksän kappaletta.

isomeerejä yhteensä yhdeksän kappaletta. Tehtävä 2 : 1 Esitetään aluksi eräitä havaintoja. Jokaisella n Z + symbolilla H (n) merkitään kaikkien niiden verkkojen joukkoa, jotka vastaavat jotakin tehtävänannon ehtojen mukaista alkaanin hiiliketjua

Lisätiedot

= 5! 2 2!3! = = 10. Edelleen tästä joukosta voidaan valita kolme särmää yhteensä = 10! 3 3!7! = = 120

= 5! 2 2!3! = = 10. Edelleen tästä joukosta voidaan valita kolme särmää yhteensä = 10! 3 3!7! = = 120 Tehtävä 1 : 1 Merkitään jatkossa kirjaimella H kaikkien solmujoukon V sellaisten verkkojen kokoelmaa, joissa on tasan kolme särmää. a) Jokainen verkko G H toteuttaa väitteen E(G) [V]. Toisaalta jokainen

Lisätiedot

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

Näytetään nyt relaatioon liittyvien ekvivalenssiluokkien olevan verkon G lohkojen särmäjoukkoja. Olkoon siis f verkon G jokin särmä. Tehtävä 6 : 1 Oletetaan ensin joukon X olevan sisältymisen suhteen minimaalinen solmut a ja b toisistaan erotteleva joukon V(G)\{a, b} osajoukko. Olkoon x joukon X alkio. Oletuksen nojalla joukko X\{x}

Lisätiedot

lähtokohta: kahden O(h) korkuisen keon yhdistäminen uudella juurella vie O(h) operaatiota vrt. RemoveMinElem() keossa

lähtokohta: kahden O(h) korkuisen keon yhdistäminen uudella juurella vie O(h) operaatiota vrt. RemoveMinElem() keossa Kekolajittelu Prioriteettijonolla toteutettu keko InsertItem ja RemoveMinElem: O(log(n)) Lajittelu prioriteettijonolla: PriorityQueueSort(lajiteltava sekvenssi S) alusta prioriteettijono P while S.IsEmpty()

Lisätiedot

Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti.

Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti. Joukon määritelmä Joukko on alkioidensa kokoelma. Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti. Näin ei tässä

Lisätiedot

Algoritmit 1. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 5 Ti Timo Männikkö Algoritmit 1 Luento 5 Ti 24.1.2017 Timo Männikkö Luento 5 Järjestetty lista Järjestetyn listan operaatiot Listan toteutus taulukolla Binäärihaku Binäärihaun vaativuus Algoritmit 1 Kevät 2017 Luento 5 Ti

Lisätiedot

Algoritmit 1. Luento 6 Ke Timo Männikkö

Algoritmit 1. Luento 6 Ke Timo Männikkö Algoritmit 1 Luento 6 Ke 25.1.2017 Timo Männikkö Luento 6 Järjestetty lista Listan toteutus dynaamisesti Linkitetyn listan operaatiot Vaihtoehtoisia listarakenteita Puurakenteet Binääripuu Järjestetty

Lisätiedot

8 Joukoista. 8.1 Määritelmiä

8 Joukoista. 8.1 Määritelmiä 1 8 Joukoista Joukko on alkoidensa kokoelma. Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukkooppi aksiomaattisesti. Näin ei tässä tehdä

Lisätiedot

Algoritmit 2. Luento 8 To Timo Männikkö

Algoritmit 2. Luento 8 To Timo Männikkö Algoritmit 2 Luento 8 To 4.4.2019 Timo Männikkö Luento 8 Algoritmien analysointi Algoritmien suunnittelu Rekursio Osittaminen Rekursioyhtälöt Rekursioyhtälön ratkaiseminen Master-lause Algoritmit 2 Kevät

Lisätiedot

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017

Lisätiedot

Ongelma 1: Ovatko kaikki tehtävät/ongelmat deterministisiä?

Ongelma 1: Ovatko kaikki tehtävät/ongelmat deterministisiä? Ongelma 1: Ovatko kaikki tehtävät/ongelmat deterministisiä? 2012-2013 Lasse Lensu 2 Ongelma 2: Milloin ongelmat muuttuvat oikeasti hankaliksi? 2012-2013 Lasse Lensu 3 Ongelma 3: Miten hankalia ongelmia

Lisätiedot

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

Induktiotodistus: Tapaus n = 0 selvä; ol. väite pätee kun n < m. Väite: T (n) (a + b)n 2 + a. Induktiotodistus: Tapaus n = 0 selvä; ol. väite pätee kun n < m. Huomaa että funktion x x 2 + (m 1 x) 2 kuvaaja on ylöspäin aukeava paraabeli, joten funktio saavuttaa suurimman

Lisätiedot