Kuva 1: J+-puun rakenne [HXS09].
|
|
- Taisto Niemi
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 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 nykyään halvoissakin tietokoneissa on gigatavuja keskusmuistia. Tämän johdosta tietokannat, jotka eivät aikaisemmin mahtuneet kuin kovalevyille, mahtuvat nyt kokonaan tai ainakin suurelta osin keskusmuistiin. Useat yritykset ja tutkimuslaitokset ovatkin alkaneet kehittämään keskusmuistitietokantajärjestelmiä [HXS07]. Näiden järjestelmien on on tarkoitus tarjota parempaa suoritustehoa kuin perinteiset tietokantajärjestelmät. Aivan kuten perinteisissäkin tietokantajärjestelmissä keskusmuisti tietokantajärjestelmissä tiedolle luotavat hakemistot ovat tärkeitä järjestelmän tehokkuuden kannalta. Muun muassa yhden arvon kyselyt sekä osavälikyselyt hyötyät niistä. Alemmalla tasolla tarkasteltuna nämä operaatiot koostuvat tietyn avaimen hakemisesta tai tietyn hakemiston osan lukemisesta. Molemman operaatioita, jotka hyödyntävät hakemistoja. Hakemistojen luonnissa käytettävät tietorakenteet ovatkin olleet kehityksen kohteena. Rakenteina on käytetty T-puuta sekä B+-puun eri variaatioita. Näistä T-puu on ollut käytössä useissa keskusmuistitietokantajärjestelmissä. On kuitenkin väitetty, ettei T-puu käyttäisi tehokkaasti hyväkseen välimuistia [HXS07]. Tietokoneiden kehittyessä prosessoreiden nopeus on kasvanut nopeammin kuin keskusmuistin nopeus [HXS09] [CGM01]. Prosessoreiden nopeus on kasvanut noin 60% joka vuosi kun keskusmuisti on nopeutunut vain noin 10%. Tämä on ennestään lisännyt välimuistin tehokkaan käyttämisen tärkeyttä. Perinteisissä tietokantajärjestelmissä jopa puolet ajasta voi mennä hukkaan välimuistihutien takia. Keskusmuistitietokantajärjestelmissä tämä aika on vieläkin enemmän. Vaikka B+-puu käyttävätkin välimuistia tehokkaammin hyväksi kuin T-puut, ne ovat siitä huolimatta varsin huonoja välimuistin käytössä. B+-puusta onkin kehitetty variantteja, jotka ottavat välimuistin paremmin huomioon. Näitä variantteja ovat CSB+puu sekä pb+-puu. Esimerkiksi hakuoperaatiossa välimuistihutien määrä on suhteessa puun korkeuteen, joten CBS+-puussa on pyritty pienentämään puun korkeutta muun muassa lisäämällä solmussa olevien avainten määrää. Yhdeksi vaihtoehdoksi keskusmuistitietokantajärjestelmien hakemistojen tietorakenteeksi on esitetty J+puuta [HXS07] [HXS09]. Sen on tarkoitus olla tarpeeksi tehokas keskusmuistitietokantajärjestelmien tarkoituksiin ja käyttää välimuistia
2 tehokkaasti hyväkseen. Puu perustuu Judy-nimiseen digitaaliseen puuhun, joka muodostaa J+-puun yläosan (Kuva 1). Judy-taulukon alla J+-puussa on lehtisolmut, jotka B+-puun tapaan sisältävät puun kaikki tietoalkiot. Judy-taulukkoon tallennetaan vain viitteet lehtisolmuihin. Tämä parantaa J+-puun tehokkuutta osavälikyselyissä verrattuna Judyyn. Kuva 1: J+-puun rakenne [HXS09]. Judy-taulukko on digitaalinen puu, joka tulkitsee puuhun syötettävät avaimet tavuina, joiden avulla puuta selataan sen eri tasoilla. Käytettäessä 32-tavuisia avaimia puussa on enintään neljä tasoa, 64-tavuisilla avaimilla tasoja on kahdeksan. Judy-puuhun tehtävät hakuoperaatiot ovat tehokkaita. Puun korkeus ei suoraan riipu siihen tallennettavien alkioiden määrästä eikä välimuistihuteja synny paljon. Nämä ominaisuudet siirtyvät myös J+-puuhun. J+-puusta on myös versio nimeltä pj+-puu [HXS09]. Tämän version on tarkoitus ennestäänkin parantaa J+-puun välimuistitehokkuutta. pj+-puu on muuten J+-puun kaltainen, mutta siinä käytetään esihakemista (prefetch). Tavallisessa J+-puussa on lehtisolmuissa osoitin vain seuraavaan ja edelliseen solmuun. Esihaetussa puussa lehtisolmusta on kuitenkin osoitin myös johonkin kauempana olevaan solmuun. Tämä parantaa välimuistitehokkuutta piilottamalla välimuistihuteja. Tässä seminaariraportissa tullaan esittelemään J+-puun rakennetta ja toimintaa. Jotta tämä olisi mahdollista, seuraavassa luvussa luodaan katsaus Judy-puuhun, joka on ratkaiseva osa J+-puuta. J+-puusta esitellään myös esihakemista tukeva versio pj+-puu. Raportin lopussa luodaan myös lyhyt katsaus testituloksiin, jotka osoittavat J+-puun olevan kilpailevia hakupuita tehokkaampi tietorakenne.
3 Judy-puu Judy-puu on ratkaiseva osa J+-puuta. Se toimii puun yläosana ja sen ansiota ovat monet J+-puun hyvistä ominaisuuksista. Tässä luvussa esitellään Judyn keskeisimpiä ominaisuuksia, joiden avulla on parempi ymmärtää J+-puun toimintaa. Judy-puun ominaisuudet Judy-puun on kehittänyt Douglas Baskins. Se on 256-haarainen digitaalinen puu (kuva 2). Puun avaimet tulkitaan bitteinä ja jaetaan tavuiksi, joiden avulla puussa liikutaan eteen päin [HXS09]. Tavun perusteella valitaan tasolta oikea haara, joka käytännössä on osoitin seuraavalle tasolle. Avaimen ensimmäisen tavun perusteella valitaan haara puun ensimmäisellä tasolla ja toisen tavun perusteella valitaan haara puun toisella tasolla. Tätä jatketaan kunnes päästään puun loppuun. 32-bittisiä avaimia käytettäessä puussa on enintään neljä tasoa ja 64-bittisillä avaimilla kahdeksan tasoa. Puun toiminta on nopeata, koska jokaisella tasolla tehdään vain kevyitä operaatioita. Puun heikkoutena on kuitenkin, että se vaatii paljon tilaa sillä puussa on osoittimet myös sellaisille avaimille, joita puussa ei ole. Kuva 2: Digitaalisen puun rakenne [HXS09]. Judy-puun yhteydessä käytetään muutamaa arvoa kuvaamaan puun ominaisuuksia [Bas02]. Laajuus (expanse) on mahdollisten avainten joukko. Esimerkiksi kuvan 2 puussa laajuus on juuresta tarkasteltuna Alemmilla tasoilla laajuus pieninee ja voi esimerkiksi alimmalla tasolla olla Alemmilla tasoilla laajuutta kutsutaan myös alilaajuudeksi. Puun asutus (population) taas on puussa olevien avainten määrä. Asutusta voidaan myös tarkastella jossakin alipuussa. Kun tarkastellaan sekä laajuutta että asutusta
4 jossakin puussa saadaan laskettua myös puun tiheys (density), joka on asutus jaettuna laajuudella. Tiheys on siis jokin luku välillä 0 1, jolloin 0 on tyhjä puu ja 1 puu, johon on syötetty kaikki mahdolliset avaimet. Judy-puu on suunniteltu ennen kaikkea tehokkaaksi. Sitä ei ole suunniteltu yksinkertaiseksi, vaan sen rakenne on optimoitu mahdollisimman tehokkaaksi. Tavoitteena on ollut välttää tietojen hakemista välimuistiin. Haku keskusmuistista välimuistiin kestää konekäskyn ajan. Jos siis haku pystytään välttämään alle viidelläkymmenellä konekäskyllä, tehdään näin. Myös Judy-puun rakenne tukee välimuistin tehokasta käyttöä. Binääripuussa on paljon enemmän tasoja, minkä takia välimuistiin joudutaan hakemaan enemmän tietoa kuin Judyssa. B-puu taas vaatii käymään läpi kaikki solmut, mikä heikentää sen välimuistitehokkuutta. Judyn tehokkuutta parantaa myös se, ettei sitä tarvitse tasapainottaa puun kasvaessa. Myös Judy-puun tilantarve on pyritty saamaan mahdollisimman pieneksi. Siinä missä tavallisissa digitaalisissa puissa jokainen solmu on samanlainen, käytetään Judyssa erilaisia solmuja tilanteesta riippuen. Judyn tilantarve onkin saatu hyvin pieneksi ja vain tiivisti täytetty taulukko käyttää tilaa tehokkaammin kuin Judy. Judyn rakenne Judy-puita on useita erilaisia. JudyL ja JudySL tyyppisiä käytetään J+-puussa [HXS09]. Tämän lisäksi on olemassa JudyHS ja Judy1. Seuraavaksi esitellään JudyL puun rakennetta tarkemmin. Se tallentaa 32-bittisiä arvoja 32-bittisillä avaimilla ja sitä käytetään JudySL-puun taustalla. JudySL pystyy tallentamaan pidempiä avaimia kuten merkkijonoja. Käytännössä se on taulukko JudyL-puita. JudyL:ssä käytetään useita eri tietorakenteita, joiden avulla sen tehokkuutta on pyritty optimoimaan. Näistä tärkein on Judy-osoitin, jonka avulla puu haarautuu eri tasojen välillä. Judy-osoitin koostuu kahdeksasta tavusta. Ensimmäiset neljä tavua ovat osoite. Tämän jälkeen seuraavissa kolmessa tavussa tulee tieto tavuista, jotka yhdistävät kaikkia osoittimen alipuussa olevia avaimia, sekä alipuussa olevien avainten määrä. Judy-osoittimen viimeinen tavu kertoo, minkä tyyppiseen solmuun osoitin osoittaa. Mahdollisia tyyppejä ovat tyhjä alijoukko, haara, lehtisolmu tai välitön Judy-osoitin. Näistä haara tarkoittaa käytännössä sisäsolmua. Judyssä haaroja on useita eri tyyppejä. Lineaariseen haaraan mahtuu korkeintaan seitsemän Judy-osoitinta. Lineaarinen haara on 64 tavun mittainen. Haaraan kuuluu tieto siinä olevien osoittimien määrästä, kuhunkin osoittimeen johtava avaimen tavu,
5 sekä itse osoittimet. Bittikarttahaaraan mahtuu lineaarista haaraa enemmän osoittimia. Se jakautuu kahteen osaan. Ensimmäisen osan muodostavat bittikartat, joissa on kerrottu, mihin tavuihin liittyviä osoittimia haarassa on. Toisessa osassa ovat listat haaran osoittimista. Kolmas mahdollinen haaran tyyppi on tiivistämätön haara, jota käytetään, jos haarassa on paljon avaimia. Se on pelkkä taulukko, jossa on 256 Judy-osoitinta. Osoittimet ovat siis kaikille mahdollisille avaimen arvoille, vaikka avain johtaisi tyhjään alipuuhun. Varsinaisia avaimen tavuja ei ole tallennettu taulukkoon, vaan oikea osoitin lasketaan sen paikasta taulukossa. Myös lehtisolmuja on Judyssa useita erilaisia. Jos puussa on alle 32 avainta, käytetään juuritason lehtisolmua. Se sijaitsee suoraan juuressa ja siinä on tieto avainten määrästä sekä avaimet ja arvot. Lehtisolmu voi myös olla välitön. Tällöin lehtisolmu on itsessään Judy-osoitin. Arvo tallennetaan joko suoraan osoittimeen tai osoittimessa on linkki kenttään, jossa arvo on. Lineaarisessa lehtisolmussa taulukko solmuun kuuluvista avaimista sekä lista arvoista. Tällainen lehtisolmu on korkeintaan 256-tavun kokoinen. Neljäs mahdollinen lehtisolmun tyyppi on bittikarttalehtisolmu. Sitä voidaan käyttää vasta puun alimmalla tasolla kun avaimesta on vain tavu jäljellä. Bittikarttalehtisolmu on samanlainen kuin bittikarttahaara. Ainoa ero on, että siihen on tallennettu Judy-osoittimien sijaan puuhun sijoitettuja arvoja. Judy-puu muodostuu siis yllä esitetyistä osista. Puu valitsee erityyppisistä haaroista ja lehtisolmuista tilanteeseen sopivimman sen mukaan, kuinka monta avainta kyseisessä solmussa on. Jos haarassa on korkeintaan 7 avainta, käytetään lineaarista haaraa. Haaroissa joissa on paljon avaimia käytetään tiivistämätöntä haaraa. Näiden välissä, keskitiheälle haaroille, on tarkoitettu bittikarttahaara. Lehtisolmuista juuritason solmu on tarkoitettu hyvin pienille, alle 31 avainta tallentaville, puille. Muita lehtisolmun tyyppejä käytetään sen mukaan, kuinka monta avainta on lehtisolmuun tallennettu. Tyypit ovat siis pienimmästä suurimpaan välitön lehtisolmu, lineaarinen lehtisolmu ja bittikarttalehtisolmu. Judy-puun hyötyjä ovat kevyet hakuoperaatiot sekä pieni muistin kulutus. Nämä ominaisuudet tekevät Judys-puusta houkuttelevan tietorakenteen tietokannan hakemistoksi. Judy-puussa on kuitenkin myös heikkouksia, joiden takia se ei suoraan sovi hakemiston tietorakenteeksi. Osavälikyselyitä ei pysty kunnolla toteuttamaan siinä.
6 Judy-puuhun ei myöskään voi tallentaa useita saman avaimen omaavia avain-arvopareja. Nämä puutteet korjataan J+-puussa ilman, että Judy-puun tehokkuus kärsii. J+-puu J+-puu on Judy-puun inspiroima tietorakenne, joka pyrkii ratkaisemaan Judy-puun puutteita. Näin sitä pystytään käyttämään tietokantajärjestelmissä hakemistojen tietorakenteena. J+-puusta on myös kehitetty esihaettu versio pj+-puu, jonka tarkoitus on ennestäänkin tehostaa J+-puun välimuistin käyttöä [HXS09]. J+-puun rakenne J+-puu koostuu kahdesta osasta. Puun yläosan muodostaa Judy-puu ja puun alaosan lehtisolmut (kuva 1). Puun yläosan Judy-puuhun ei tallenneta arvoja vaan pelkästään viitearvoista ja osoittimista. Kaikki avaimet tallennetaan lehtisolmuihin nousevassa järjestyksessä. Jokaisen solmun pienin avain tallennetaan Judy-puuhun yhdessä lehtisolmuun osoittavan osoittimen kanssa. Tämä avain toimii nyt Judy-puussa viitearvona, joka osoittaa lehtisolmuun, jonka kaikki avaimet ovat suurempia tai yhtä suuria kuin viitearvo. Kaikki J+-puun avain-osoitin-parit tallennetaan lehtisolmuihin. Näistä osoitin johtaa tietoalkioon, joka vastaa avainta. Jokaisessa solmussa on tallennettuna enintään m paria ja vähintään m/2 paria. Lehtisolmut ovat linkitetty siten, että jokaisesta solmusta on linkki edelliseen ja seuraavaan solmuun. Tällä tavalla J+-puun lehtisolmut muistuttavat B+-puuta ja tarjoavat hyvän tehokkuuden osavälikyselyissä. J+-puun operaatiot Seuraavaksi esitellään, kuinka J+-puun tärkeimmät operaatiot on toteutettu [HXS09]. J+-puun hakualgoritmi alkavat Judy-puun tutkimisella. Ensiksi etsitään haluttua avainta vastaavaa viitearvoa. Jos sitä ei löydy, palautetaan käyttäjälle, ettei haluttua alkiota löytynyt. Käytännössä tämä tapahtuu, kun haluttu avain on pienempi kuin pienin puuhun tallennettu avain. Kun oikea viitearvo löytyy, siirrytään arvoa vastaavaan lehtisolmuun. Tätä lehtisolmua kutsutaan rajaavaksi solmuksi. Lehtisolmusta haluttua avainta etsitään binäärihaulla. Haun jälkeen käyttäjälle kerrotaan haun lopputuloksesta. Osavälikyselyissä haetaan ensiksi kyselyn alarajaa vastaavan alkio sisältävä lehtisolmu. Tämän jälkeen muut osaväliin kuuluvat alkiot
7 haetaan selaamalla lehtisolmuja solmujen välisten linkkien avulla. Lisäysalgoritmi aloitetaan etsimällä lehtisolmu, joka on lisättävän avaimen rajaava solmu. Jos oikeaa viitearvoa ei löydy, lisätään alkio ensimmäiseen lehtisolmuun, koska tällöin lisättävä avain on pienempi kuin yksikään puussa valmiiksi oleva avain. Tällöin myös Judy-puussa olevaa pienintä viitearvoa tulee päivittää. Kun rajaava solmu löydetään lisätään alkio siihen, jos solmu ei ole täynnä. Solmun ollessa täynnä se joudutaan halkaisemaan. Käytännössä solmun loppupää muodostaa uuden solmun joka lisätään alkuperäisen solmun perään. Uuden solmun viitearvo lisätään myös Judy-puuhun. Poistoalgoritmi alkaa halutun alkion etsimisellä. Jos alkiota ei löydy, palautetaan tieto käyttäjälle. Jos alkio löytyy ja lehtisolmussa, jossa alkio on, on enemmän kuin m/2 alkiota, poistetaan kyseinen alkio. Vaikka kyseinen alkio olisi solmun pienin, ei Judypuussa olevaa viitearvoa tarvitse päivittää. Jos poistettava alkio sijaitsee solmussa, jossa on poiston jälkeen vähemmän kuin m/2 alkiota, tarkastelemme viereisiä solmuja. Jos solmua edeltävässä solmussa on yli m/2 alkiota, siirretään sen suurin arvo vajaaseen solmuun ja päivitetään Judy-puun viitearvoa. Jos tämä ei onnistu tarkastellaan vajaata alkiota seuraavaa solmua. Jos siinä on yli m/2 alkiota, siirretään sen pienin alkio vajaaseen solmuun ja päivitetään Judypuun viitearvoa. Muussa tapauksessa vajaa solmu yhdistetään joko sitä edeltävään tai sitä seuraavaan solmuun. Tämän jälkeen päivitetään Judy-puun viitearvot vastaamaan uutta järjestystä. J+-puu toisinnetuilla avaimilla Judy-puuhun ei voida tallentaa kahta alkiota, joiden avain on sama. J+-puuhun tämän ominaisuuden saa kuitenkin toteutettua. Tämä on tärkeätä, jotta J+-puuta voidaan käyttää tietokantajärjestelmissä hakemistojen toteutukseen. Jotta J+-puuhun voidaan tallentaa toisinnettuja avaimia, täytyy Judy-puusta lehtisolmuihin viittaavien viitearvojen tulkintaa muuttaa. Nyt viitearvo viittaa lehtisolmun pienimpään uuteen arvoon. Tällä tarkoitetaan arvoa, jota ei esiinny edeltävässä solmussa. Esimerkiksi, jos solmussa 1 on arvot 3, 5, 7 ja solmussa 2 arvot 7, 7, 9, on viitearvo ensimmäiseen solmuun 3 ja jälkimmäiseen 9. Jos jossakin solmussa ei ole yhtään uutta arvoa, ei siihen solmuun osoita yhtään viitettä Judy-puusta. Myös uuden arvon lisäämisessä on otettava huomioon toisinnetut avaimet. Jos esimerkiksi edellä esitettyihin solmuihin yritetään lisätä arvo 8, päätyy normaali algoritmi ensimmäiseen solmuun, vaikka arvo tulisi lisätä
8 jälkimmäiseen solmuun. pj+-puu Kuten jo edellä esiteltyjä tietorakenteita tarkasteltaessa on huomattu, on välimuistin tehokas käyttö tärkeässä osassa koko tietorakenteen tehokkuuden kannalta. Esimerkiksi perinteisen B+-puu suoritusajasta yli puolet menee hukkaan välimuistihutien johdosta. Tämän takia on kehitetty erilaisia hakupuita, jotka pyrkivät optimoimaan välimuistinkäytön [CGM01]. Esimerkiksi CSS-puussa lapsisolmujen osoitteet lasketaan suoraan isäntäsolmujen osoitteista, mikä vähentää tarvetta tuoda tietoa välimuistiin. Näin myös välimuistihutien määrä vähenee. Tämä puu ei kuitenkaan tue päivitysoperaatioita, joten se sopii vain rajattuihin käyttötarkoituksiin. CSB+-puu taas on B+-puun versio, jossa jokaisessa sisäsolmussa on vain yksi osoitin, joka johtaa lapsisolmujen joukkoon. CSB+-puun hakuoperaatioiden tehokkuus on jonkin verran parempaa kuin tavallisen B+-puun. Se kuitenkin on selkeästi hitaampi päivitysoperaatioissa. Myös J+-puun välimuistitehokkuutta on pyritty parantamaan uusilla versioilla. Yhden arvon kyselyissä ei ole suuresti parantamisen varaa, koska hakun etenemistä ei voida etukäteen ennustaa. Haku päättyy yhtä todennäköisesti kaikkiin solmuihin. Toiseksi myös J+-puun yläosana toimiva Judy-puu on jo itsessään tehokas käyttämään välimuistia. Sen sijaan osavälikyselyiden tehokkuutta pystytään parantamaan. Haettuaan osavälin ensimmäisen alkion, lehtisolmuja aletaan selaamaan eteen päin. Tällöin on siis etukäteen tiedossa, mitä solmuja tullaan tarvitsemaan. On siis mahdollista tuoda välimuistiin jo valmiiksi tietoa, jota tullaan vasta tulevaisuudessa tarvitsemaan. Näin pystymme kätkemään osan välimuistihudeista, kun prosessori pystyy jatkamaan operaatioita alkioilla, jotka on jo valmiiksi tuotu välimuistiin. J+puussa on kuitenkin ongelmana, että lehtisolmuista on lenkit vain edelliseen ja seuraavaan solmuun. Jos ajattelemme tilannetta, jossa olemme lukemassa solmua n ja haluaisimme tuoda solmun n+3 jo ennalta välimuistiin. Jotta solmuun n+3 päästään käsiksi pitää ensiksi lukea solmu n+2. Tämä taas edellyttää solmun n+1 lukemista. Tämä taas sotii koko esihakemisen periaatteita vastaan. pj+-puu on J+-puu esihakemista tukeva versio. pj+-puu on esitelty tutkijoiden Hua, Xiao-Yong ja Shan vuonna 2009 julkaisemassa artikkelissa [HXS09]. pj+-puu ratkaisee
9 ongelman lisäämällä jokaiseen lehtisolmuun osoittimen esihakemista varten. Toinen mahdollinen tapa olisi tallentaa osoittimet taulukkoon, kuten pb+-puussa on tehty. Suoraan solmuun tallennettaessa kuitenkin saavutetaan parempi suorituskyky. J+-puun hakualgoritmit eivät muutu pj+-puussa suorituksen kuin tehokkuudenkaan suhteen. Lisäys- ja poistoalgoritmien taas tulee muokata myös muiden solmujen esihakuosoittimia. Muokattavien solmujen määrä riippuu siitä, kuinka pitkälle esihakuosoitin osoittaa. Sopivaa esihaun etäisyyttä voidaan kaavoilla, mutta on todettu, että etäisyyden ollessa suhteellisen pieni, tietorakenteet toimivat parhaiten [CGM01]. J+-puun suorituskyky Tässä luvussa tarkastellaan J+-puun ja pj+-puun suorituskykyä ja vertaillaan sitä muiden vastaavien tietorakenteiden suorituskykyyn. Suuri ero J+-puulla, pj+-puulla sekä Judy-puulla muihin vastaaviin hakupuihin, kuten B+-puu, pb+-puu, T-puu sekä CSB+-puu, nähden on, että niiden korkeus on rajoitettu. Judy-puu voi olla enintään neljän tason korkuinen, J+-puu sekä pj+-puu voivat olla enintään viiden korkuisia. Tällöin myös puiden suorittaman vertailuoperaatioiden määrä hakuoperaatiossa on vakio. Muiden hakupuiden korkeus kasvaa niihin lisättäessä alkioita. Tämä näkyy myös hakualgoritmin suorittamien vertailuiden määrässä. Esimerkiksi, kun n on puussa olevien alkioiden määrä, B+-puu sekä pb+puu suorittavat O log n 2 vertailuoperaatiota hakualgoritmin aikana. Myös hakualgoritmin aikana tapahtuvien välimuistihutien määrä kasvaa näissä puissa puuhun lisättäessä alkioita. Judy-puussa taas huonoimmassa tapauksessa, jossa puun kaikki sisäsolmut ovat bittikartta haaroja sekä lehtisolmu lineaarinen haara, syntyy hakualgoritmin aikana 9 välimuistihutia. J+-puun suoritustehoa on tutkittu myös kokeellisesti [HXS09]. Puiden suoritustehoa mitattiin suorittamalla puihin hakuoperaatioita. Puiden suorituskykyä testattiin eri avainten määrillä, jotka vaihtelivat ja välillä. Puihin suoritettaessa yksittäisten arvojen hakuja huomattiin, että J+-puu sekä pj+-puu suoriutuvat selvästi B+-puuta, pb+puuta, CSB+-puuta ja T-puuta nopeammin. Kun J+puu käytti hakuoperaatioihin aikaa 600ms 900ms, käytti B+-puu variantteineen aikaa 800ms 1350ms. T-puulla aikaa kului vielä selvästi tätäkin enemmän. Yksittäisiä avaimia etsittäessä esihakemista hyödyntävä pj+-puu ei saa mitään etua ja se suoriutuukin hauista yhtä nopeasti kuin tavallinen J+-puu. Osavälikyselyitä tehtäessä esihakemisesta tulee kuitenkin hyötyä. Siinä missä pj+-puu ja pb+-puu kuluttavat
10 kyselyyn alle 40ms neljälläkymmenellä miljoonalla avaimella, menee J+-puulla ja B+puulla aikaa kyselyyn tuplasti kauemmin. J+puu pärjää myös hyvin vertailtaessa tietorakenteiden tilantarvetta. Sitä testattiin syöttämällä puihin neljäkymmentä miljoonaa. Tällöin J+-puu käytti tilaa 453,6 MB, B+-puu 456,8 MB, pj+-puu 457,2 MB, pb+-puu 460,4 MB, T-puu 482,4 MB sekä CSB+-puu 645,2 MB. Yhteenveto J+-puu on tehokas hakupuu, joka vastaa toimii kilpailijana monille perinteisille hakupuille, kuten B+-puulle. Se käyttää hyväkseen Judy-puuta, joka on tehokkaaksi optimoitu digitaalinen puu. J+-puu lisää Judy-puuhun ominaisuuksia, jotka mahdollistavat sen käytön tietokantajärjestelmissä hakemistojen toteutuksessa. Näitä ominaisuuksia ovat mahdollisuus selata lehtisolmuja solmujen välisten linkkien avulla sekä mahdollisuus käyttää samaa avainta useammalle alkiolle. Sekä J+-puun että Judypuun suunnittelussa on panostettu välimuistin tehokkaaseen käyttöön. Tätä tehokkuutta pyrkii viemään vielä pidemmälle pj+-puu, joka tukee esihakemista. Osittain juuri välimuistitehokkuuden ansiosta J+-puu sekä pj+-puu ovat hyvin tehokkaita tietorakenteita. Lähteet Bas02 CGM01 HXS09 HXS07 Baskins D, Judy functions C libraries for creating and accessing dynamic arrays, Chen S, Gibbons P. B., Mowry T. C., Improving index performance through prefetching. In proc. of the SIGMOD 2001 Conference. 2001, sivut Hua Luan, Xiaoyong Du, Shan Wang: Prefetching J -Tree: A Cache- Optimized Main Memory Database Index Structure. J. Comput. Sci. Technol. (JCST) 24(4): (2009) Hua Luan, Xiaoyong Du, Shan Wang, Yongzhi Ni, Qiming Chen: J+- Tree: A New Index Structure in Main Memory. DASFAA 2007:
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
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
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
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
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 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
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
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
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
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 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
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
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
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
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
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
811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu
1312A Tietorakenteet ja algoritmit, 2018-2019, Harjoitus 5, Ratkaisu Harjoituksen aihe ovat hash-taulukot ja binääriset etsintäpuut Tehtävä 5.1 Tallenna avaimet 10,22,31,4,15,28,17 ja 59 hash-taulukkoon,
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 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
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
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.
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,
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 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
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
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
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
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
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ätään avainarvo 6, joka mahtuu lehtitasolle:
Helsingin Yliopisto, Tietojenkäsittelytieteen laitos Tietokannan hallinta, kurssikoe 11.6.2004, J. Lindström Ratkaisuehdotuksia 1. Hakemistorakenteet, 15p. Tutkitaan tyhjää B+-puuta, jossa jokaiselle hakemistosivulle
811312A Tietorakenteet ja algoritmit V Hash-taulukot ja binääriset etsintäpuut
811312A Tietorakenteet ja algoritmit 2018-2019 V Hash-taulukot ja binääriset etsintäpuut Sisältö 1. Hash-taulukot 2. Binääriset etsintäpuut 811312A TRA, Hash-taulukot, binääripuut 2 V.1 Hash-taulukot Käytetään
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
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
(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
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 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
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
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()
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
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
Algoritmit 1. Luento 5 Ti Timo Männikkö
Algoritmit 1 Luento 5 Ti 24.1.2017 Timo Männikkö Luento 5 Järjestetty lista Järjestetyn listan operaatiot Listan toteutus taulukolla Binäärihaku Binäärihaun vaativuus Algoritmit 1 Kevät 2017 Luento 5 Ti
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
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
811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu
1312A Tietorakenteet ja algoritmit, 2016-2017, Harjoitus 5, Ratkaisu Harjoituksen aihe ovat hash-taulukot ja binääriset etsintäpuut Tehtävä 5.1 Tallenna avaimet 10,22,31,4,15,28,17 ja 59 hash-taulukkoon,
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla
Lisätään avainarvo 1, joka mahtuu lehtitasolle:
Helsingin Yliopisto, Tietojenkäsittelytieteen laitos Tietokannan hallinta, kurssikoe 14.5.2004, J. Lindström Ratkaisuehdotuksia 1. Hakemistorakenteet, 15p. Tutkitaan tyhjää B+-puuta, jossa jokaiselle hakemistosivulle
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ä
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
1.1 Tavallinen binäärihakupuu
TIE-20100 Tietorakenteet ja algoritmit 1 1 Puurakenteet http://imgur.com/l77fy5x Tässä luvussa käsitellään erilaisia yleisiä puurakenteita. ensin käsitellään tavallinen binäärihakupuu sitten tutustutaan
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
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.
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
Johdatus graafiteoriaan
Johdatus graafiteoriaan Syksy 2017 Lauri Hella Tampereen yliopisto Luonnontieteiden tiedekunta 126 Luku 3 Puut 3.1 Puu 3.2 Virittävä puu 3.3 Virittävän puun konstruointi 3.4 Minimaalinen virittävä puu
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
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
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...
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:
14 Tasapainotetut puurakenteet
TIE-20100 Tietorakenteet ja algoritmit 308 14 Tasapainotetut puurakenteet Binäärihakupuu toteuttaa kaikki dynaamisen joukon operaatiot O(h) ajassa Kääntöpuolena on, että puu voi joskus litistyä listaksi,
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
18. Abstraktit tietotyypit 18.1
18. Abstraktit tietotyypit 18.1 Sisällys Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:
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,
Stabiloivat synkronoijat ja nimeäminen
Stabiloivat synkronoijat ja nimeäminen Mikko Ajoviita 2.11.2007 Synkronoija Synkronoija on algoritmi, joka muuntaa synkronoidun algoritmin siten, että se voidaan suorittaa synkronoimattomassa järjestelmässä.
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ä
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
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
Algoritmit 1. Luento 10 Ke Timo Männikkö
Algoritmit 1 Luento 10 Ke 14.2.2018 Timo Männikkö Luento 10 Algoritminen ongelmanratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Lisäyslajittelu Valintalajittelu Permutaatiot
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
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
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
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
VÄLIMUISTITIETOISET PUSKURIT. Markus Montonen
VÄLIMUISTITIETOISET PUSKURIT Markus Montonen Sisällys 1. Johdanto 2. L1-välimuistin puskuroinnin ongelma ja ratkaisuehdotus 3. L1-välimuistin puskurioperaation kokeellinen tutkiminen 4. L2-välimuistin
4 Tehokkuus ja algoritmien suunnittelu
TIE-20100 Tietorakenteet ja algoritmit 52 4 Tehokkuus ja algoritmien suunnittelu Tässä luvussa pohditaan tehokkuuden käsitettä ja esitellään kurssilla käytetty kertaluokkanotaatio, jolla kuvataan algoritmin
Tietokannan indeksointi: B puun ja hajautusindeksin tehokkuus
Tietokannan indeksointi: B puun ja hajautusindeksin tehokkuus Tuomas Kortelainen 28.4.2008 Joensuun yliopisto Tietojenkäsittelytiede Pro gradu tutkielma Tiivistelmä Tässä tutkielmassa esitellään tietokannan
Yhtälöryhmät 1/6 Sisältö ESITIEDOT: yhtälöt
Yhtälöryhmät 1/6 Sisältö Yhtälöryhmä Yhtälöryhmässä on useita yhtälöitä ja yleensä myös useita tuntemattomia. Tavoitteena on löytää tuntemattomille sellaiset arvot, että kaikki yhtälöt toteutuvat samanaikaisesti.
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
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
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 17.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 17.2.2010 1 / 41 Sanakirja Monissa sovelluksissa on tallennettava rakenteeseen avain arvo-pareja. Myöhemmin rakenteesta
Paikkatiedon käsittely 6. Kyselyn käsittely
HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Paikkatiedon käsittely 6. Kyselyn käsittely Antti Leino antti.leino@cs.helsinki.fi 1.2.2007 Tietojenkäsittelytieteen laitos Kysely indeksin
Tarkennamme geneeristä painamiskorotusalgoritmia
Korotus-eteen-algoritmi (relabel-to-front) Tarkennamme geneeristä painamiskorotusalgoritmia kiinnittämällä tarkasti, missä järjestyksessä Push- ja Raise-operaatioita suoritetaan. Algoritmin peruskomponentiksi
T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )
T-79144 Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet 11-22) 26 29102004 1 Ilmaise seuraavat lauseet predikaattilogiikalla: a) Jokin porteista on viallinen
useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero
Alkioiden avaimet Usein tietoalkioille on mielekästä määrittää yksi tai useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero 80 op
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
Algoritmit 1. Luento 4 Ke Timo Männikkö
Algoritmit 1 Luento 4 Ke 18.1.2017 Timo Männikkö Luento 4 Tietorakenteet Pino Pinon toteutus Jono Jonon toteutus Lista Listaoperaatiot Algoritmit 1 Kevät 2017 Luento 4 Ke 18.1.2017 2/29 Pino Pino, stack,
Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto
Sisällys 18. bstraktit tietotyypit Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.1 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:
Luku 4. Tietorakenteet funktio-ohjelmoinnissa. 4.1 Äärelliset kuvaukset
Luku 4 Tietorakenteet funktio-ohjelmoinnissa Koska funktio-ohjelmoinnissa ei käytetä tuhoavaa päivitystä (sijoituslausetta ja sen johdannaisia), eivät läheskään kaikki valtavirtaohjelmoinnista tutut tietorakenteet
B-puu. 3.3 Dynaamiset hakemistorakenteet
Tietokannan hallinta 2 3. Tietokannan hakemistorakenteet 3.3 Dynaamiset hakemistorakenteet Käsitellyt hakemistot (hajautus, ISAM): hakemisto-osa on staattinen eli ei muutu muuten kuin uudelleenorganisoinnissa.
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
58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 1, , vastauksia
58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 1, 25.2.2013, vastauksia 1. (a) O-merkintä Ω-merkintä: Kyseessä on (aika- ja tila-) vaativuuksien kertalukumerkinnästä. O-merkintää käytetään ylärajan
Käsitellyt hakemistot (hajautus, ISAM): hakemisto-osa on staattinen eli ei muutu muuten kuin uudelleenorganisoinnissa.
Tietokannan hallinta 35 3. Tietokannan 3.3 Dynaamiset Käsitellyt hakemistot (hajautus, ISAM): hakemisto-osa on staattinen eli ei muutu muuten kuin uudelleenorganisoinnissa. Ajan mittaan epätasapainoa:
Tieto- ja tallennusrakenteet
Tieto- ja tallennusrakenteet Sisältö Tyyppi, abstrakti tietotyyppi, abstraktin tietotyypin toteutus Tallennusrakenteet Taulukko Linkitetty rakenne Abstraktit tietotyypit Lista (Puu) (Viimeisellä viikolla)
RATKI 1.0 Käyttäjän ohje
RATKI RATKI 1.0 Käyttäjän ohje Ohje 0.5 Luottamuksellinen Vastuuhenkilö Petri Ahola Sisällysluettelo 1. Yleistä... 3 1.1. Kuvaus... 3 1.2. Esitiedot... 3 1.3. RATKIn käyttöoikeuksien hankinta... 3 1.4.
A274101 TIETORAKENTEET JA ALGORITMIT
A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen
1 Erilaisia tapoja järjestää
TIE-20100 Tietorakenteet ja algoritmit 1 1 Erilaisia tapoja järjestää Käsitellään seuraavaksi järjestämisalgoritmeja, jotka perustuvat muihin kuin vertailuun alkioiden oikean järjestyksen saamiseksi. Lisäksi
Asko Ikävalko, k0201291 22.2.2004 TP02S-D. Ohjelmointi (C-kieli) Projektityö. Työn valvoja: Olli Hämäläinen
Asko Ikävalko, k0201291 22.2.2004 TP02S-D Ohjelmointi (C-kieli) Projektityö Työn valvoja: Olli Hämäläinen Asko Ikävalko LOPPURAPORTTI 1(11) Ratkaisun kuvaus Käytetyt tiedostot Tietuerakenteet Onnistuin
Algoritmit 1. Demot Timo Männikkö
Algoritmit 1 Demot 2 1.-2.2.2017 Timo Männikkö Tehtävä 1 (a) Ei-rekursiivinen algoritmi: laskesumma(t, n) sum = t[0]; for (i = 1; i < n; i++) sum = sum + t[i]; return sum; Silmukka suoritetaan n 1 kertaa
Tietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin
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
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle
TIEA341 Funktio-ohjelmointi 1, kevät 2008
TIEA341 Funktio-ohjelmointi 1, kevät 2008 Luento 5 Ympärysmitta. Puut. Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 21. tammikuuta 2008 CASE: YMPÄRYSMITTA Lasketaan kuvioiden ympärysmittoja
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print