Lyhimmän polun etsintä verkossa muistihierarkiatehokkaasti

Koko: px
Aloita esitys sivulta:

Download "Lyhimmän polun etsintä verkossa muistihierarkiatehokkaasti"

Transkriptio

1 Lyhimmän polun etsintä verkossa muistihierarkiatehokkaasti Teppo Niinimäki Helsinki Seminaari: Muistihierarkia-algoritmit HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

2 HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta Fakultet Faculty Laitos Institution Department Matemaattis-luonnontieteellinen tiedekunta Tekijä Författare Author Teppo Niinimäki Työn nimi Arbetets titel Title Tietojenkäsittelytieteen laitos Lyhimmän polun etsintä verkossa muistihierarkiatehokkaasti Oppiaine Läroämne Subject Tietojenkäsittelytiede Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages Seminaariraportti sivua Tiivistelmä Referat Abstract Tässä raportissa tutustutaan verkon yksittäisestä solmusta lähtevän lyhimmän polun (SSSP) etsintään muistihierarkiassa. Tähän liittyen esitellään kaksi prioriteettijonon toteutusta: turnauspuut ja ämpärikeko. Näitä käytetään lyhimmän polun etsintään. Lopuksi luodaan katsaus algoritmeilla saavutettaviin käytännön tuloksiin. ACM Computing Classification System (CCS): F.2.2 [Analysis of Algorithms and Problem Complexity]: Nonnumerical Algorithms and Problems Sorting and searching G.2.2 [Discrete Mathematics]: Graph Theory Path and circuit problems Avainsanat Nyckelord Keywords muistihierarkia-algoritmit, lyhimmän polun etsintä Säilytyspaikka Förvaringsställe Where deposited Muita tietoja övriga uppgifter Additional information

3 Sisältö ii 1 Johdanto 1 2 Lyhin polku yksitasoisessa muistissa 2 3 Lyhin polku muistihierarkiassa 2 4 Turnauspuut Puun rakenne Puun operaatiot Lyhimmän reitin etsintä turnauspuun avulla Ämpärikeko Ämpärikeon rakenne Ämpärikeon operaatiot Lyhimmän reitin etsintä ämpärikeon avulla Käytännön koetuloksia 10 7 Yhteenveto 11 Lähteet 11

4 1 Johdanto 1 Lyhimmän polun etsintä on eräs keskeisimpiä verkkoihin liittyviä ongelmia. Ilmeisiä käyttökohteita ovat reittien etsiminen fyysisten sijaintien välillä esimerkiksi erilaisissa internetin reitinhakupalveluissa tai GPS-navigointilaitteissa. Muita sovelluskohteita löytyy muun muassa tietoliikenteestä ja robotiikasta. Lyhimmän polun etsintään voidaan käyttää myös osana monien muiden kombinatoristen ongelmien ratkasua. Olkoon G = (V, E) verkko, jossa on V solmua ja E kaarta, ja olkoon c(u, v) kunkin kaaren (u, v) E paino. Jos kaari ei kuulu verkkoon, sen paino on ääretön. Tässä ja jatkossa käytetään merkintöjä V ja E tarkoittamaan sekä solmujen ja kaarten joukkoja, että näiden joukkojen kokoja. Kahden solmun välisen polun pituus on polulle kuuluvien kaarten painojen summa. Yksittäisen alkusolmun lyhimmän polun ongelmassa (SSSP) päämääränä on löytää lyhimmät polut ennalta valitusta lähtösolmusta s verkon kaikkiin saavutettavissa oleviin solmuihin. Solmun v etäisyys solmusta s on lyhimmän näiden välisen polun pituus. Käytetään tästä etäisyydestä merkintää d(v). Usein oletetaan lisäksi, että kaarten painot ovat ei-negatiivisia. Näin tehdään myös tässä raportissa käsiteltävissä algoritmeissa. Lyhimmän polun ongelma on hyvin tunnettu perinteisessä yksitasoisen muistin mallissa (RAM-malli). Nykyaikainen tietokone sisältää kuitenkin useita eri kokoisia ja nopeuksisia muistitasoja. Koska muistitasojen väliset tiedonsiirrot vievät usein suuren osan algoritmin kuluttamasta ajasta, toimivat perinteiset algoritmit usein tehottomasti muistihierarkiassa. Ongelman ratkaisemiseksi on kehitetty useita monitasoisessa muistissa tehokkaasti toimivia algoritmeja [KS96, CR04, BFMZ04]. Tässä raportissa esitellään kaksi tällaista algoritmia ja tutustutaan saatuihin käytännön koetuloksiin. Luvussa 2 käydään kertauksenomaisesti läpi lyhimmän polun etsintä yksitasoisessa muistissa. Kolmannessa luvussa tutustutaan kaksitasoiseen muistiin ja sen mukanaan tuomiin ongelmiin. Luvuissa 4 ja 5 esitellään kaksi muistihierarkiassa tehokkaasti toimivaa algoritmia lyhimmän polun ongelman ratkaisemiseen. Lopuksi kuudennessa luvussa luodaan katsaus testeissä saavutettuihin käytännön tuloksiin.

5 2 2 Lyhin polku yksitasoisessa muistissa Perinteisessä yksitasoisessa muistimallissa lyhimmän polun etsintä määrätystä lähtösolmusta s V suunnatun verkon muihin solmuihin onnistuu tunnetusti ajassa O(E + V log V ) Dijkstran algoritmilla [CLRS01]. Tässä luvussa kerrataan lyhyesti Dijkstran algoritmin toimintaperiaate. Dijkstran algoritmissa selvitetään lyhin polku verkon kaikkiin solmuihin V solmu kerrallaan. Käsittelemättömistä solmuista pidetään kirjaa minimiprioriteettijonossa Q. Solmun u prioriteetti on lyhimmän löydetyn siihen johtavan polun pituus δ u. Algoritmin edetessä etäisyyttä δ u päivitetään aina kun solmuu u löytyy lyhyempi reitti. Kullekin solmu-etäisyys-parille (u, δ u ) Q pätee siis δ u d(u), missä d(u) on solmun u etäisyys solmusta s. Aluksi kaikki verkon solmut lisätään prioriteettijonoon Q ja niiden etäisyydet asetetaan äärettömiksi. Tämän jälkeen lähtösolmun etäisyydeksi δ s asetetaan 0. Kullakin kierroksella algoritmi poistaa joukosta Q alkion (u, δ u ), jolle δ u on pienin. Voidaan osoittaa, että tälle pätee d(u) = δ u. Lyhimmän polun pituus solmuun u on siis saatu selville. Tämän jälkeen algoritmi päivittää lyhintä löydettyä etäisyyttä solmun u kuhunkin naapuriin v Q: Jos d(u) + c(u, v) < δ u (eli jos reitti solmun u kautta solmuun v on lyhyempi kuin aiemmin lyhin löydetty) päivitetään etäisyys δ u := d(u) + c(u, v). Kun algoritmia on suoritettu V kierrosta, on kaikki solmut poistettu prioriteettijonosta Q ja lyhimmät etäisyydet kaikkiin solmuihin on siis saatu selville. Aikaa Dijkstran algoritmissa kuluu erityisesti prioriteettijonon käsittelyyn. Prioriteettijono täytyy tukea operaatioita Insert (alkion lisääminen), Delete-Min (pienimmän alkion poiminta) ja Decrease-Key (arvoon liittyvän prioriteetin/avaimen päivittäminen). Monet kekorakenteet sopivat tähän. Jos prioriteetijono toteutetaan binäärikekona, on algoritmin aikavaativuus O((E +V ) log V ). Fibonacci-keolla päästään aiemmin mainittuun aikavaativuuteen O(E + V log V ) [CLRS01]. 3 Lyhin polku muistihierarkiassa Muistihiearakioiden mallintamiseen ja niissä suoritettavien algoritmien analysoimiseen käytetyistä malleista ehkä yleisin on Aggarwalin ja Vitterin [AV88] esittelemä kaksikerroksisen muistin malli (I/O-malli, EM-malli). Mallissa muistihierarkia koostuu kahdesta kerroksesta: nopeasta ja pienestä muistista sekä hitaasta ja suuresta

6 3 muistista. Nopean muistin koko on M. Hidas muisti voidaan ajatella tarpeeksi suureksi algoritmin tarpeisiin samaan tapaan kuin perinteisessä yksitasoisessa mallissa. Jotta muistin sisältämää tietoa voitaisiin käsitellä, täytyy sen olla nopeassa muistissa. Muistitasojen välillä tietoa siirretään lohkoina, joiden koko on B. Alkuperäisessä Aggarwalin ja Vitterin mallissa algoritmi huolehtii itse muistisiirroista. Toisaalta voidaan myös Frigon ja kumppaneiden [FLPR99] tavoin olettaa, että laitteisto suorittaa siirrot automaattisesti ja optimaalisesti. Jälkimmäisessä tapauksessa on mahdollista kehittää muistitasoriippumattomia (cache-oblivious) algoritmeja, jotka toimivat hyvin ilman tietoa parametreista M ja B. Lyhimmän polun etsintään liittyy muistihierarkiassa muutama ongelma [KM03]: Kun solmun naapurit halutaan käydä läpi, joudutaan vieruslistan hakemiseksi yleensä suorittamaan vähintään yksi lohkosiirto. Jos verkko on harva ja solmujen vieruslistat ovat tarpeeksi lyhyitä tulee tässä usein tehtyä paljon turhaa työtä. Toinen pääasiallinen ongelma on Decrease-Key-operaation puute useimmista muistihierarkiassa tehokkaasti toimivista prioriteettijonototeutuksista. Ensimmäiseen ongelmaan ei ilmeisesti ole löydetty yleispätevää ratkaisua [KM03]. Yhden vieruslistan läpikäyminen vaatii Θ(1 + k/b) lohkonsiirtoa, missä k on vieruslistan koko. Näin ollen kaikkien vieruslistojen läpikäynti kertaalleen kuluttaa Θ(V + E/B) siirtoa. Esitettävät algoritmit keskittyvätkin toisen ongelman ratkaisemiseen, eli sopivan prioriteettijonon toteuttamiseen. 4 Turnauspuut Turnauspuu (tournament tree) on täydellinen binääripuu, jonka oikeanpuolimmaisista lehdistä osa saattaa puuttua. Turnauspuun, jonka korkeus on k voidaan ajatella esittävän N 2 k pelaajan välisten pudotuspelien tuloksia: Kukin lehti vastaa yhtä pelaajaa ja loput solmut otteluiden voittajia. Turnauspuun koko N on kiinteä ja se täytyy olla tiedossa kun turnauspuu luodaan. Sopivilla operaatioilla varustettua turnauspuuta voidaan käyttää prioriteettijonona. Tässä osiossa esitellään Kumarin ja Schwaben [KS96] kehittämä turnauspuun muunnelma (I/O-efficient tournament tree), joka toimii tehokkaasti kaksitasoisessa muistihierarkiassa. Käytetään siitä tästä lähin merkintää MHTP (muistihierarkiatehokas turnauspuu). Tämän jälkeen näytetään, miten MHTP:ta voidaan käyttää tehokkaaseen lyhimmän polun etsintään suuntaamattomassa verkossa, jossa kaarten painot

7 4 arvo avain Nopea muisti viesti Hidas muisti 1 M' M'+1 2M' N Kuva 1: Muistihierarkiatehokkaan turnauspuun MHTP rakenne. Arvojen ja avaimien suuruuksia on merkitty eri väreillä; mitä vaaleampi väri, sitä pienempi arvo/avain. (Perustuu Katrielin ja Meyerin [KM03] kuvaan 4.3.) ovat ei-negatiivisia. Esittely perustuu pääosin Katrielin ja Meyerin [KM03] näkemykseen puusta ja algoritmista. 4.1 Puun rakenne MHTP:ssä kuhunkin solmuun säilötään normaalista turnauspuusta poiketen useita alkioita. Kukin alkio on pari (x, k), joka koostuu yksilöivästä arvosta x {1,..., N} ja avaimesta k. Tässä N on siis puuhun tallennettavien alkioiden määrä. Avain esittää alkion prioriteettiä: mitä pienempi avain, sitä korkeammalle alkio nousee puussa. Jos avain k on ääretön, ei vastaava arvo x kuulu turnauspuun esittämään arvojoukkoon. Itse tietorakenne siis sitältää aina täsmälleen N alkiota, yhden kutankin arvoa x {1,..., N} kohti. Rakenteen esittämä looginen prioriteettijono sen sijaan sisältää vain ne arvot, joita vastaava avain on äärellinen. Kukin alkio sijaitsee vain yhdessä puun solmussa.

8 5 Olkoon M = r M jollain ennalta määrätyllä positiivisella vakiolla r < 1 ja N säilöttävien alkioiden määrä. Tällöin MHTP sisältää N/M lehtisolmua ja puun korkeus on siis O(log 2 (N/M)). Alkiot jaetaan tasaisesti lehtien kesken: alkiot väliltä (i 1) M i M liittyvät i. lehteen. Sanotaan, että lehti kattaa siihen liittyvät alkiot. Vastaavasti kukin sisäsolmu kattaa kaikki sen lapsien kattamat alkiot. Jokainen sisäsolmu sisältää vähintään M /2 ja korkeintaan M alkiota. Solmun sisältämät x alkiota ovat sen virittämän alipuun sisältämistä alkioista x pienintä. Lisäksi jokainen sisäsolmu sisältää M -alkioisen viestipuskurin. Vakio r ja siitä riippuva M on valittu siten, että juurisolmu saadaan pidettyä nopeassa muistissa. Kuvassa 1 on havainnollistettu MHTP:n rakennetta. 4.2 Puun operaatiot MHTP tukee seuraavia operaatioita: Delete-Min palauttaa pienimmän alkion ja poistaa sen puusta. Delete(x) poistaa alkion (x, k) puusta. Update(x, k ) korvaa alkion (x, k) alkiolla (x, k ), jos k < k. Jos puussa ei ole arvoa x, lisätään alkio (x, k ). Operaatioiden kutsuminen lähettää viestejä, jotka kulkevat puussa alapäin. Viestit voivat solmuun saapuessaan lisätä, poistaa tai muokata jotain solmun sisältämää alkiota. Jos viesti halutaan lähettää edelleen eteenpäin, se varastoidaan solmun viestipuskuriin. Vasta kun viestipuskuri täyttyy, sen sisältämät viestit lähtetetään alaspäin puussa. Operaatio Delete-Min poistaa pienimmän avaimen sisältävän alkion (x, k) juurisolmusta. Jos juurisolmussa ei ole tarpeeksi alkioita, täytetään se rekursiivisesti sen lapsista. Tämän jälkeen lähetetään alkion (x, ) lisäysviesti kohti arvoon x liittyvää lehtisolmua. Alkio lisätään ensimmäiseen viestin kohtaamaan solmuun, jossa on tilaa ja jonka jälkeläiset ovat joko tyhjiä tai sisältävät äärettömän avaimen omaavia alkioita. Operaatiossa Delete(x) lähetetään poistoviesti kohti arvoon x liittyvää solmua. Kun alkion (x, k) sisältävä solmu kohdataan, poistetaan alkio, muunnetaan viesti alkion (x, ) lisäysviestiksi ja toimitaan kuten edellä.

9 6 Operaatio Update(x, k ) lähettää päivitysviestin, joka etenee kunnes se kohtaa alkion (x, k) tai solmun, joka sisältää alkioita suuremmalla avaimella kuin k. Ensimmäisessä tapauksessa löydetty alkio (x, k) korvataan solmun sisällä alkiolla (x, k ), jos k < k. Jälkimmäisessä tapauksessa lisätään kohdattuun solmuun alkio (x, k) ja viesti muunnetaan alkion (x, k ) poistoviestiksi, joka lähetetään eteenpäin. Lisäksi jos alkiota lisättäessä solmun kapasiteetti ylittyy, siirretään osa solmun alkioista rekursiivisesti puussa alaspäin. Useiden alkioden ja viestien puskurointi samaan solmuun aiheuttaa sen, että päivitykset etenevät puussa laiskasti. Tämä edistää algoritmin paikallisuutta ja siten saa sen toimimaan hyvin kaksitasoisessa muistissa. Voidaan osoittaa, että mikä tahansa edellä edellä mainituista operaatioista koostuva z operaation jono voidaan suorittaa O(z/B log 2 (N/B)) lohkonsiirrolla. Operaatioiden tasoitettu vaativuus on siis O(1/B log 2 (N/B)). 4.3 Lyhimmän reitin etsintä turnauspuun avulla Muistihierarkiassa tehokkaasti toimivan algoritmin muodostamiseksi Dijkstran algoritmin prioriteettijonon Q tietorakenne korvataan esitellyllä MHTP:llä. Aluksi puu alustetaan sisältämään alkiot (1, ), (2, ),..., (V, ) siten, että kukin sisäsolmu sisältää vähintään M /2 alkiota. Tämä jälkeen lähtösolmua s vastaavan alkion avain päivitetetään nollaksi Update(s, 0)-operaatiolla. Algoritmissa suoritetaan V kierrosta. Kullakin kierroksella poimitaan jäljellä olevista solmuista aloitussolmua lähinnä oleva solmu u operaatiolla Delete-Min. Toisin kuin Dijkstran algoritmissa, jokaisen sen naapurin v etäisyys päivitetään operaatiolla Update(v, d(u) + c(u, v)) operaation Decrease-Key sijaan. Algoritmissa on kuitenkin ongelma: Jos d(u) < d(v), niin solmu u poistetaan ennen v:tä ja sen avaimeksi asetetaan tällöin. Jos solmujen u ja v välillä on kaari, päivitetään kuitenkin solmun v poiston yhteydessä solmun u avaimeksi d(v)+c(v, u), jolloin se palautuu joukkoon Q. Tämä ongelma kieretään pitämällä yllä toista prioriteettijonoa Q, joka tukee alkioiden lisäämistä ja pienimmän alkion poimimista tasoitetusti O(1/B log 2 (N/B)) lohkonsiirrolla. Tähän tai sen alle päästään useilla toteutuksilla, esimerkiksi Kumarin ja Schwaben esittelemällä kekototeutuksella [KS96]. Algoritmin alussa Q alustetaan tyhjäksi. Algoritmin edetessä jokaisen Update(v, d(u)+ c(u, v))-operaation yhteydessä lisätään alkio (u, d(u) + c(u, v)) myös joukkoon Q.

10 7 Jokaisen iteraation alussa verrataan joukon Q pienimmän alkion (u, k ) avainta k joukon Q pienimmän alkion (u, k) avaimeen k. Jos k k, poistetaan (u, k) joukosta Q ja toimitaan aiemmin kuvatulla tavalla. Jos taas k > k, poistetaan (u, k ) joukosta Q. Tällöin täytyy olla d(u ) < d(v) d(u) + c(u, v) = k, joten solmu u on jo käsitelty aiemmin. Voidaan siis suorittaa Delete(u ), jolloin arvon u mahdollinen uudelleenlisäys (u, d(v) + c(v, u)) joukkoon Q saadaan kumottua. Koska d(u) + c(u, v) < d(v) + c(v, u), ehditään kumoaminen aina suorittaa, ennen kuin u poimittaisiin joukosta Q uudelleen. Kuten aiemmin todettiin, vaatii kaikkien verkon solmujen vieruslistojen läpikäynti Θ(V + E/B) lohkosiirtoa. Edellä mainittujen rakenteiden Q ja Q käsittelyyn kuluu O(E/B log 2 (E/B)) lokonsiirtoa, joten algoritmin kokonaisvaativuus on luokkaa O(V + E/B log 2 (E/B)). Jotta tähän päästäisiin, täytyy parametri M osata valita oikein. Tätä varten nopean muistin määrä M pitää olla tiedossa. 5 Ämpärikeko Edellä esitelty algoritmi vaatii, että nopean muistin koko on tiedossa. Tämä on ongelmallista, sillä muistihierarkian parametreja B ja M ei välttämättä tiedetä. Rajoitus johtuu turnauspuusta. Tässä osiossa tutustutaan Brodalin ja kumppaneiden [BFMZ04] kehittämään ämpärikekoon (bucket heap), joka on MHTP:tä vastaava muistitasoriippumaton prioriteettijonototeutus. Myös Chowdhury ja Ramachandran [CR04] ovat kehittäneen vastaavan rakenteen, puskurikeon (buffer heap), joka perustuu samaan ideaan. Ämpärikekoa (tai vastaavasti puskurikekoa) käyttämällä edellä esitetty lyhimmän polun etsintäalgoritmi on mahdollista muuttaa muistitasoriippumattomaksi. 5.1 Ämpärikeon rakenne Kuten turnauspuuhun, myös ämpärikekoon varastoidaan arvo-avain-pareja. Tallennettavien arvojen suuruutta ei ole kuitenkaan rajoitettu samalla tavalla; riittää että ne ovat yksilöiviä. Olkoon N kullakin hetkellä tallennettujen alkioiden määrä. Ämpärikeko koostuu ämpäreistä B 1, B 2,..., B q ja viestipuskureista S 1, S 2,..., S q+1. Parametri q vaihtelee, mutta on aina korkeintaan log 4 N. Kuhunkin ämpäriin B i mahtuu 2 2i alkiota ja vastaavasti kuhunkin viestipuskuriin S i mahtuu 2 2i 1 viestiä. Koko siis aina nelinkertaistuu kun i kasvaa yhdellä. Prioriteettijonon kullakin hetkel-

11 8 (2) arvo avain (4) viesti (8) (16) Kuva 2: Ämpärikeon rakenne. Arvojen ja avaimien suuruuksia on merkitty eri väreillä; mitä vaaleampi väri, sitä pienempi avain. lä sisältämät alkiot säilötään ämpäreihin siten, että jos B i ja B j ovat kaksi ämpäriä ja i < j niin mille tahansa alkioille (x, k x ) B i ja (y, k y ) B j pätee k x k y. Toisin kuin turnauspuun tapauksessa, ämpärikeko sisältää kullakin hetkellä fyysisesti samat alkiot kuin sen esittämä looginen prioriteettijono. Ämpäreiden määrä vaihtelee dynaamisesti tallennettujen alkioiden määrän mukaan. Keon maksimikokoa ei siis tarvitse päättää ennalta kuten turnauspuulla. Tällä ei tosin ole merkitystä lyhimmän polun etsimisessä. Kuvassa 2 on havainnollistettu ämpärikeon rakennetta. Kullekin ämpärille ja viestipuskurille varataan sen kapasiteettiin nähden kaksinkertainen määrä muistia väliaikaisten ylivuotojen sallimiseksi. Ämpärit ja puskurit tallennetaan muistiin peräkkäin järjestyksessä S 1, B 1, S 2, B 2,..., S q, B q, S q Ämpärikeon operaatiot Ämpärikeko tukee samoja operaatioita kuin aiemmin esitelty turnauspuukin: Delete-Min poistaa ja palauttaa pienimmän alkion, Delete(x) poistaa alkion x ja Update(x, k) pienentää alkion x avainta tarvittaessa tai lisää x:n kekoon jos se ei ole siellä ennestään. Kuten turnauspuussa, operaatiot toteutetaan rakenteessa alapäin etenevien viestien avulla. Lisäksi käytetään kahta apuoperaatiota:

12 9 Empty(S i ) tyhjentää viestipuskurin S i toteuttamalla viestien vaatimat toimenpiteet vastaavan ämpärin B i alkioihin ja lähettämällä jäljelle jäävät viestit eteenpäin puskuriin S i+1. Fill(B i ) varmistaa että ämpäri B i on täynnä ja täyttää sen tarvittaessa. Näiden avulla muut operaatiot on helppo toteuttaa. Operaatio Delete-Min varmistaa, että ensimmäinen ämpäri on täynnä kutsumalla Fill(B 1 ). Tämän jälkeen se poistaa ämpärin pienimmän alkion ja palauttaa sen. Operaatiot Delete(x) ja Update(x, k) lisäävät vastaavan poisto- tai päivitysviestin viestipuskuriin S 1 ja kutsuvat tämän jälkeen operaatiota Empty(S 1 ). Päivitysviesti ja poistoviesti toimivat pääosin kuten turnauspuussakin: Päivitysviesti alkiolle (x, k) etenee, kunnes se kohtaa päivitettävän alkion (x, k ) tai päätyy puskuriin, jota vastaava ämpäri sisältää suurempia alkoita. Ensimmäisessä tapauksessa alkion avain päivitetään tarvittaessa, ja toisessa tapauksessa alkio (x, k) lisätään ämpäriin ja viesti muutetaan alkion x poistoviestiksi. Poistoviesti etenee, kunnes se kohtaa poistettavan alkion. Tämän jälkeen kohdattu alkio poistetaan ämpäristä. Lisäksi käytetään vielä kolmatta viestityyppiä. Alkion (x, k) työntöviestiä käytetään puskemaan alkioita yhtä pykälää alemmalle tasolle. Alemmalla tasolla alkio lisätään tason ämpäriin ja työntöviesti merkitään käsitellyksi. Pääasiallisen työn tekevät kaksi apuoperaatiota. Operaatio Empty(S i ) käy viestipuskurin S i viestit läpi ja suorittaa niiden vaatimat toimenpiteet. Kaikki jäljelle jääneet viestit siirretään seuraavalle tasolle puskuriin S i+1, jolloin S i tyhjenee. Jos ämpärin B i alkioiden määrä ylitti sen kapasiteetin, lähetetään ylijäämän verran suurimpia alkioita alemmalle tasolle lisäämällä vastaavat työntöviestit seuraavan tason viestipuskuriin S i+1. Jos lisäksi S i+1 täyttyi yli kapasiteettinsa, kutsutaan sille rekursiivisesti Empty(S i+1 ). Tarvittaessa tasojen määrää q kasvatetaan yhdellä. Operaatio Fill(B i ) tyhjentää aluksi vastaavan viestipuskurin kutsumalla Empty(S i ). Jos tämän jälkeen pätee B i+1 < 2 2i eli jos B i+1 sisältää alkioita alle neljäsosan kapasiteetistaan, kutsutaan rekursiivisesti operaatiota Fill(B i+1 ). Lopuksi täytetään tyhjä tila ämpärissä B i seuraavan tason B i+1 pienimmillä alkioilla. Lisäksi tasojen määrää q pienennetään, mikäli ylimmät tasot tyhjenivät kokonaan. Kuten turnauspuun tapauksessa, operaatiot suoritetaan ämpärikeossa laiskasti, jolloin se toimii hyvin muistihierarkiassa. Kaikkien operaatioiden Delete-Min, Delete ja Update tasoitettu lohkonsiirtojen määrä on O(1/B log 2 (N/B)). Tämä on sama kuin esitellyllä turnauspuulla. Ämpärikekoa varten ei kuitenkaan tarvitse tietää

13 muistihierarkian parametreja M tai B, jolloin sama toteutus toimii optimaalisesti parametreista riippumatta Lyhimmän reitin etsintä ämpärikeon avulla Lyhimmän polun etsintä on helppo toteuttaa samaan tapaan kuin turnauspuun avulla. Pääasiallisena prioriteettijonona Q käytetään turnauspuun sijaan ämpärikekoa. Lisäksi apuprioriteettijonona Q täytyy käyttää jotain muistitasoriippumatonta kekototeutusta. Tähän kelpaa esimerkiksi ämpärikeko itsessään tai vaikkapa Agren ja kumppaneiden [ABD + 07] kehittämä toteutus. Tuloksena saadaan aiemmin esitellyn algoritmin kanssa samalla lohkonsiirtojen määrällä O(V + E/B log 2 (E/B)) toimiva algoritmi. Erona aikaisempaan uusi algoritmi toimii optimaalisesti vaikka muistihierarkian parametreja ei olisikaan tiedossa. 6 Käytännön koetuloksia Lyhimmän reitin etsinnästä muistihierarkiassa on olemassa joitakin koetuloksia. Sach ja Clifford [SC08] ovat verranneet perinteisen binäärikekoa käyttävän Dijkstran algoritmin, ämpärikekoa käyttävän algoritmin sekä suppilokekoa käyttävän algoritmin tehokkuutta käytännössä. Brodalin ja Fagerbergin [BF02] esittelemä suppilokeko ei tue Decrease-Key tai Update-operaatioita, joten avaimen päivityksen sijaan täytyy kekoon aina lisätä uusi alkio Insert-operaatiolla. Keosta jo poistetuista arvoista pidettiin testissä kirjaa bittivektorissa, jotta niiden käsittely moneen kertaan osattaisiin välttää: Kun arvo poimitaan ensimmäisen kerran keosta, se merkitään käytetyksi vaihtamalla bittivektorissa vastaavan bitin arvoa. Testejä suoritettiin sekä keinotekoisilla että todellisilla verkoilla. Nopean muistin koko oli rajoitettu 32:een megatavuun. Pienillä verkoilla binäärikekoa käyttävä algoritmi oli nopein testatuista. Kun verkon kokoa kasvatettiin miljooniin solmuihin, ohittivat ämpärikekoa ja suppilokekoa käyttävät algoritmit selvästi perinteisen Dikstran algoritmin. Näistä kahdesta suppilokekoa käyttävä algoritmi toimi erityisesti harvoissa verkoissa hieman tehokkaammin kuin ämpärikekoa käyttävä. Myös Chen ja kumppanit [CAR + 07] ovat vertailleet erilaisia lyhimmän polun hakualgoritmeja muistihierarkiassa. Heidänkin testeissään muistihierarkiassa tehokkaasti toimimaan suunnitellut algoritmit suoriutuivat yleisesti paremmin kuin perinteiset algoritmit.

14 7 Yhteenveto 11 Lyhimmän polun etsintä on yleinen verkkoihin liittyvä ongelma. Tässä raportissa esiteltiin kaksi erilaista muistihierarkiassa tehokkaasti toimivaa Dijkstran algoritmin muunnelmaa. Ensimmäinen perustuu muistihierarkiatehokkaaseen turnauspuuhun ja vaatii, että nopean muistin koko on tiedossa. Toinen käyttää ämpärikekoa ja on muistitasoriippumaton, eikä siis tarvitse parametreja toimiakseen optimaalisesti. Kummatkin esitellyt algoritmit suorittavat O(V + E/B log 2 (E/B)) lohkonsiirtoa. Testeissä on lisäksi osoitettu, että teoreettisesti parempien aikavaatimusten lisäksi muistihierarkiaan optioiduilla algoritmeilla voidaan saavuttaa merkittävää nopeusetua myös käytännössä. Käsitellyt algoritmit toimivat kaikissa suuntaamattomissa verkoissa, joissa kaarten painot eivät ole negatiivisia. Erilaisiin erikoistapauksiin on myös olemassa useita menetelmiä. Esimerkiksi tapauksiin, joissa kaarien painot ovat rajoitettuja, on kehitetty algoritmeja [MZ03, ALZ07]. Myös tasoverkkoihin erikoistuneita algoritmeja ja tietorakenteita on esitelty [JZ05, AT05]. Lähteet ABD + 07 ALZ07 AT05 AV88 Arge, L., Bender, M. A., Demaine, E. D., Holland-Minkley, B. ja Ian Munro, J., An optimal cache-oblivious priority queue and its application to graph algorithms. SIAM Journal of Computing, 36,6(2007), sivut Allulli, L., Lichodzijewski, P. ja Zeh, N., A faster cache-oblivious shortest-path algorithm for undirected graphs with bounded edge lengths. SODA 07: Proceedings of the eighteenth annual ACM-SIAM symposium on Discrete algorithms. Society for Industrial and Applied Mathematics, 2007, sivut Arge, L. ja Toma, L., External data structures for shortest path queries on planar digraphs. Algorithms and Computation: 16th International Symposium. Springer, 2005, sivut Aggarwal, A. ja Vitter, J. S., The input/output complexity of sorting and related problems. Communications of the ACM, 31,9(1988), sivut

15 12 BF02 BFMZ04 CAR + 07 CLRS01 CR04 FLPR99 Brodal, G. S. ja Fagerberg, R., Funnel heap - a cache oblivious priority queue. ISAAC 02: Proceedings of the 13th International Symposium on Algorithms and Computation. Springer-Verlag, 2002, sivut Brodal, G. S., Fagerberg, R., Meyer, U. ja Zeh, N., Cache-oblivious data structures and algorithms for undirected breadth-first search and shortest paths. Proceedings of the 9th Scandinavian Workshop on Algorithm Theory. Springer, 2004, sivut Chen, M., Alam, R., Ramach, C. V., Lan, D. ja Tong, R. L., Priority queues and dijkstra s algorithm. Tekninen raportti, The University of Texas at Austin, Cormen, T. H., Leiserson, C. E., Rivest, R. L. ja Stein, C. Introduction to Algorithms, luku 24.3: Dijkstra s algorithmy, sivut MIT Press and McGraw-Hill, toinen painos, Chowdhury, R. A. ja Ramachandran, V., Cache-oblivious shortest paths in graphs using buffer heap. SPAA 04: Proceedings of the sixteenth annual ACM symposium on Parallelism in algorithms and architectures. ACM, 2004, sivut Frigo, M., Leiserson, C. E., Prokop, H. ja Ramachandran, S., Cacheoblivious algorithms. FOCS 99: Proceedings of the 40th Annual Symposium on Foundations of Computer Science. IEEE Computer Society, 1999, sivut JZ05 Jampala, H. ja Zeh, N., Cache-oblivious planar shortest paths. Automata, Languages and Programming: 32nd International Colloquium. Springer, 2005, sivut KM03 KS96 Katriel, I. ja Meyer, U. Algorithms for Memory Hierarchies, luku 4. Elementary Graph Algorithms in External Memory, sivut Springer, Kumar, V. ja Schwabe, E. J., Improved algorithms and data structures for solving graph problems in external memory. Proceedings of the 8th IEEE Symposium on Parallel and Distributed Processing. IEEE Computer Society, 1996, sivut

16 13 MZ03 Pag03 SC08 Meyer, U. ja Zeh, N., I/o-efficient undirected shortest paths. Algorithms - ESA Springer, 2003, sivut Pagh, R. Algorithms for Memory Hierarchies, luku 2. Basic External Memory Data Structures, sivut Springer, Sach, B. ja Clifford, R., An empirical study of cache-oblivious priority queues and their application to the shortest path problem, arxiv.org/pdf/ , 2008.

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

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 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

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

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

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

arvostelija OSDA ja UDDI palveluhakemistoina.

arvostelija OSDA ja UDDI palveluhakemistoina. Hyväksymispäivä Arvosana arvostelija OSDA ja UDDI palveluhakemistoina. HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta/Osasto Fakultet/Sektion Faculty/Section Laitos Institution

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

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

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

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

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö Algoritmit 2 Luento 3 Ti 21.3.2017 Timo Männikkö Luento 3 Järjestäminen eli lajittelu Kekorakenne Kekolajittelu Hajautus Yhteentörmäysten käsittely Ketjutus Algoritmit 2 Kevät 2017 Luento 3 Ti 21.3.2017

Lisätiedot

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö Algoritmit 2 Luento 3 Ti 20.3.2018 Timo Männikkö Luento 3 Järjestäminen eli lajittelu Kekorakenne Kekolajittelu Hajautus Yhteentörmäysten käsittely Ketjutus Algoritmit 2 Kevät 2018 Luento 3 Ti 20.3.2018

Lisätiedot

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

Selainpelien pelimoottorit

Selainpelien pelimoottorit Selainpelien pelimoottorit Teemu Salminen Helsinki 28.10.2017 Seminaaritutkielma Helsingin yliopisto Tietojenkäsittelytiede ! 1 HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta

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

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö Algoritmit 2 Luento 5 Ti 28.3.2017 Timo Männikkö Luento 5 Puurakenteet B-puu B-puun korkeus B-puun operaatiot Algoritmit 2 Kevät 2017 Luento 5 Ti 28.3.2017 2/29 B-puu Algoritmit 2 Kevät 2017 Luento 5 Ti

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

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

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö Algoritmit 2 Luento 5 Ti 26.3.2019 Timo Männikkö Luento 5 Puurakenteet B-puu B-puun korkeus B-puun operaatiot B-puun muunnelmia Algoritmit 2 Kevät 2019 Luento 5 Ti 26.3.2019 2/34 B-puu B-puut ovat tasapainoisia

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

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

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

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

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

v 1 v 2 v 3 v 4 d lapsisolmua d 1 avainta lapsen v i alipuun avaimet k i 1 ja k i k 0 =, k d = Sisäsolmuissa vähint. yksi avain vähint.

v 1 v 2 v 3 v 4 d lapsisolmua d 1 avainta lapsen v i alipuun avaimet k i 1 ja k i k 0 =, k d = Sisäsolmuissa vähint. yksi avain vähint. Yleiset hakupuut 4 Monitiehakupuu: Binäärihakupuu 0 1 3 5 6 7 8 v k 1 k k 3 v v 3 v 4 k 1 k 3 k 1 k k k 3 d lapsisolmua d 1 avainta Yleinen hakupuu? Tietorakenteet, syksy 007 1 Esimerkki monitiehakupuusta

Lisätiedot

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Tietorakenteet, laskuharjoitus 7, ratkaisuja Tietorakenteet, laskuharjoitus, ratkaisuja. Seuraava kuvasarja näyttää B + -puun muutokset lisäysten jälkeen. Avaimet ja 5 mahtuvat lehtisolmuihin, joten niiden lisäys ei muuta puun rakennetta. Avain 9

Lisätiedot

Algoritmit 2. Luento 4 Ke Timo Männikkö

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

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

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

4. Joukkojen käsittely

4. Joukkojen käsittely 4 Joukkojen käsittely Tämän luvun jälkeen opiskelija osaa soveltaa lomittuvien kasojen operaatioita tuntee lomittuvien kasojen toteutuksen binomi- ja Fibonacci-kasoina sekä näiden totetutusten analyysiperiaatteet

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

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

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe ratkaisuja (Jyrki Kivinen) 58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe 12.9.2018 ratkaisuja (Jyrki Kivinen) 1. [10 pistettä] Iso-O-merkintä. (a) Pitääkö paikkansa, että n 3 + 5 = O(n 3 )? Ratkaisu: Pitää paikkansa.

Lisätiedot

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista 811312A Tietorakenteet ja algoritmit 2016-2017 III Lajittelualgoritmeista Sisältö 1. Johdanto 2. Pikalajittelu 3. Kekolajittelu 4. Lajittelualgoritmien suorituskyvyn rajoista 811312A TRA, Lajittelualgoritmeista

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

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

Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö Algoritmit 2 Luento 9 Ti 17.4.2018 Timo Männikkö Luento 9 Merkkitiedon tiivistäminen Huffmanin koodi LZW-menetelmä Taulukointi Editointietäisyys Algoritmit 2 Kevät 2018 Luento 9 Ti 17.4.2018 2/29 Merkkitiedon

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

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

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

5. Keko. Tietorakenne keko eli kasa (heap) on tehokas toteutus abstraktille tietotyypille prioriteettijono, jonka operaatiot ovat seuraavat:

5. Keko. Tietorakenne keko eli kasa (heap) on tehokas toteutus abstraktille tietotyypille prioriteettijono, jonka operaatiot ovat seuraavat: 5. Keko Tietorakenne keko eli kasa (heap) on tehokas toteutus abstraktille tietotyypille prioriteettijono, jonka operaatiot ovat seuraavat: Insert(S, x): lisää avaimen x prioriteettijonoon S Maximum(S):

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

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

Dominointianalyysi. Teppo Niinimäki. Helsinki Approksimointialgoritmit HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Dominointianalyysi. Teppo Niinimäki. Helsinki Approksimointialgoritmit HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Dominointianalyysi Teppo Niinimäki Helsinki 10.5.2010 Approksimointialgoritmit HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta

Lisätiedot

Joonas Haapala Ohjaaja: DI Heikki Puustinen Valvoja: Prof. Kai Virtanen

Joonas Haapala Ohjaaja: DI Heikki Puustinen Valvoja: Prof. Kai Virtanen Hävittäjälentokoneen reitin suunnittelussa käytettävän dynaamisen ja monitavoitteisen verkko-optimointitehtävän ratkaiseminen A*-algoritmilla (valmiin työn esittely) Joonas Haapala 8.6.2015 Ohjaaja: DI

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 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

Datatähti 2019 loppu

Datatähti 2019 loppu Datatähti 2019 loppu task type time limit memory limit A Summa standard 1.00 s 512 MB B Bittijono standard 1.00 s 512 MB C Auringonlasku standard 1.00 s 512 MB D Binääripuu standard 1.00 s 512 MB E Funktio

Lisätiedot

58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen)

58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen) 58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen) 1. Avaimet 1, 2, 3 ja 4 mahtuvat samaan lehtisolmuun. Tässä tapauksessa puussa on vain yksi solmu, joka on samaan aikaan juurisolmu

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 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

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

58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut

58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut 58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut 1. Palautetaan vielä mieleen O-notaation määritelmä. Olkoon f ja g funktioita luonnollisilta luvuilta positiivisille

Lisätiedot

Hakupuut muistihierarkiassa

Hakupuut muistihierarkiassa hyväksymispäivä arvosana arvostelija Hakupuut muistihierarkiassa Paavo Koskinen Helsinki 11.6.2011 Pro gradu -tutkielma HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS

Lisätiedot

Luku 8. Aluekyselyt. 8.1 Summataulukko

Luku 8. Aluekyselyt. 8.1 Summataulukko Luku 8 Aluekyselyt Aluekysely on tiettyä taulukon väliä koskeva kysely. Tyypillisiä aluekyselyitä ovat, mikä on taulukon välin lukujen summa tai pienin luku välillä. Esimerkiksi seuraavassa taulukossa

Lisätiedot

PN-puu. Helsinki Seminaari: Tietokannat nyt HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

PN-puu. Helsinki Seminaari: Tietokannat nyt HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos PN-puu Erno Härkönen Helsinki 24.10.2006 Seminaari: Tietokannat nyt HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta/Osasto

Lisätiedot

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012 ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012 1.1. (a) Jaettava m, jakaja n. Vähennetään luku n luvusta m niin kauan kuin m pysyy ei-negatiivisena. Jos jäljelle jää nolla, jaettava oli tasan jaollinen. int m,

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

Pro gradu -tutkielma Meteorologia SUOMESSA ESIINTYVIEN LÄMPÖTILAN ÄÄRIARVOJEN MALLINTAMINEN YKSIDIMENSIOISILLA ILMAKEHÄMALLEILLA. Karoliina Ljungberg

Pro gradu -tutkielma Meteorologia SUOMESSA ESIINTYVIEN LÄMPÖTILAN ÄÄRIARVOJEN MALLINTAMINEN YKSIDIMENSIOISILLA ILMAKEHÄMALLEILLA. Karoliina Ljungberg Pro gradu -tutkielma Meteorologia SUOMESSA ESIINTYVIEN LÄMPÖTILAN ÄÄRIARVOJEN MALLINTAMINEN YKSIDIMENSIOISILLA ILMAKEHÄMALLEILLA Karoliina Ljungberg 16.04.2009 Ohjaajat: Ari Venäläinen, Jouni Räisänen

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

HENRI MYLLYOJA BINÄÄRI- JA FIBONACCI-KEOT PRIORITEETTIJONON TO- TEUTUKSEEN. Kandidaatintyö

HENRI MYLLYOJA BINÄÄRI- JA FIBONACCI-KEOT PRIORITEETTIJONON TO- TEUTUKSEEN. Kandidaatintyö HENRI MYLLYOJA BINÄÄRI- JA FIBONACCI-KEOT PRIORITEETTIJONON TO- TEUTUKSEEN Kandidaatintyö Tarkastaja: Sami Hyrynsalmi Jätetty tarkastettavaksi 24.10.2017 I TIIVISTELMÄ HENRI MYLLYOJA: Binääri- ja Fibonacci-keot

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

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

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

Pikalajittelu: valitaan ns. pivot-alkio esim. pivot = oikeanpuoleisin

Pikalajittelu: valitaan ns. pivot-alkio esim. pivot = oikeanpuoleisin Pikalajittelu: valitaan ns. pivot-alkio esim. pivot = oikeanpuoleisin jaetaan muut alkiot kahteen ryhmään: L: alkiot, jotka eivät suurempia kuin pivot G : alkiot, jotka suurempia kuin pivot 6 1 4 3 7 2

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

7.4 Sormenjälkitekniikka

7.4 Sormenjälkitekniikka 7.4 Sormenjälkitekniikka Tarkastellaan ensimmäisenä esimerkkinä pitkien merkkijonojen vertailua. Ongelma: Ajatellaan, että kaksi n-bittistä (n 1) tiedostoa x ja y sijaitsee eri tietokoneilla. Halutaan

Lisätiedot

Verkon värittäminen ja riippumattomat joukot: johdantoa ja sovelluksia

Verkon värittäminen ja riippumattomat joukot: johdantoa ja sovelluksia hyväksymispäivä arvosana arvostelija Verkon värittäminen ja riippumattomat joukot: johdantoa ja sovelluksia Janne Korhonen Helsinki 8.12.2009 Seminaariraportti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen

Lisätiedot

Department of Mathematics, Hypermedia Laboratory Tampere University of Technology. Roolit Verkostoissa: HITS. Idea.

Department of Mathematics, Hypermedia Laboratory Tampere University of Technology. Roolit Verkostoissa: HITS. Idea. Roolit Tommi Perälä Department of Mathematics, Hypermedia Laboratory Tampere University of Technology 25.3.2011 J. Kleinberg kehitti -algoritmin (Hypertext Induced Topic Search) hakukoneen osaksi. n taustalla

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

1 Puu, Keko ja Prioriteettijono

1 Puu, Keko ja Prioriteettijono TIE-20100 Tietorakenteet ja algoritmit 1 1 Puu, Keko ja Prioriteettijono Tässä luvussa käsitellään algoritmien suunnitteluperiaatetta muunna ja hallitse (transform and conquer) Lisäksi esitellään binääripuun

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

Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages

Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages Tiedekunta/Osasto Fakultet/Sektion Faculty Laitos Institution Department Tekijä Författare Author Työn nimi Arbetets titel Title Oppiaine Läroämne Subject Työn laji Arbetets art Level Aika Datum Month

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

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

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

Verkon värittämistä hajautetuilla algoritmeilla

Verkon värittämistä hajautetuilla algoritmeilla Verkon värittämistä hajautetuilla algoritmeilla 5 12 30 19 72 34 Jukka Suomela 15 77 18 4 9. tammikuuta 2012 19 2 68 Verkko 2 Verkko solmu 3 Verkko solmu kaari 4 Hajautettu järjestelmä solmu (tietokone)

Lisätiedot

Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003

Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003 Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003 Matti Nykänen 5. joulukuuta 2003 1 Satelliitit Muunnetaan luennoilla luonnosteltua toteutusta seuraavaksi: Korvataan puusolmun p kentät p. key ja

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

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

58131 Tietorakenteet (kevät 2009) Harjoitus 9, ratkaisuja (Antti Laaksonen)

58131 Tietorakenteet (kevät 2009) Harjoitus 9, ratkaisuja (Antti Laaksonen) 58131 Tietorakenteet (kevät 2009) Harjoitus 9, ratkaisuja (Antti Laaksonen) 1. Lisäysjärjestämisessä järjestetään ensin taulukon kaksi ensimmäistä lukua, sitten kolme ensimmäistä lukua, sitten neljä ensimmäistä

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

Yleinen paikallinen vakautuva synkronointialgoritmi

Yleinen paikallinen vakautuva synkronointialgoritmi Yleinen paikallinen vakautuva synkronointialgoritmi Panu Luosto 23. marraskuuta 2007 3 4 putki 1 2 α α+1 α+2 α+3 0 K 1 kehä K 2 K 3 K 4 Lähdeartikkeli Boulinier, C., Petit, F. ja Villain, V., When graph

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

Koht dialogia? Organisaation toimintaympäristön teemojen hallinta dynaamisessa julkisuudessa tarkastelussa toiminta sosiaalisessa mediassa

Koht dialogia? Organisaation toimintaympäristön teemojen hallinta dynaamisessa julkisuudessa tarkastelussa toiminta sosiaalisessa mediassa Kohtdialogia? Organisaationtoimintaympäristönteemojenhallinta dynaamisessajulkisuudessatarkastelussatoiminta sosiaalisessamediassa SatuMariaPusa Helsinginyliopisto Valtiotieteellinentiedekunta Sosiaalitieteidenlaitos

Lisätiedot

Binäärihaun vertailujärjestys

Binäärihaun vertailujärjestys Järjestetyn sanakirjan tehokas toteutus: binäärihaku Binäärihaku (esimerkkikuassa aain = nimi) op Eea 5 op 5 op op 8 op 5 6 7 8 op Eea 5 op 5 op op 8 op 5 6 7 8 op Eea 5 op 5 op op 8 op 5 6 7 8 op Eea

Lisätiedot

Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms.

Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms. Kokeellinen algoritmiikka (3 ov) syventäviä opintoja edeltävät opinnot: ainakin Tietorakenteet hyödyllisiä opintoja: ASA, Algoritmiohjelmointi suoritus harjoitustyöllä (ei tenttiä) Kirjallisuutta: Johnson,

Lisätiedot

Arkkitehtuurinen reflektio

Arkkitehtuurinen reflektio Arkkitehtuurinen reflektio Toni Ruokolainen Toni.Ruokolainen@cs.helsinki.fi Helsinki 6.10.2003 Tiivistelmä HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Merkintöjen tulkintoja *++Pstack->top = item *Pstack->top++ = item (*Pstack->top)++ *(Pstack++)->top = item *(++Pstack)->top = item Lisää pinon toteutuksia Dynaaminen taulukko

Lisätiedot

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

Ratkaisu. Tulkitaan de Bruijnin jonon etsimiseksi aakkostossa S := {0, 1} sanapituudelle n = 4. Neljän pituisia sanoja on N = 2 n = 16 kpl. iskreetti matematiikka, syksy 00 arjoitus, ratkaisuista. seta 8 nollaa ja 8 ykköstä renkaaksi niin, että jokainen yhdistelmä 0000, 000,..., esiintyy täsmälleen kerran. Vihje: Tulkitse de ruijnin jonon

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

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

Tiraka, yhteenveto tenttiinlukua varten

Tiraka, yhteenveto tenttiinlukua varten Tiraka, yhteenveto tenttiinlukua varten TERMEJÄ Tietorakenne Tietorakenne on tapa tallettaa tietoa niin, että tietoa voidaan lisätä, poistaa, muokata ja hakea. Tietorakenteet siis säilövät tiedon niin,

Lisätiedot

Verkkoalgoritmeja. Henry Niveri. hniveri(at)cc.hut.fi

Verkkoalgoritmeja. Henry Niveri. hniveri(at)cc.hut.fi Verkkoalgoritmeja Henry Niveri hniveri(at)cc.hut.fi Seminaariesitelmä 16.4.008 T-106.5800 Satunnaisalgoritmit Tietotekniikan laitos Teknillinen korkeakoulu Tiivistelmä Tässä esityksessä käsitellään satunnaisalgoritmien

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

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

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 10 To Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö Algoritmit 2 Luento 10 To 19.4.2018 Timo Männikkö Luento 10 Peruutusmenetelmä Osajoukon summa Verkon 3-väritys Pelipuut Pelipuun läpikäynti Algoritmit 2 Kevät 2018 Luento 10 To 19.4.2018 2/34 Algoritmien

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

Algoritmit 2. Demot Timo Männikkö

Algoritmit 2. Demot Timo Männikkö Algoritmit 2 Demot 1 27.-28.3.2019 Timo Männikkö Tehtävä 1 (a) 4n 2 + n + 4 = O(n 2 ) c, n 0 > 0 : 0 4n 2 + n + 4 cn 2 n n 0 Vasen aina tosi Oikea tosi, jos (c 4)n 2 n 4 0, joten oltava c > 4 Kokeillaan

Lisätiedot