Hakupuut muistihierarkiassa
|
|
- Elina Mikkola
- 9 vuotta sitten
- Katselukertoja:
Transkriptio
1 hyväksymispäivä arvosana arvostelija Hakupuut muistihierarkiassa Paavo Koskinen Helsinki Pro gradu -tutkielma HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
2 HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta Fakultet Faculty Laitos Institution Department Matemaattis-luonnontieteellinen Tekijä Författare Author Paavo Koskinen Työn nimi Arbetets titel Title Tietojenkäsittelytieteen laitos Hakupuut muistihierarkiassa Oppiaine Läroämne Subject Tietojenkäsittelytiede Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages Pro gradu -tutkielma sivua Tiivistelmä Referat Abstract Algoritmien suoritusajasta kuluu usein merkittävä osa datan siirtelyyn muistihierarkian kerrosten välillä. Ongelma korostuu hakurakenteilla, sillä ne käsittelevät suuria datamääriä. Työn päämääränä on selvittää muistisiirtojen minimoinnilla saavutettavat käytännön edut hakupuiden tapauksessa. Toinen päämäärä on kartoittaa ideaalisen välimuistin malliin perustuvien parametrittomien hakupuiden etuja ja heikkouksia ulkoisen muistin malliin perustuviin parametrillisiin hakupuihin nähden. Parametrittomuus tarkoittaa, ettei algoritmi tiedä käytetyn suunnittelumallin parametreja, kuten välimuistin kokoa. Staattisista hakupuista tarkastellaan leveyssuuntaiseen järjestykseen, esijärjestykseen ja van Emde Boas -järjestykseen tallennettuja binäärihakupuita sekä staattista B- puuta. Dynaamisista hakupuista käsitellään B + -puuta sekä parametritonta B-puuta, COB-puuta. Sekä parametrittomat että parametrilliset hakupuut pyrkivät minimoimaan vaadittavaa muistisiirtojen määrää parantamalla laskennan paikallisuutta. Käsiteltävien hakupuiden käytännön nopeutta testataan monipuolisesti. Saatujen tulosten nojalla sekä staattiset että dynaamiset parametrittomat hakupuut pärjäävät satunnaisoperaatioiden nopeudessa vastaaville parametrillisille hakupuille. Ne jäävät kuitenkin jonkin verran jälkeen perättäisoperaatioita suoritettaessa. ACM Computing Classification System (CCS): E.1 [DATA STRUCTURES] Trees E.5 [FILES] Sorting/searching H.3.2 [INFORMATION STORAGE AND RETRIEVAL]: Information Storage File organization H.3.3 [INFORMATION STORAGE AND RETRIEVAL]: Information Search and Retrieval Avainsanat Nyckelord Keywords hakupuu, ideaalisen välimuistin malli, B + -puu, COB-puu, van Emde Boas -järjestys Säilytyspaikka Förvaringsställe Where deposited Kumpulan tiedekirjasto, sarjanumero C- Muita tietoja övriga uppgifter Additional information
3 Sisältö ii 1 Johdanto Käytetyt merkinnät Algoritmien suunnittelumallit RAM-malli Ulkoisen muistin malli Ideaalisen välimuistin malli Hierarkkisen muistin malli Staattiset hakupuut Hakupuun määritelmä ja muodot Leveyssuuntainen järjestys Esijärjestys Van Emde Boas -järjestys Van Emde Boas -indeksin laskeminen Staattinen B-puu Staattisen B-puun muodostaminen Arvojen tallennus Staattisten hakupuiden tulokset Testiasetelma ja -ympäristö Satunnaishaut Perättäishaut B + -puut Haku Alkion lisäys Alkion poisto Aluehaku
4 iii 6 Pakatun muistin taulukko Alkion lisäys Alkion poisto Haku Tiheysrajojen valinta Optimointeja COB-puut Haku Aluehaku Alkion lisäys Alkion poisto Dynaamisten hakupuiden tulokset Testiasetelma ja -ympäristö Lisäykset Haut Poistot Muiden tuloksia Yhteenveto 49 Lähteet 51
5 1 Johdanto 1 Nykyaikaisen tietokoneen muistihierarkia koostuu monesta kerroksesta. Tavallisia kerroksia ovat ainakin suorittimen rekisterit ja kolme eritasoista välimuistia, keskusmuisti ja kiintolevy tai SSD-massamuisti. Näiden lisäksi eri laitteilla, kuten massamuistilla ja DVD-asemilla, on omat välimuistinsa. Erot muistitasojen nopeuksissa ovat huomattavia, mikä korostuu erityisesti keskusmuistin ja kiintolevyn välillä. Kun samalla suorittimet nopeutuvat muistitasoja kovempaa tahtia, yhä suurempi osa algoritmien suoritusajasta kuluu datan siirtelyyn muistitasolta toiselle. Koska datan siirtely käy laskentaan nähden aina vain kalliimmaksi, erityisesti paljon muistisiirtoja vaativien algoritmien kohdalla siirtojen määrän minimointi vaikuttaa hyvältä päämärältä. Tällaisia algoritmiryhmiä ovat esimerkiksi järjestysalgoritmit ja tietorakenteiden algoritmit. Tässä työssä käsitellään muistihierarkiaa tehokkaasti hyödyntäviä hakurakenteita. Ehkä yleisin ja yksi vanhimmista muistisiirtojen määrää minimoivista hakurakenteista on B-puu [BM72] useine muunnoksineen. B-puut hyödyntävät sitä seikkaa, että siirrot eri muistihierarkian kerrosten välillä tapahtuvat yleensä usean alkion lohkoissa. Tavanomaisemmista binäärihakupuista poiketen B-puun solmuilla on useita arvoja ja lapsia. Kun solmut ovat samaa kokoluokkaa kuin kerralla siirrettävä lohko, saadaan puuta madallettua käytännössä ilmaiseksi. Lisäys-, poisto- ja hakuoperaatiot vaativat B-puissa luokkaa O(log B n) muistisiirtoa, missä B on lohkoon mahtuvien alkioiden määrä ja n puuhun tallennettujen alkioiden määrä. Puut tukevat lisäksi tehokkaita aluehakuja. Aluehaku palauttaa kaikki rakenteeseen tallennetut alkiot annetulta arvoväliltä. Tavallisissa B-puissa solmut pidetään vähintään puolillaan. Rakenteesta on myös muunnos B -puu [Knu98], jossa solmujen täyttöaste on vähintään 2/3. Ehkä yleisin B-puun versio on B + -puu, jossa varsinaiset data-alkiot tallennetaan puun lehtisolmuihin. Puun sisäsolmut toimivat vain eräänlaisena ohjausrakenteena. Ratkaisu yksinkertaistaa lisäys-, poisto- ja aluehakuoperaatioita sekä madaltaa puuta. Puun madaltuminen johtuu siitä, ettei sisäsolmuihin tarvitse tallentaa avaimiin liitettäviä arvoja. Termiä B -puu on käytetty myös B + -puusta [Com79] sekä B + -puun ja B -puun yhdistelmästä [Vit06]. Edellä mainittujen melko suoraviivaisten muunnosten lisäksi B-puista on kehitetty erikoisempiakin versioita: Litwin ja Lomet [LL87] yhdistivät B-puun ja hajautus-
6 2 taulun. O Neil on kehittänyt erityisesti aluehakuja optimoivan SB-puun [O N92], joka perustuu solmujen rypästämiseen kiintolevyllä. Huang ym. [yhshfc + 09] ovat vuorostaan esittäneet nimeltään samankaltaisen staattisen S-B-puun. B-puita on sovellettu Ferraginan ja Grossin [FG99] toimesta merkkijono-b-puussa myös vaihtuvanmittaisten avainten tapaukseen. Huomattavasti laajempi listaus B-puun muunnoksista löytyy esimerkiksi Vitterin artikkelista [Vit06]. B-puiden ongelmana on, että käytettävä solmukoko joudutaan määrittelemään laitteistokohtaisesti, jotta rakenne toimisi tehokkaasti. Toinen B-puiden heikkous on, että ne optimoivat muistisiirtojen määrää vain kahden muistihierarkian kerroksen välillä; yleensä keskusmuistin ja kiintolevyn. Nykyään on kuitenkin olemassa myös hakurakenteita, jotka hyödyntävät tehokkaasti kaikkia muistihierarkian tasoja tarvitsematta laitteistoriippuvaisia parametreja. Bender ym. [BDFC05] esittivät ensimmäisinä tällaisen tietorakenteen, COB-puun eli parametrittoman B-puun. Se on kuitenkin hyvin monimutkainen. Rakenteesta on myöhemmin kehitetty useita yksinkertaistettuja ja muunneltuja versioita [BFJ02, Kas04, BDIW04, BFCK06]. Kaikki listatut rakenteet perustuvat Frigon ym. kehittämään [FLPR99] ideaalisen välimuistin malliin. Tässä työssä esitellään tarkemmin perinteisen B-puun muunnelma B + -puu. Lisäksi parametrittomista, muistihierarkiaa tehokkaasti käyttävistä hakupuista esitellään Kasheffin [Kas04] yksinkertaistettuun versioon perustuva COB-puun versio. Puun käyttäytymiseen liittyvien tiheysparametrien valinta analysoidaan aiempia töitä tarkemmin. Työssä tarkastellaan myös rakenteiden tehokkuutta käytännössä. Ennen dynaamisia rakenteita työssä tarkastellaan yksinkertaisempia staattisia hakupuita. Tässä staattisuus tarkoittaa sitä, ettei rakenteeseen voida lisätä tai siitä poistaa alkioita sen luonnin jälkeen. Vastapainoksi staattiset rakenteet ovat tavallisesti dynaamisia rakenteita yksinkertaisempia ja tehokkaampia. Työssä esitellään useampi versio binäärihakupuusta sekä implisiittinen B-puu. Binääripuista Prokopin van Emde Boas -järjestykseen [Pro99] perustuva versio on oleellisessa osassa myös myöhemmin esiteltävässä COB-puussa. Myös staattisten hakupuiden käytännön tehokkuutta vertaillaan. Työssä esitellään lyhyesti algoritmien suunnittelussa ja analysoinnissa käytettäviä muistihierarkiamalleja. Malleista esitellään ideaalisen välimuistin mallin lisäksi myös Aggarwalin ja Vitterin perinteinen kaksitasoinen ulkoisen muistin malli [AV88] sekä Aggarwalin ym. hierarkkisen muistin malli [AACS87]. Työllä on kaksi ensisijaista päämäärää. Ensimmäinen päämääristä on selvittää muistihierarkian huomioinnil-
7 3 la saavutettavat käytännön edut hakupuiden tapauksessa. Toisena päämääränä on kartoittaa ideaalisen välimuistin malliin perustuvan COB-puun mahdollisia etuja ja heikkouksia perinteisempään B + -puuhun nähden. Luvussa 1.1 listataan työssä käytettäviä merkintöjä. Luvussa 2 esitellään algoritmien suunnittelumalleista RAM-malli, ulkoisen muistin malli, ideaalisen välimuistin malli sekä hierarkkisen muistin malli. Luvussa 3 esitellään testattavat staattiset hakupuut ja luvussa 4 esitellään ja analysoidaan niille saatuja tuloksia. Luvussa 5 esitellään dynaaminen ja parametrillinen B + -puu. Luvussa 6 esitellään COB-puun tärkeä rakennusosa, pakatun muistin taulukko. Luvussa 7 esitellään dynaaminen ja parametriton COB-puu. Luvussa 8 käsitellään dynaamisille hakurakenteille saatuja tuloksia. Lopulta luvussa 9 tehdään yhteenveto saaduista tuloksista. 1.1 Käytetyt merkinnät Tässä työssä on pyritty käyttämään yhdenmukaisia ja vakiintuneita merkintöjä tietorakenteiden kuvauksissa ja analyyseissä. Alla olevaan taulukkoon on listattu osa käytetyistä merkinnöistä selityksineen. T Hakupuu itse n Puuhun tallennettujen avainten lukumäärä N Puun solmujen lukumäärä u Solmuun u mahtuvien avainten lukumäärä d Solmun etäisyys puun juuresta, juurella d = 0 h Puun korkeus, lehtisolmuilla d = h C Välimuistin lohkojen lukumäärä B Välimuistilohkon koko 2 Algoritmien suunnittelumallit Tässä luvussa esitellään algoritmien suunnittelussa ja analysoinnissa käytettäviä malleja. Mallien tarkoitus on idealisoida tietokone ilman algoritmien analyysin kannalta epäoleellisia osia. Tällöin niiden tehokkuutta voidaan arvioida helpommin matemaattisin keinoin. Mallin kehityksessä on oleellista löytää tarkoitukseen sopiva idealisoinnin taso: Mitä yksinkertaisempi malli on, sitä helpompaa algoritmeja on analysoida sen puitteissa. Toisaalta liikaa yksinkertaistetussa mallissa tehty analyysi ei välttämättä vastaa
8 4 enää riittävän tarkasti todellisuutta. Ensimmäisessä aliluvussa 2.1 esitellään perinteinen RAM-malli. Toisessa aliluvussa 2.2 esitellään datan siirtoon keskittyvä I/O-malli. Aliluvussa 2.3 esitellään monitasoisen muistihierarkian käsittelyyn suunniteltu ideaalisen välimuistin malli. Viimeisessä aliluvussa 2.4 esitellään vielä Aggarwalin ym. hierarkkisen välimuistin malli. 2.1 RAM-malli RAM-malli [AHU74] on yksi vanhimmista ja yleisimmin käytetyistä algoritmien suunnittelumalleista. Siinä mitataan ainoastaan algoritmin suorituksen vaatimien konekäskyjen määrää. Tavallisesti käskyjen määrä suhteutetaan esimerkiksi annetun syötteen suuruuteen tai muuhun ominaisuuteen. Pienehköillä syötteillä RAM-mallin tarjoama nopeusarvio on usein riittävä. Oleellista on, että sekä algoritmin syöte että mahdolliset apurakenteet mahtuvat kerralla keskusmuistiin. Suuremmilla syötteillä muistisiirrot, erityisesti kiintolevyn ja keskusmuistin välillä, voivat viedä viedä hyvin suuren osan algoritmin suoritusajasta. Tällöin RAM-mallin nopeusarvio ei välttämättä enää vastaa käytännön mittaustuloksia. 2.2 Ulkoisen muistin malli Nykyaikaisen tietokoneen muistihierarkia koostuu monesta kerroksesta. Tavallisesti hierarkiasta löytyvät ainakin suorittimen rekisterit ja kolme eritasoista välimuistia, keskusmuisti sekä kiintolevy tai SSD-massamuisti. Näiden lisäksi eri laitteilla, kuten massamuistilla ja DVD-asemilla, on omat välimuistinsa. Erot muistitasojen nopeuksissa ovat huomattavia. Tämä korostuu erityisesti keskusmuistin ja kiintolevyn välillä. Kun samalla suorittimet nopeutuvat muistitasoja kovempaa tahtia, yhä suurempi osa algoritmien suoritusajasta kuluu datan siirtelyyn muistitasolta toiselle. Yhteistä muistihierarkian eri kerroksille on, että data siirretään näiden välillä lohkoina. Lohkon koot voivat vaihdella tasoittain. Siirtolohkon koko voi vaihtua myös tason sisällä: esimerkiksi kiintolevyllä levyn sisäreunan lohkot ovat ulkoreunaa pienempiä. Aggarwalin ja Vitterin [AV88] esittelemä ulkoisen muistin malli (External-Memory Model) vähentää muistitasot kahteen. Mallissa lasketaan suoritettujen konekäskyjen
9 b puu 31 b puu 63 b puu 127 cob pieni 0,33 cob pieni 0,50 cob pieni 0,67 cob suuri 0,20 cob suuri 0,25 cob suuri 0,30 bdb b puu Kuva 23: Kasvavassa järjestyksessä suoritettujen poistojen kesto. Vaaka-akselin arvot kuvaavat puussa jäljellä olevien alkioiden määrää. Aikayksikkönä sekunti. kuvaajassa taas selvinä portaina. B + -puilla poistot ovat sen sijaan nopeimmillaan pienimmissä ja suurimmissa puissa ja selvästi hitaampia ääripäiden välillä. Eri solmukokoja käyttävien B + -puiden keskinäinen järjestys kääntyy alkion paikkeilla. Suurilla alkiomäärillä solmukoon kasvattaminen vain hidastaa poistoja. Tämä johtunee solmujen välisen alkioiden siirtelyn hintavuudesta: solmukoon kasvaessa sisarussolmujen tasaamiseen tarvitaan kasvava määrä muistisiirtoja. Keskusmuistiin mahduttaessa puurakenteen päivittäminen muodostunee vuorostaan pullonkaulaksi. Tällöin suureen solmukokoon liittyvä puun mataluus parantaa tehokkuutta. B + -puista poiketen bdb-b-puu käyttäytyy satunnaispoistotestissä melko tasaisesti. Pienemmillä puilla rakenne jää selvästi joukon hännille, mutta alkiomäärien kasvaessa bdb-b-puu ohittaa kaikki testin B + -puut ja pääsee lähelle suurilehtisten COBpuiden nopeutta. Käyttäytyminen saattaa olla joko ominaista Berkeley DB:n käyttämälle B-puuvariantille tai johtua esimerkiksi B + -puutoteutuksista poikkeavasta solmujentasauslogiikasta.
10 48 Kun alkiot poistetaan rakenteista avaimen mukaan kasvavassa järjestyksessä, kääntyy tilanne taas perinteisempien B-puuvarianttien eduksi. Hajautukseen perustuva bdb-hajautus ei hyödynnä operaatioiden paikallisuutta, eikä siksi ole mukana vertailussa. Kaikenkaikkiaan tilanne vastaa hyvin pitkälti perättäislisäysten tapausta, kuten nähdään vertaamalla kuvia 23 ja 20. COB-puut ovat taas koonmuutosten korostumisen takia joukon hännillä B + -puiden dominoidessa liki kaikilla alkiomäärillä. Ehkä silmiinpistävin asia kuvassa 23 on tiheysparametrilla ρ = 0,20 varustettujen COB-puiden hitaus. Heikko suoritus johtuu molemmilla lähinnä siitä, että ensimmäinen rakenteen pienennys tehdään vasta hyvin myöhään. Ero tiukkarajaisempiin COB-puihin on kuitenkin yllättävän suuri, kun muissa testeissä tiheysparametrien vaikutus on ollut suhteellisen pieni. COB-puiden käyttäytyminen on perättäispoistojen tapauksessa muutenkin aiemmista testeistä poikkeavaa: suurilla puilla cob-suuri-0,25 pärjää tiukkarajaisempaa cob-suuri-0,30-puuta paremmin. Sama pätee myös puille cob-pieni-0,25 ja cob-pieni- 0,30. Tulos on ollut myös toistettavissa, sillä järjestys on toteutunut kaikilla testikierroksilla. Järjestys on päinvastainen kuin satunnaispoistojen tapauksessa. Hieman vastaava vaihto tapahtuu kuitenkin myös satunnaislisäysten tapauksessa puiden cobpieni-0,33 ja cob-pieni-0,50 välillä. 8.5 Muiden tuloksia Parametrittomia hakupuita on testattu aiemminkin. Kassheff [Kas04] on suorittanut testejä esiteltyä vastaavalle COB-puurakenteelle. Juurisolmun maksimitiheysparametri on näissä testeissä τ 0 = 0,5 ja koonmuutoskerroin a = 2. Avainten koko on 520 tavua. Testeissä tutkitaan vain lisäysoperaatioiden nopeutta. Keskusmuistiin mahtuvan alkion lisääminen satunnaisjärjestyksessä vie COBpuulta noin 48 % verrokkina toimineen B-puun käyttämästä ajasta. Järjestyksessä lisättäessä COB-puu jää jälkeen ja käyttää noin 39 % enemmän aikaa kuin B-puu. Kun alkioita lisätään , eivät rakenteet mahdu enää keskusmuistiin. Tällöin COB-puu käyttää satunnaislisäyksiin vain 32 % B-puun käyttämästä ajasta. Perättäisjärjestyksessä B-puu vie taas voiton ja COB-puu käyttää yli 3,2 kertaisen ajan B-puuhun nähden. Kuitenkaan edes B-puu ei aivan pärjää verrokkina toimineelle Berkeley DB:lle. Erot Kassheffin ja omien tuloksieni välillä johtunevat toteutusyksityiskohdista sekä rakenteiden optimointitasoista. Kassheff ei myöskään kerro tarkemmin millaista B-
11 49 puuvarianttia verrokkina käytetään. Myös testiympäristöt ja esimerkiksi käytetyt kääntäjäversiot voivat vaikuttaa tuloksiin. Myös Brodal ym. [BFJ02] ovat testanneet omaa parametritonta hakupuutaan. Rakenne perustuu siihen, että dynaaminen hakupuu sisällytetään täydelliseen staattiseen hakupuuhun. Dynaamisen hakupuun korkeus saa poiketa korkeintaan vakiolla saman kokoisen täydellisen hakupuun korkeudesta. Staattisena puuna voidaa käyttää esimerkiksi van Emde Boas -järjestykseen tallennettua puuta. Brodal ym. eivät vertaa rakennettaan B-puuhun. Sen sijaan he käyttävät erilaisia staattisia hakupuita, joita vertaillaan keskenään. Lisäystesteissä van Emde Boas -järjestys pärjää äärimmäisen hyvin: keskusmuistissa se kilpailee tasaväkisesti leveyssuuntaisen järjestyksen kanssa ja kiintolevylle jouduttaessa staattisen B-puun. Toisin sanoen van Emde Boas -järjestys on aina vähintään kärjen tuntumassa. Harmi kyllä Brodalin ym. testit eivät paljasta kuinka hyvin heidän hakurakenteensa pärjäisi perinteisille B-puutoteutuksille. 9 Yhteenveto Työssä esiteltiin lyhyesti eri algoritmien suunnittelumalleja. Näistä ulkoisen muistin mallia sekä ideaalisen välimuistin mallia käytettiin esiteltyjen tietorakenteiden analyysissä. Ideaalisen välimuistin mallia sovelletaan parametrittomien algoritmien ja tietorakenteiden suunnitteluun. Ulkoisen muistin malli on sen sijaan tarkoitettu mallin parametrit tietäville algoritmeille. Parametrittomien algoritmien etuna on niiden hyvä siirrettävyys ja koko muistihierarkian automaattinen hyödyntäminen. Pääaiheena työssä olivat mainittuihin suunnittelumalleihin perustuvat staattiset ja dynaamiset hakupuut. Staattisista rakenteista esiteltiin leveyssuuntaiseen järjestykseen, esijärjestykseen ja van Emde Boas -järjestykseen tallennetut binäärihakupuut sekä staattinen B-puu. Keskusmuistiin mahduttaessa voiton veivät kaikkein yksinkertaisimmat puut: leveyssuuntaiseen järjestykseen tallennettu binäärihakupuu sekä staattiset B-puut. Leveyssuuntaisen järjestyksen etuna on nimensä mukainen lohkojen leveyssuuntaisuus, minkä ansiosta puun yläosa pysyy välimuistissa. Sama pätee pienemmässä määrin myös pienisolmuisille staattisille B-puille. Myös esijärjestykseen ja van Emde Boas -järjestykseen tallennetut binääripuut pärjäsivät hyvin kilvassa, kun puut eivät enää mahtuneet keskusmuistiin. Sen sijaan leveyssuuntaiseen järjestykseen tallennettu binääripuu jäi selvästi joukon hitaimmak-
12 50 si. Suurten staattisten hakupuiden kohdalla muistisiirtojen minimointi on tulosten perusteella erittäin hyödyllistä. Parametrittomat rakenteet voivat myös olla kilpailukykyisiä perinteisiin parametrillisiin ratkaisuihin nähden. Lisäksi huomataan, että on edullista pitää mahdollisimman korkea yläpuu rakenteesta aina keskusmuistissa. Dynaamisista rakenteista työssä esiteltiin B-puun ehkä yleisin muunnos, B + -puu, sekä parametriton B-puu, COB-puu. Molempia testattiin eri parametreilla: B + -puita testattiin kolmella eri solmukoolla ja COB-puita kahdella solmukoonlaskukaavalla ja kolmilla tiheysrajaparametreilla. Satunnaisoperaatioilla COB-puut pärjäsivät sekä lisäyksissä, poistoissa että hauissa hyvin B-puille: pienilehtiset COB-puut voittivat nämä suurilla alkiomäärillä kaikissa kategorioissa. B + -puut olivat omimmillaan kasvavassa järjestyksessä suoritetuissa lisäys- ja poistooperaatioissa. Niissä kaikki B + -puut voittivat COB-puiden lisäksi verrokkina olleen Berkeley DB -tietokannan selvällä marginaalilla. Erityisesti pienilehtiset COB-puut pärjäsivät huonosti perättäisoperaatioissa indeksipuun päivittämiseen liittyvän ylläpitotyön takia. Suurilehtiset COB-puut pärjäsivät testeissä kohtuullisen hyvin kaikilla paitsi suurimmilla alkiomäärillä. Testitulokset osoittavat COB-puiden olevan satunnaisoperaatioilla hyvin kilpailukykyisiä parametrillisille hakurakenteille. Erityisesti paljon poistoja ja hakuja tehtäessä pienilehtiset COB-puut ovat elementissään. Tällainen tilanne syntyy esimerkiksi, mikäli kaikki rakenteeseen tallennettava data on jo valmiiksi olemassa ja järjestyksessä. COB-puu saadaan luotua yksinkertaisesti rakentamalla datan sisältävälle taulukolle indeksipuu. Myös B + -puu voidaan rakentaa helposti järjestetystä datasta lisäämättä alkioita puuhun yksi kerrallaan. Kilpailukykyisen nopeuden lisäksi COB-puilla on etunaan parametrittomuudesta johtuva hyvä siirrettävyys. Vaikka eri solmukoon B + -puut pärjäsivätkin testeissä suunnilleen yhtä hyvin, täytyisi solmukoko valita uudelleen siirryttäessä lohkokooltaan merkittävästi erilaiseen muistihierarkiaan. Myös olemassa olevan tietorakenteen siirtäminen ympäristöstä toiseen on hankalaa, sillä solmukoon muuttaminen vaatii koko puun rakentamisen uudelleen. COB-puiden tiheysparametreja voidaan sen sijaan muuttaa helposti lennossa ja lehtien kokoakin indeksipuun rakennuksen yhteydessä. COB-puihin ja yleisemmin parametrittomiin hakurakenteisiin liittyy useita avoimia tutkimuskohteita. Yksi merkittävä päämäärä olisi kehittää myös pahimman tapauksen työ- ja muistisiirtovaativuuksiltaan hyvä parametriton hakurakenne. COB-puun tapauksessa lisäyksille ja poistoille annetaan vain operaatiojonon yli tasoitetut vaa-
13 tivuusluokat. Myös van Emde Boas -indeksien laskenta-algoritmin optimointi voisi tehostaa erityisesti keskusmuistiin mahtuvia rakenteita. 51 Lähteet AACS87 ACS87 AHU74 AV88 BCD + 02 BDFC05 BDIW04 BFCK06 Aggarwal, A., Alpern, B., Chandra, A. K. ja Snir, M., A model for hierarchical memory. Proceedings of the 19th Annual ACM Symposium on Theory of Computing, STOC 87, New York, NY, USA, 1987, ACM, sivut Aggarwal, A., Chandra, A. K. ja Snir, M., Hierarchical memory with block transfer. Proceedings of the 28th Annual Symposium on Foundations of Computer Science, FOCS 87. IEEE Computer Society, 1987, sivut Aho, A. V., Hopcroft, J. E. ja Ullman, J. D., The Design and Analysis of Computer Algorithms. Addison-Wesley, Reading, MA, ensimmäinen painos, Aggarwal, A. ja Vitter, J. S., The input/output complexity of sorting and related problems. Communications of the ACM, 31,9(1988), sivut Bender, M. A., Cole, R., Demaine, E. D., Farach-Colton, M. ja Zito, J., Two simplified algorithms for maintaining order in a list. Proceedings of the 10th Annual European Symposium on Algorithms, osa 2461 sarjasta Lecture Notes in Computer Science. Springer-Verlag, 2002, sivut Bender, M. A., Demaine, E. D. ja Farach-Colton, M., Cache-oblivious B-trees. SIAM Journal on Computing, 35,2(2005), sivut Bender, M. A., Duan, Z., Iacono, J. ja Wu, J., A locality-preserving cache-oblivious dynamic dictionary. Journal of Algorithms, 53,2(2004), sivut Bender, M. A., Farach-Colton, M. ja Kuszmaul, B. C., Cache-oblivious string B-trees. Proceedings of the 25th ACM SIGMOD-SIGACT-
14 SIGART Symposium on Principles of Database Systems, PODS 06. ACM, 2006, sivut BFJ02 BM72 Brodal, G. S., Fagerberg, R. ja Jacob, R., Cache oblivious search trees via binary trees of small height. Proceedings of the 13th Annual ACM- SIAM Symposium on Discrete Algorithms, SODA 02. Society for Industrial and Applied Mathematics, 2002, sivut Bayer, R. ja McCreight, E. M., Organization and maintenance of large ordered indexes. Acta Informatica, 1,3(1972), sivut Com79 Comer, D., The ubiquitous B-tree. ACM Computing Surveys, 11,2(1979), sivut FG99 FLPR99 IKR81 Kas04 Knu98 LL87 O N92 Ferragina, P. ja Grossi, R., The string b-tree: A new data structure for string search in external memory and its applications. Journal of the ACM, 46,2(1999), sivut Frigo, M., Leiserson, C. E., Prokop, H. ja Ramachandran, S., Cacheoblivious algorithms. Proceedings of the 40th Annual Symposium on Foundations of Computer Science, FOCS 99. IEEE Computer Society, 1999, sivut Itai, A., Konheim, A. G. ja Rodeh, M., A sparse table implementation of priority queues. Proceedings of the 8th Colloquium on Automata, Languages and Programming, osa 115 sarjasta Lecture Notes in Computer Science. Springer-Verlag, 1981, sivut Kasheff, Z., Cache-oblivious dynamic search trees. Masters thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge, MA, USA, kesäkuu Knuth, D. E. The art of computer programming, volume 3: sorting and searching, sivut Addison Wesley Longman Publishing Co., Inc., Redwood City, CA, USA, toinen painos, Litwin, W. ja Lomet, D. B., A new method for fast data searches with keys. IEEE Software, 4,2(1987), sivut O Neil, P. E., The sb-tree: An index-sequential structure for highperformance sequential access. Acta Informatica, 29,3(1992), sivut
15 Ora Oracle, Berkeley db. URL database/berkeley-db/index.html. 53 Pro99 veb77 vebkz77 Vit06 Wil82 Wil86 Wil92 Prokop, H., Cache-oblivious algorithms. Masters thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge, MA, USA, kesäkuu van Emde Boas, P., Preserving order in a forest in less than logarithmic time and linear space. Information Processing Letters, 6,3(1977), sivut van Emde Boas, P., Kaas, R. ja Zijlstra, E., Design and implementation of an efficient priority queue. Mathematical Systems Theory, 10(1977), sivut Vitter, J. S., Algorithms and data structures for external memory. Foundations and Trends in Theoretical Computer Science, 2,4(2006), sivut Willard, D. E., Maintaining dense sequential files in a dynamic environment (extended abstract). Proceedings of the 14th Annual ACM symposium on Theory of computing, STOC 82. ACM, 1982, sivut Willard, D. E., Good worst-case algorithms for inserting and deleting records in dense sequential files. Proceedings of the 1986 ACM SIGMOD international conference on Management of data, SIGMOD 86, New York, NY, USA, 1986, ACM, sivut Willard, D. E., A density control algorithm for doing insertions and deletions in a sequentially ordered file in good worst-case time. Information and Computation, 97,2(1992), sivut yhshfc + 09 yin Huang, K., shan He, Y., fei Chen, P., yun Chen, X. ja jie Li, L., An improved query technique for embedded database based on s-b tree. Proceedings of the 2009 First International Workshop on Database Technology and Applications, DBTA 09. IEEE Computer Society, 2009, sivut
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
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
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
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
Selainpelien pelimoottorit
Selainpelien pelimoottorit Teemu Salminen Helsinki 28.10.2017 Seminaaritutkielma Helsingin yliopisto Tietojenkäsittelytiede ! 1 HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta
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
Lyhimmän polun etsintä verkossa muistihierarkiatehokkaasti
Lyhimmän polun etsintä verkossa muistihierarkiatehokkaasti Teppo Niinimäki Helsinki 5.4.2009 Seminaari: Muistihierarkia-algoritmit HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO
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,
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
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
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
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
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
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
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
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
Kuva 1: J+-puun rakenne [HXS09].
Johdanto Tietotekniikka on kehittynyt viime vuosikymmenten aikana nopeata vauhtia. Tämä on näkynyt niin tietokoneiden tehoissa kuin myös hinnoissa. Myös tietokoneiden keskusmuistit ovat kasvaneet ja ovat
private TreeMap<String, Opiskelija> nimella; private TreeMap<String, Opiskelija> numerolla;
Tietorakenteet, laskuharjoitus 7, ratkaisuja 1. Opiskelijarekisteri-luokka saadaan toteutetuksi käyttämällä kahta tasapainotettua binäärihakupuuta. Toisen binäärihakupuun avaimina pidetään opiskelijoiden
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
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
Aika/Datum Month and year Kesäkuu 2012
Tiedekunta/Osasto Fakultet/Sektion Faculty Laitos/Institution Department Filosofian, historian, kulttuurin ja taiteiden tutkimuksen laitos Humanistinen tiedekunta Tekijä/Författare Author Veera Lahtinen
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ä
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
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
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
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
Mukautuvat järjestämisalgoritmit
1 Mukautuvat järjestämisalgoritmit Riku Saikkonen TIK-päivä, 17. 1. 2013 2 Mukautuva järjestäminen minkä tahansa vertailuihin perustuvan järjestämisalgoritmin täytyy tehdä pahimmassa tapauksessa vähintään
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
Maailman muutosta tallentamassa Marko Vuokolan The Seventh Wave -valokuvasarja avauksena taidevalokuvan aikaan
Maailman muutosta tallentamassa Marko Vuokolan The Seventh Wave -valokuvasarja avauksena taidevalokuvan aikaan Pro gradu -tutkielma 31.1.2012 Helsingin yliopisto Humanistinen tiedekunta Filosofian, historian,
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
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
D B. Harvat hakemistot. Harvat hakemistot
Harvassa hakemistossa on ei ole hakemistomerkintöjä jokaista tietuetta kohden vaan yksi merkintä jotain isompaa kokonaisuutta esimerkiksi sivua tai sivujoukkoa (esim. saman uran sivut) kohti Harvan hakemiston
Koht dialogia? Organisaation toimintaympäristön teemojen hallinta dynaamisessa julkisuudessa tarkastelussa toiminta sosiaalisessa mediassa
Kohtdialogia? Organisaationtoimintaympäristönteemojenhallinta dynaamisessajulkisuudessatarkastelussatoiminta sosiaalisessamediassa SatuMariaPusa Helsinginyliopisto Valtiotieteellinentiedekunta Sosiaalitieteidenlaitos
B + -puut. Kerttu Pollari-Malmi
B + -puut Kerttu Pollari-Malmi Tämä monista on alunperin kirjoitettu sksn 2005 kurssille osittain Luukkaisen ja Nkäsen vanhojen luentokalvojen pohjalta. Maaliskuussa 2010 pseudokoodiesits on muutettu vastaamaan
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
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
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
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
Simulation model to compare opportunistic maintenance policies
Simulation model to compare opportunistic maintenance policies Noora Torpo 31.08.18 Ohjaaja/Valvoja: Antti Punkka Työn saa tallentaa ja julkistaa Aalto-yliopiston avoimilla verkkosivuilla. Muilta osin
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
Julkaisufoorumin kuulumiset
Julkaisufoorumin kuulumiset Suunnittelija Janne Pölönen, TSV Julkaisutiedonkeruuseminaari Saimaan ammattikorkeakoulu 29.8.2016 Julkaisufoorumin kuulumiset Julkaisufoorumin ohjausryhmän kokous 8.6.2016
Computing Curricula 2001 -raportin vertailu kolmeen suomalaiseen koulutusohjelmaan
Computing Curricula 2001 -raportin vertailu kolmeen suomalaiseen koulutusohjelmaan CC1991:n ja CC2001:n vertailu Tutkintovaatimukset (degree requirements) Kahden ensimmäisen vuoden opinnot Ohjelmistotekniikan
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
Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä
hyväksymispäivä arvosana arvostelija Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä Tuomas Husu Helsinki 20.2.2010 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisältö i 1 Johdanto
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.
Katsaus korruption vaikutuksesta Venäjän alueelliseen talouskasvuun ja suoriin ulkomaisiin investointeihin
INSTITUUTIOTTALOUSKASVUNEDELLYTYKSENÄ KatsauskorruptionvaikutuksestaVenäjänalueelliseentalouskasvuunjasuoriin ulkomaisiininvestointeihin2000 2010 AshekMohamedTarikHossain HelsinginYliopisto Valtiotieteellinentiedekunta
Luonnontieteiden popularisointi ja sen ideologia
Luonnontieteiden popularisointi ja sen ideologia Tapauksina Reino Tuokko ja Helsingin Sanomat 1960-luvulla Ahto Apajalahti Helsingin yliopisto Humanistinen tiedekunta Suomen ja Pohjoismaiden historia Pro
Kahden virtualisointiohjelmiston suorituskyvyn testaus (valmiin työn esittely)
Kahden virtualisointiohjelmiston suorituskyvyn testaus (valmiin työn esittely) Jani Laine 31.10.2017 Ohjaaja: DI Jimmy Kjällman Valvoja: Prof. Kai Virtanen Työn saa tallentaa ja julkistaa Aalto-yliopiston
Kierros 4: Binäärihakupuut
Kierros 4: Binäärihakupuut Tommi Junttila Aalto University School of Science Department of Computer Science CS-A1140 Data Structures and Algorithms Autumn 2017 Tommi Junttila (Aalto University) Kierros
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
Tehostettu kisällioppiminen tietojenkäsittelytieteen ja matematiikan opetuksessa yliopistossa Thomas Vikberg
Tehostettu kisällioppiminen tietojenkäsittelytieteen ja matematiikan opetuksessa yliopistossa Thomas Vikberg Matematiikan ja tilastotieteen laitos Tietojenkäsittelytieteen laitos Kisällioppiminen = oppipoikamestari
Tyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet. TIES341 Funktio-ohjelmointi 2 Kevät 2006
Tyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet TIES341 Funktio-ohjelmointi 2 Kevät 2006 Alkuperäislähteitä Philip Wadler & Stephen Blott: How to make ad-hoc polymorphism less ad-hoc,
Laskennallinen yhteiskuntatiede
Laskennallinen yhteiskuntatiede Matti Nelimarkka Helsinki 5.5.2011 LuK tutkielma HELSINGIN YLIOPISTO Tietojenkasittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta
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
CS-A1140 Tietorakenteet ja algoritmit
CS-A1140 Tietorakenteet ja algoritmit Kierros 4: Binäärihakupuut Tommi Junttila Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan laitos Syksy 2016 Sisältö Binäärihakupuut Avainten lisääminen,
Tietokoneen muisti nyt ja tulevaisuudessa. Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu
Tietokoneen muisti nyt ja tulevaisuudessa Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu Yleisesti Muisti on yksi keskeisimmistä tietokoneen komponenteista Random Access Memory on yleistynyt
(a) L on listan tunnussolmu, joten se ei voi olla null. Algoritmi lisäämiselle loppuun:
Tietorakenteet ja algoritmit, kevät 201 Kurssikoe 1, ratkaisuja 1. Tehtävästä sai yhden pisteen per kohta. (a) Invariantteja voidaan käyttää algoritmin oikeellisuustodistuksissa Jokin väittämä osoitetaan
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
Tietorakenteet ja algoritmit Hakurakenteet Ari Korhonen
Tietorakenteet ja algoritmit Hakurakenteet Ari Korhonen 27.10. & 3.11.2015 Tietorakenteet ja algoritmit - syksy 2015 1 8. HAKURAKENTEET (dictionaries) 8.1 Haku (vrt. sanakirjahaku) 8.2 Listat tallennusrakenteina
7. Tasapainoitetut hakupuut
7. Tasapainoitetut hakupuut Tässä luvussa jatketaan järjestetyn sanakirjan tarkastelua esittämällä kehittynyt puutietorakenne. Luvussa 7.1. esitetään monitiehakupuun käsite. Se on järjestetty puu, jonka
Tietorakenteet, laskuharjoitus 6,
Tietorakenteet, laskuharjoitus, 23.-2.1 1. (a) Kuvassa 1 on esitetty eräät pienimmistä AVL-puista, joiden korkeus on 3 ja 4. Pienin h:n korkuinen AVL-puu ei ole yksikäsitteinen juuren alipuiden keskinäisen
! #! %! & #!!!!! ()) +
! #! %! & #!!!!! ()) + Tiedekunta/Osasto Fakultet/Sektion Faculty Humanistinen tiedekunta Laitos Institution Department Taiteiden tutkimuksen laitos Tekijä Författare Author Matti Pesonen Työn nimi Arbetets
SSD-tietoiset hakemistorakenteet
SSD-tietoiset hakemistorakenteet Peitsa Lähteenmäki Helsinki 9.3.2012 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta Fakultet
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ä
Minimilatenssiongelman ratkaisualgoritmeja (valmiin työn esittely)
Minimilatenssiongelman ratkaisualgoritmeja (valmiin työn esittely) Antti Salmela 03.03.2014 Ohjaaja: Harri Ehtamo Valvoja: Harri Ehtamo Työn saa tallentaa ja julkistaa Aalto-yliopiston avoimilla verkkosivuilla.
Bachelor level exams by subject in Otaniemi
Bachelor level exams by subject in Otaniemi 2015-2016 (VT1 means that the place of the exam will be announced later) YOU FIND INFORMATION ABOUT THE PLACE OF THE EXAM IN OTAKAARI 1 U-WING LOBBY (M DOOR)
Hallintomallit Suomen valtionhallinnon tietohallintostrategioissa
Hallintomallit Suomen valtionhallinnon tietohallintostrategioissa Lauri Eloranta Helsingin yliopisto Valtiotieteellinen tiedekunta Viestintä Pro gradu -tutkielma, 2014 Hallintomallit)Suomen)valtionhallinnon)tietohallintostrategioissa
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
Tietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin
TAMPEREEN TEKNILLINEN YLIOPISTO
TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja Tietokonetekniikan laitos TKT-3200 Tietokonetekniikka ASSEMBLER: QSORT 06.09.2005 Ryhmä 00 nimi1 email1 opnro1 nimi2 email2 opnro2 nimi3 email3 opnro3 1. TEHTÄVÄ
Tietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Taulukon edut Taulukon haitat Taulukon haittojen välttäminen Dynaamisesti linkattu lista Linkatun listan solmun määrittelytavat Lineaarisen listan toteutus dynaamisesti linkattuna
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
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,
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
TAMPEREEN TEKNILLINEN YLIOPISTO
TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja Tietokonetekniikan laitos TKT-3200 Tietokonetekniikka ASSEMBLER: QSORT 11.08.2010 Ryhmä 00 nimi1 email1 opnro1 nimi2 email2 opnro2 nimi3 email3 opnro3 1. TEHTÄVÄ
Bachelor level exams by date in Otaniemi
Bachelor level exams by date in Otaniemi 2015-2016 (VT1 means that the place of the exam will be announced later) YOU FIND INFORMATION ABOUT THE PLACE OF THE EXAM IN OTAKAARI 1 U-WING LOBBY (M DOOR) Day
Oppimateriaalin kokoaminen ja paketointi
Oppimateriaalin kokoaminen ja paketointi Pekka Simola Helsinki 14.4.2004 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta/Osasto
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.
58131 Tietorakenteet (kevät 2008) 1. kurssikoe, ratkaisuja
1 Tietorakenteet (kevät 08) 1. kurssikoe, ratkaisuja Tehtävän 1 korjasi Mikko Heimonen, tehtävän 2 Jaakko Sorri ja tehtävän Tomi Jylhä-Ollila. 1. (a) Tehdään linkitetty lista kaikista sukunimistä. Kuhunkin
Muita rekisteriallokaatiomenetelmiä
TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 23. marraskuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe E tiistai 1.12. klo 10 koodigenerointi (ilman rekisteriallokaatiota)
Puuhakemistoista flash-levyllä
Puuhakemistoista flash-levyllä Antti Tikka Espoo 23.10.2009 Seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta/Osasto
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:
Luento 2: Tiedostot ja tiedon varastointi
HELIA 1 (19) Luento 2: Tiedostot ja tiedon varastointi Muistit... 2 Päämuisti (Primary storage)... 2 Apumuisti (Secondary storage)... 2 Tiedon tallennuksen yksiköitä... 3 Looginen taso... 3 Fyysinen taso...
3. Binääripuu, Java-toteutus
3. Binääripuu, Java-toteutus /*-------------------------------------------------------------/ / Rajapinta SearchTree: binäärisen hakupuun käsittelyrajapinta / / Metodit: / / void insert( Comparable x );
Simulation and modeling for quality and reliability (valmiin työn esittely) Aleksi Seppänen
Simulation and modeling for quality and reliability (valmiin työn esittely) Aleksi Seppänen 16.06.2014 Ohjaaja: Urho Honkanen Valvoja: Prof. Harri Ehtamo Työn saa tallentaa ja julkistaa Aalto-yliopiston
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
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
A TIETORAKENTEET JA ALGORITMIT KORVAAVAT HARJOITUSTEHTÄVÄT 3, DEADLINE KLO 12:00
A274101 TIETORAKENTEET JA ALGORITMIT KORVAAVAT HARJOITUSTEHTÄVÄT 3, DEADLINE 9.2.2005 KLO 12:00 PISTETILANNE: www.kyamk.fi/~atesa/tirak/harjoituspisteet-2005.pdf Kynätehtävät palautetaan kirjallisesti
Hakemistorakenteet. R & G Chapter Tietokannan hallinta, kevät 2006, Jan 1
Hakemistorakenteet R & G Chapter 10 16.02.06 Tietokannan hallinta, kevät 2006, Jan 1 Hakemistotyypeistä Hakemistomerkintä sisältää hakemistoavaimen (indexing key) muodostusperustan määrittelemänä tietueesta
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
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
811312A Tietorakenteet ja algoritmit II Perustietorakenteet
811312A Tietorakenteet ja algoritmit 2017-2018 II Perustietorakenteet Sisältö 1. Johdanto 2. Pino 3. Jono 4. Lista 811312A TRA, Perustietorakenteet 2 II.1. Johdanto Tietorakenne on tapa, jolla algoritmi
Tiedekunta/Osasto Fakultet/Sektion Faculty Valtiotieteellinen tiedekunta
Tiedekunta/Osasto Fakultet/Sektion Faculty Valtiotieteellinen tiedekunta Laitos Institution Department Politiikan ja talouden tutkimuksen laitos Tekijä Författare Author Virta, Mikko Antero Työn nimi Arbetets
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
TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2
TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos TKT-3200 Tietokonetekniikka I Harjoitustyö 4: Cache, osa 2.. 2010 Ryhmä Nimi Op.num. 1 Valmistautuminen Cache-työn toisessa osassa
TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto
Indeksin luonti ja hävitys TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto Komentoa ei ole standardoitu ja niinpä sen muoto vaihtelee järjestelmäkohtaisesti Indeksi voidaan
DBN Mitä sillä tekee? Dynaamisten Bayes-verkkojen määrittely aikasarja-analyysissä Janne Toivola jtoivola@iki.fi
DBN Mitä sillä tekee? Dynaamisten Bayes-verkkojen määrittely aikasarja-analyysissä Janne Toivola jtoivola@iki.fi Historiaa Bayesin kaavan hyödyntäminen BN-ohjelmistoja ollut ennenkin Tanskalaisten Hugin
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
f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))
Määritelmä: on O(g(n)), jos on olemassa vakioarvot n 0 > 0 ja c > 0 siten, että c g(n) kun n > n 0 O eli iso-o tai ordo ilmaisee asymptoottisen ylärajan resurssivaatimusten kasvun suuruusluokalle Samankaltaisia
oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja
Tietokantojen hakemistorakenteet Hakemistorakenteiden (indeksien) tarkoituksena on nopeuttaa tietojen hakua tietokannasta. Hakemisto voi olla ylimääräinen oheishakemisto (secondary index), esimerkiksi