7. Tasapainoitetut hakupuut

Koko: px
Aloita esitys sivulta:

Download "7. Tasapainoitetut hakupuut"

Transkriptio

1 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 jokaisessa sisäsolmussa voi olla useita tietoyksiköitä ja solmulla useita lapsia. Se on binäärihakupuun (luku 6.3.) yleistys. Yksi sen hyödyistä on sisäsolmujen määrän väheneminen binäärihakupuuhun verrattuna. Luvussa 7.2. tarkastellaan yksityiskohtaisesti määrättyä monitiehakupuuta, (2,4)-puuta, josta käytetään myös nimityksiä 2-4-puu tai puu, koska sillä voi olla kahdesta neljään lasta. Kaikki sen lehdet ovat samalla tasolla. Se on tehokas hakua käsittäville operaatioille yltäen tällöin samaan kuin AVL-puu eli aikakompleksisuuteen O(log n). Näitä vielä kehittyneempiä puutyyppejä ovat puna-mustat puut (red-black tree) ja viistopuut (splay tree), joita ei tässä tarkastella. 7. luku 364

2 7.1. Monitiehakupuut Tässä kuvataan, kuinka monilapsisia monitiepuita käytetään hakupuina. Jälleen puuhun talletettava tieto esitetään tietoyksikköinä, pareina (k,x), jossa k onavainjaxtähän liittyvä alkio. Olkoon v järjestetyn puun solmu. Se on d-solmu, jos sillä on d lasta. Monitiehakupuu (multi-way search tree) on järjestetty puu T, jolla on seuraavat ominaisuudet (kuva 7.1.(a)): Jokaisella puun T sisäsolmulla on vähintään kaksi lasta. Jokainen puun T sisäsolmu sisältää kokoelman tietoyksiköitä muotoa (k,x), jossa k onavainjaxalkio. Jokainen puun Td-solmu, jonka lapset ovat v 1,, v d, sisältää d-1 tietoyksikköä (k 1, x 1 ),,(k d-1, x d-1 ), missä k 1 k d-1. Määritellään lisäksi k 0 =- ja k d =+. Jokaiselle tietoyksikölle (k,x), joka on talletettu solmuun v:n alipuuhun juureltaan v i, i = 1,, d, on k i-1 k k i. 7. luku 365

3 Kuva 7.1. (alku) (a) Monitiehakupuu T. 7. luku 366

4 Kun siis solmuun v ajatellaan talletetuksi joukko avaimia mukaanlukien kuvitteelliset erikoisavaimet k 0 =- ja k d =+ (rajoittimia), niin alipuuhun T juureltaan v i talletetun avaimen k täytyy olla solmuun talletetun kahden avaimen välissä. Tällöin d-lapsen solmussa on talletettuna d-1 varsinaista avainta, ja se muodostaa samalla perustan haun suorittamiseksi monitiepuussa. Jälleen puun lehdet ovat ainoastaan paikanpitäjiä. Täten binäärihakupuuta voidaan pitää monitiehakupuun erikoistapauksena. Toisessa ääripäässä yhden sisäsolmun monitiehakupuu voi käsittää useita tietoyksiköitä. Sillä, että käsittääkö monitiehakupuun sisäsolmu kaksi vai useampia lapsia, on seuraava suhde tietoyksiköiden määrän ja lehtisolmujen määrän välillä. Lause 7.1. Monitiehakupuulla, joka sisältää n tietoyksikköä, on n+1 lehteä. Perustelun voi esittää harjoitustehtävänä. 7. luku 367

5 Haku monitiepuussa Haku tapahtuu suoraviivaisesti monitiepuussa avaimella k. Lähdetään polulle puun juuresta (kuva 7.1.(b)-(c)). Oltaessa d-solmussa v haun aikana verrataan avainta k avaimiin k 1,, k d-1, jotka on talletettu solmuun v. Jos on k = k i jollekin i:lle, haku onnistuu. Muutoin jatketaan hakua solmun v lapsessa v i, missä k i-1 < k < k i. (määriteltiin k 0 =- ja k d =+ ). Jos tullaan lehteen, tiedetään, ettei haettavaa avainta ole puussa eli haku epäonnistuu. Monitiehakupuiden tietorakenteita Luvussa 4 esitettyjä yleisten puiden esitystapoja voidaan soveltaa myös monitiehakupuille. Lisätietona niissä pitää tallettaa kuhunkin solmuun pelkästään tietoyksiköiden (tai avainten) joukko. 7. luku 368

6 Kuva 7.1. (jatkoa) (b) Avaimen 12 (epäonnistunut haku) hakupolku puussa T. 7. luku 369

7 Kuva 7.1. (loppu) (c) Avaimen 24 (onnistunut haku) hakupolku puussa T. 7. luku 370

8 Käytettäessä monitiehakupuuta T edustamaan sanakirjaa D kuhunkin sisäsolmuun v talletetaan viittaus järjestettyyn tietoyksiköiden joukkoon. Solmuun v talletettua sanakirjaa kutsutaan sekundääritietorakenteeksi. Tämä tukee laajempaa kokonaisuutta, puuta, joka on tässä primääritietorakenne. Solmuun v talletettu sanakirja esitetään merkinnällä D(v). Tähän talletetaan tietoyksiköt. Näiden perusteella löydetään lapsisolmu, johon siirrytään haun seuraavassa vaiheessa. Puun T jokaisessa solmussa v, jonka lapset ovat v 1,, v d ja tietoyksiköt (k 1, x 1 ),,(k d-1, x d-1 ), ovat talletettuina tietoyksiköt (k 1, x 1, v 1 ),(k 2,x 2,v 2 ),,(k d-1, x d-1, v d-1 ), (+, null, v d ). Sanakirjan D(v) tietoyksiköllä (k i, x i, v i ) on avain k i ja alkio (x i, v i ) (viimeisessä tietoyksikössä erikoisavain + ). Haettaessa avaimen k alkiota puusta T d-solmun v prosessointi voidaan tehdä suorittamalla haku tietoyksikön (k i, x i, v i ) löytämiseksi sanakirjasta D(v) pienimmällä avaimella, joka on suurempi tai yhtä suuri kuin k. On olemassa kaksi tapausta: 7. luku 371

9 Jos on k i-1 < k < k i, hakua jatketaan käsittelemällä lasta v i. (Jos palautetaan erikoisavain k d =+,kon silloin suurempi kuin kaikki avaimet, jotka on talletettu solmuun v ja hakua jatketaan käsitellen lasta v d.) Muussa tapauksessa (k = k i ) haku päättyy onnistuneena. Monitiehakupuun tilavaatimus n tietoyksikölle on O(n) tavallisten sanakirjatoteutusten kera sekundääritietorakenteita varten puussa T. Suoritusaika, joka on käytettävä d-solmussa v haun aikana, riippuu siitä, miten sekundääritietorakenne D(v) toteutetaan. Jos se toteutetaan taulukkopohjaisena järjestettynä sekvenssinä tai AVL-puuna, v on prosessoitavissa ajassa O(log d). Jos se sen sijaan toteutetaan järjestämättömän sekvenssin tai listapohjaisen järjestetyn sekvenssin avulla, solmun v prosessointi kestää ajan O(d). Viitatkoon d max puun T minkä tahansa solmun lasten maksimimäärään. Olkoon h puun korkeus. Näin ollen hakuaika monitiehakupuussa on joko O(hd max ) tai O(h log d max ) riippuen sekundääritietorakenteen D(v) toteutuksesta. 7. luku 372

10 Jos d max on vakio, haun suoritusaika on O(h) riippumatta sekundääritietorakenteen toteutuksesta. Sen mukaisesti päätavoitteena on pitää puun korkeus mahdollisimman matalana, ts. h tietoyksiköiden määrän n logaritmisena funktiona. Tämä aikaansaa tasapainoitetun hakupuun (balanced search tree), jota pohditaan seuraavaksi (2,4)-puu Tämä on monitiehakupuulaji, joka pitää solmuihin talletetut sekundääritietorakenteet kooltaan suppeina ja puun tasapainoitettuna. Nämä tavoitteet saavutetaan ylläpitämällä ominaisuudet (kuva 7.2): Koko-ominaisuus: Jokaisella sisäsolmulla on enintään neljä lasta ja vähintään kaksi. Syvyysominaisuus: Kaikki lehdet ovat samalla syvyydellä. 7. luku 373

11 Kuva 7.2. (2,4)-puu. 7. luku 374

12 Solmujen koosta kiinnipitäminen tekee solmuista monitiehaussa yksinkertaisia. Siitä tulee myös vaihtoehtoinen nimi, puu, koska jokaisella sisäsolmulla on joko 2, 3 tai 4 lasta. Lisäksi solmun v sanakirja D(v) sisältää sekvenssin, jossa kaikki operaatiot tehdään vakioajassa O(1), sillä d max = 4. Korkeusominaisuudesta seuraa raja puulle: Lause 7.2. (2,4)-puun korkeus on (log n), kun tietoyksiköitä on n. Perustelu: Olkoon h (2,4)-puun T korkeus, kun tietoyksiköitä on n. Lause osoitetaan todeksi seuraavien epäyhtälöjen avulla: (log(n + 1))/2 h log(n + 1). (7.1) Koon ja syvyyden nojalla lehtien lukumäärä puussa T on vähintään 2 h ja enintään 4 h. Lauseen 7.1. perusteella lehtien määrä puussa T on n luku 375

13 Täten saadaan 2 h n h. Ottamalla 2-kantainen logaritmi jokaisesta osasta saadaan h log(n + 1) 2h, josta tulee tämän lauseen tulos (7.1). Lause 7.2. sanoo, että koko- ja syvyysominaisuudet riittävät pitämään monitiepuun tasapainoitettuna. Lisäksi se osoittaa haun (2,4)-puussa toimivan ajassa O(log n) ja ettei sekundäärirakenteen toteutus ole ratkaiseva seikka (yksinkertaisin paras, taulukko tai lista), koska lasten maksimimäärä on vakio d max. 7. luku 376

14 Lisäys Uuden tietoyksikön (k,x) lisäämiseksi (2,4)-puuhun T on aluksi haettava avain k. Olettaen, ettei puussa ole tätä avainta k, haku päättyy epäonnistuneena lehteen z. Olkoon v tämän vanhempi. Uusi tietoyksikkö lisätään solmuun v ja samoin uusi lapsi w (lehti) solmulle v solmun z vasemmalle puolelle. Näin ollen lisätään (k,x,w) sanakirjaan D(v). Kuvissa 7.3. ja 7.5. esitetään sarja perättäisiä lisäyksiä (2,4)- puuhun. Tarkastellaan yksityiskohtaisesti avaimen 5 lisäystä puuhun kuvassa 7.3(g), josta saadaan kuva 7.3.(i). Lisäysmenetelmä säilyttää syvyysominaisuuden, koska uusi lehti lisätään samalle tasolle kuin olemassa olevat lehdet ja uusi avain alimmalle sisäsolmutasolle. Se saattaa silti vahingoittaa kokoominaisuutta. Jos solmu on 4-solmu ennen lisäystä, siitä tulisi 5-solmu sen jälkeen, mikä ei ole sallittua. Tällöin esiintyy ylivuoto (overflow), joka on ratkaistava sopivasti puun säilyttämiseksi lajissa (2,4). 7. luku 377

15 4 4 6 v (a) w (b) z (c) (d) (e) (f) Kuva 7.3. (alku) Lisäyksiä (2,4)-puuhun: (a) Lähtötilanteen puu, jossa on yksi tietoyksikkö, (b) avaimen 6 lisäys, (c) avaimen 12 lisäys, (d) avaimen 15 lisäys, joka aiheuttaa ylivuodon, (e) jako, joka tuottaa uuden juuren ja (f) jaon jälkeen. 7. luku 378

16 (g) (h) (i) (j) Kuva 7.3 (jatkoa) (g) Avaimen 3 lisäys, (h) avaimen 5 lisäys, joka aiheuttaa ylivuodon, (i) jako ja (j) jaon jälkeen. 7. luku 379

17 v v z (k) (l) Kuva 7.3. (loppu) (k) Avaimen 10 lisäys ja (l) avaimen 8 lisäys. 7. luku 380

18 Olkoot v 1,, v 5 solmun v lapset ja k 1,, k 4 solmuun v talletetut avaimet. Ylivuodon korjaamiseksi solmusta v jaetaan (split) 5-solmu v seuraavasti (kuva 7.4.): Solmu v korvataan kahdella solmulla v ja v, missä v on 3-solmu lapsinaan v 1, v 2, v 3 ja avaiminaan k 1 ja k 2. v on 2-solmu lapsinaan v 4 ja v 5 ja avaimenaan k 4. Jos v on puun T juuri, luodaan uusi juuri u. Muutoin u olkoon solmun v vanhempi. Lisätään avain k 3 solmuun u ja asetetaan v ja v solmun u lapsiksi niin, että jos v oli i:s u:n lapsi, niin v ja v tulevat u:n i:nneksi ja i+1:nneksi lapseksi. Jako-operaatio suoritetaan selvästi ajassa O(1). 7. luku 381

19 u u h 1 h 2 h 1 h 2 u 1 v=u 2 u 3 k 1 k 2 k 3 k 4 k 3 u v=u 2 1 u 3 k 1 k 2 k 4 v 1 v 2 v 3 v 4 v 5 v 1 v 2 v 3 v 4 v 5 (a) Kuva 7.4. (2,4)-puun solmun jako: (a) ylivuoto 5-solmussa v, (b) v:n kolmas avain lisätään v:n vanhempaan u ja (c) v korvataan 3-solmulla v ja 2-solmulla v. u (b) h 1 k 3 h 2 u 1 v v u 3 k 1 k 2 k 4 v 1 v 2 v 3 v 4 v 5 (c) 7. luku 382

20 Solmun v jaon seurauksena uusi ylivuoto voi esiintyä v:n vanhemmassa u. Jos sellainen esiintyy, se sysää puolestaan jaon solmuun u (kuva 7.5.). Jako joko poistaa ylivuodon tai levittää sitä nykyisen solmun vanhempaan. Näin jako-operaatioiden lukumäärää rajoittaa puun korkeus, joka on lauseen 7.2. mukaisesti O(log n). Lisäyksen suorittaminen (2,4)-puuhun vaatii kaikkiaan aikaa O(log n) (a) Kuva 7.5. (alku) Lisäys (2,4)-puuhun aiheuttaen sarjan jakoja: (a) Ennen lisäystä. 7. luku 383

21 (b) (c) (d) Kuva 7.5. (jatkoa) (b) Avaimen 17 lisäys, joka aiheuttaa ylivuodon, (c) jako ja (d) jaon aiheuttama uusi ylivuoto. 7. luku 384

22 (e) (f) Kuva 7.5. (loppu) (e) Toinen jako, joka tuottaa uuden juurisolmun, sekä (f) lopullinen puu. 7. luku 385

23 Poisto Nyt tarkastellaan tietoyksikön poistamista (2,4)-puusta T. Ensiksi pitää luonnollisesti suorittaa haku avaimella k. Tietoyksikön poisto (2,4)- puusta voidaan aina redusoida tapaukseksi, jossa poistettava tietoyksikkö sijaitsee alimmalla sisäsolmutasolla, ts. sen lapset ovat lehtiä. Jos poistettava tietoyksikkö (k i, x i ) sijaitsee tätä ylempänä puun solmussa z, siirretään aluksi tietoyksikön (k i, x i ) sijaan sellainen, joka on talletettuna solmussa v ja tämän lapset ovat lehtiä (kuva 7.6.(d)): 1. Etsitään oikeanpuolimmainen sisäsolmu v alipuusta, jonka juuri on solmun zi:s lapsi, kun solmun v kaikki lapset ovat lehtiä. Solmun v avain on tällöin alipuun i suurin, ts. alhaaltapäin lähin poistetulle k i. 2. Siirretään solmun z tietoyksikön (k i,x i ) sijaan solmun v viimeinen tietoyksikkö. 7. luku 386

24 Kun edellinen vaihto on tehty, tietoyksikkö poistetaan solmusta v sanakirjasta D(v) ja poistetaan myös v:n i:s lehtilapsi. eli Tietoyksikön ja lapsen poistaminen solmusta v säilyttää syvyysominaisuuden, mutta ei vältämättä koko-ominaisuutta. Jos v on ennen poistoa 2-solmu, siitä tulisi 1-solmu, mikä ei ole sallittua (2,4)- puussa. Tällöin esiintyy alivuoto (underflow). Alivuodon korjaamiseksi tarkistetaan, onko solmun v viereinen sisarus 3-solmu tai 4-solmu. Jos tällainen viereinen sisarus w on olemassa, suoritetaan siirto (transfer), jossa siirretään solmun w lapsi solmuun v, w:n avain v:n ja w:n vanhempaan u sekä u:n avain solmuun v (kuva 7.6.(b)-(c)). Jos solmulla v on ainoastaan yksi vierekkäinen sisarus, joka on 2-solmu, tai molemmat vierekkäiset sirarukset ovat 2-solmuja, suoritetaan sulauttaminen (fusion), jossa lomitetaan v sisaruksensa kanssa luomalla uusi solmu v ja siirretään avain solmun v vanhemmasta u solmuun v (kuva 7.6. (e)-(f)). 7. luku 387

25 u v 5 w (a) (b) 12 Kuva 7.6. Poistojen sarja (2,4)-puusta: (a) avaimen 4 poisto aiheuttaen alivuodon, (b) siirto ja (c) siirron jälkeen. v 5 u w (c) 7. luku 388

26 u v (d) (e) 11 Kuva 7.6. (d) Avaimen 12 poisto, (e) sulauttaminen ja (f) tämän jälkeen. 5 u 6 15 v (f) 7. luku 389

27 u (g) (h) Kuva 7.6. (g) Avaimen 13 poisto ja (h) tämän jälkeen. 7. luku 390

28 Sulauttaminen solmussa v saattaa aikaansaada uuden alivuodon solmun v vanhemmassa u, mikä puolestaan tuottaa siirron tai sulauttamisen solmussa u (kuva 7.7.). Tästä johtuen sulauttamisoperaatioiden määrää rajoittaa puun korkeus, joka on lauseen 7.2. mukaan O(log n). Jos alivuoto leviää juureen saakka, niin juuri yksinkertaisesti poistetaan (kuva 7.7. (c)-(d)). Analyysi (2,4)-puuna toteutetun sanakirjan pääoperaatiot findelement, insertitem ja remove ovat kaikki luokkaa O(log n). Suoritusajat tulevat seuraavista seikoista. (2,4)-puun korkeus, kun puussa on n tietoyksikköä, on O(log n) lauseen 7.1. mukaan. Jako, siirto ja sulauttaminen vaativat ajan O(1). Tietoyksikön haku, lisäys ja poisto käyvät O(log n) solmussa. 7. luku 391

29 u v 17 (a) (b) Kuva 7.7. Sulauttamisten leviäminen (2,4)-puussa: (a) avaimen 14 poisto, joka aiheuttaa alivuodon, ja (b) sulauttaminen. 7. luku 392

30 6 11 u (c) (d) Kuva 7.7. (loppu) (c) Toinen sulauttaminen, joka aiheuttaa juuren poistamisen, ja (d) lopullinen puu. 7. luku 393

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

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

Lisätiedot

Algoritmit 1. Luento 7 Ti Timo Männikkö

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

Lisätiedot

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

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

Lisätiedot

Algoritmit 2. Luento 5 Ti Timo Männikkö

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

Lisätiedot

Binäärihaun vertailujärjestys

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

Lisätiedot

Algoritmit 2. Luento 2 To Timo Männikkö

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

Lisätiedot

Algoritmit 2. Luento 5 Ti Timo Männikkö

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

Lisätiedot

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

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

Lisätiedot

Algoritmit 2. Luento 2 Ke Timo Männikkö

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

Lisätiedot

Algoritmit 2. Luento 6 To Timo Männikkö

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

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

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

Lisätiedot

Algoritmit 2. Luento 4 To Timo Männikkö

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

Lisätiedot

Algoritmit 2. Luento 6 Ke Timo Männikkö

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

Lisätiedot

Algoritmit 2. Luento 4 Ke Timo Männikkö

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

Lisätiedot

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

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

Lisätiedot

Tietorakenteet, laskuharjoitus 7, ratkaisuja

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

Lisätiedot

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

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

Lisätiedot

private TreeMap<String, Opiskelija> nimella; private TreeMap<String, Opiskelija> numerolla;

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

Lisätiedot

Algoritmit 2. Luento 7 Ti Timo Männikkö

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

Lisätiedot

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

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

Lisätiedot

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

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

Lisätiedot

B + -puut. Kerttu Pollari-Malmi

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

Lisätiedot

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

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

Lisätiedot

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

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

Lisätiedot

Algoritmit 1. Luento 6 Ke Timo Männikkö

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

Lisätiedot

Algoritmit 1. Luento 8 Ke Timo Männikkö

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

Lisätiedot

6. Sanakirjat. 6. luku 298

6. Sanakirjat. 6. luku 298 6. Sanakirjat Tässä luvussa tarkastellaan käsitettä sanakirja (dictionary). Tällaisen tietorakenteen tehtävä on tallettaa alkioita niin, että tiedonhaku rakenteesta on tehokasta. Nimi vastaa melko hyvin

Lisätiedot

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

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

Lisätiedot

Algoritmit 2. Luento 3 Ti Timo Männikkö

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

Lisätiedot

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

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

Lisätiedot

Algoritmit 2. Luento 3 Ti Timo Männikkö

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

Lisätiedot

Tietorakenteet ja algoritmit Hakurakenteet Ari Korhonen

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

Lisätiedot

Kierros 4: Binäärihakupuut

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

Lisätiedot

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

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

Lisätiedot

1.1 Tavallinen binäärihakupuu

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

Lisätiedot

Luku 8. Aluekyselyt. 8.1 Summataulukko

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

Lisätiedot

CS-A1140 Tietorakenteet ja algoritmit

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,

Lisätiedot

14 Tasapainotetut puurakenteet

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,

Lisätiedot

Tietorakenteet, laskuharjoitus 6,

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

Lisätiedot

58131 Tietorakenteet (kevät 2008) 1. kurssikoe, ratkaisuja

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

Lisätiedot

Lisätään avainarvo 6, joka mahtuu lehtitasolle:

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

Lisätiedot

10. Painotetut graafit

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

Lisätiedot

7. Tasapainoitetut hakupuut

7. Tasapainoitetut hakupuut 7.1. Monitiehakpt 7. Tasapainoitett hakpt Tässä lssa jatketaan järjestetyn sanakirjan tarkastela esittämällä kehittynyt ptietorakenne. Lssa 7.1. esitetään monitiehakpn käsite. Se on järjestetty p, jonka

Lisätiedot

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

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,

Lisätiedot

Algoritmi on periaatteellisella tasolla seuraava:

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

Lisätiedot

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

(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

Lisätiedot

6. Sanakirjat Sanakirjan abstrakti tietotyyppi

6. Sanakirjat Sanakirjan abstrakti tietotyyppi 6.. Sanakirjan abstrakti tietotyyppi 6. Sanakirjat Tässä luvussa tarkastellaan käsitettä sanakirja (dictionary). Tällaisen tietorakenteen tehtävä on tallettaa alkioita niin, että tiedonhaku rakenteesta

Lisätiedot

4. Joukkojen käsittely

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

Lisätiedot

Algoritmit 1. Luento 5 Ti Timo Männikkö

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

Lisätiedot

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

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

Lisätiedot

Luku 4. Tietorakenteet funktio-ohjelmoinnissa. 4.1 Äärelliset kuvaukset

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

Lisätiedot

Koe ma 1.3 klo 16-19 salissa A111, koeaika kuten tavallista 2h 30min

Koe ma 1.3 klo 16-19 salissa A111, koeaika kuten tavallista 2h 30min Koe Koe ma 1.3 klo 16-19 salissa A111, koeaika kuten tavallista 2h 30min Kokeessa saa olla mukana A4:n kokoinen kaksipuolinen käsiten tehty, itse kirjoitettu lunttilappu 1 Tärkeää ja vähemmäntärkeää Ensimmäisen

Lisätiedot

Lisätään avainarvo 1, joka mahtuu lehtitasolle:

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

Lisätiedot

811312A Tietorakenteet ja algoritmit II Perustietorakenteet

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

Lisätiedot

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

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

Lisätiedot

811312A Tietorakenteet ja algoritmit V Hash-taulukot ja binääriset etsintäpuut

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

Lisätiedot

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta 811312A Tietorakenteet ja algoritmit 2017-2018 Kertausta kurssin alkuosasta II Perustietorakenteet Pino, jono ja listat tunnettava Osattava soveltaa rakenteita algoritmeissa Osattava päätellä operaatioiden

Lisätiedot

Algoritmit 1. Luento 1 Ti Timo Männikkö

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

Lisätiedot

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

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

Lisätiedot

Algoritmit 1. Luento 12 Ke Timo Männikkö

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

Lisätiedot

1 Puu, Keko ja Prioriteettijono

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

Lisätiedot

10. Painotetut graafit

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

Lisätiedot

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

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,

Lisätiedot

Algoritmit 1. Luento 2 Ke Timo Männikkö

Algoritmit 1. Luento 2 Ke Timo Männikkö Algoritmit 1 Luento 2 Ke 11.1.2017 Timo Männikkö Luento 2 Algoritmin esitys Algoritmien analysointi Suoritusaika Asymptoottinen kertaluokka Peruskertaluokkia NP-täydelliset ongelmat Algoritmit 1 Kevät

Lisätiedot

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

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

Lisätiedot

Algoritmit 1. Luento 12 Ti Timo Männikkö

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

Lisätiedot

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 9. marraskuuta 2009

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 9. marraskuuta 2009 TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 9. marraskuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe D tiistai 10.11. klo 10 välikielen generointi Vaihe E tiistai

Lisätiedot

puuta tree hierarkkinen hierarchical

puuta tree hierarkkinen hierarchical 4. Puut Seuraavaksi käsitellään yhtä tärkeimmistä tietojenkäsittelytieteen ei-lineaarisista käsitteistä, puuta (tree). Puut ovat olleet keksintönä todellinen läpimurto, koska niissä luotiin tehokas eilineaari

Lisätiedot

1.1 Pino (stack) Koodiluonnos. Graafinen esitys ...

1.1 Pino (stack) Koodiluonnos. Graafinen esitys ... 1. Tietorakenteet Tietorakenteet organisoivat samankaltaisten olioiden muodostaman tietojoukon. Tämä järjestys voidaan saada aikaan monin tavoin, esim. Keräämällä oliot taulukkoon. Liittämällä olioihin

Lisätiedot

Tietorakenteet ja algoritmit - syksy 2015 1

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

Lisätiedot

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

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

Lisätiedot

1 Määrittelyjä ja aputuloksia

1 Määrittelyjä ja aputuloksia 1 Määrittelyjä ja aputuloksia 1.1 Supremum ja infimum Aluksi kerrataan pienimmän ylärajan (supremum) ja suurimman alarajan (infimum) perusominaisuuksia ja esitetään muutamia myöhemmissä todistuksissa tarvittavia

Lisätiedot

Algoritmit 2. Luento 9 Ti Timo Männikkö

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

Lisätiedot

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

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

Lisätiedot

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta 811312A Tietorakenteet ja algoritmit 2016-2017 Kertausta kurssin alkuosasta II Algoritmien analyysi: oikeellisuus Algoritmin täydellinen oikeellisuus = Algoritmi päättyy ja tuottaa määritellyn tuloksen

Lisätiedot

9.3 Algoritmin valinta

9.3 Algoritmin valinta TIE-20100 Tietorakenteet ja algoritmit 218 9.3 Algoritmin valinta Merkittävin algoritmin valintaan vaikuttava tekijä on yleensä sen suorituskyky käyttötilanteessa. Muitakin perusteita kuitenkin on: toteutuksen

Lisätiedot

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

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

Lisätiedot

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

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

Lisätiedot

Kuva 1: J+-puun rakenne [HXS09].

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

Lisätiedot

Harjoitus 6 ( )

Harjoitus 6 ( ) Harjoitus 6 (21.4.2015) Tehtävä 1 Määritelmän (ks. luentomoniste s. 109) mukaan yleisen, muotoa min f(x) s. t. g(x) 0 h(x) = 0 x X olevan optimointitehtävän Lagrangen duaali on missä max θ(u, v) s. t.

Lisätiedot

Jäsennysaiheesta lisää Täydentäviä muistiinpanoja TIEA241 Automaatit ja kieliopit, syksy 2016

Jäsennysaiheesta lisää Täydentäviä muistiinpanoja TIEA241 Automaatit ja kieliopit, syksy 2016 Jäsennysaiheesta lisää Täydentäviä muistiinpanoja TIA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 4. lokakuuta 2016 1 simerkki arleyn algoritmin soveltamisesta Tämä esimerkki on laadittu

Lisätiedot

Algoritmit 1. Luento 3 Ti Timo Männikkö

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

Lisätiedot

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

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

Lisätiedot

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

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

Lisätiedot

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

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

Lisätiedot

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Union-find-delete-algoritmien vertailua. Sari Itäluoma

Union-find-delete-algoritmien vertailua. Sari Itäluoma Union-find-delete-algoritmien vertailua Sari Itäluoma Tampereen yliopisto Informaatiotieteiden yksikkö Tietojenkäsittelyoppi Pro gradu -tutkielma Ohjaaja: Erkki Mäkinen Kesäkuu 2015 Tampereen yliopisto

Lisätiedot

8. Lajittelu, joukot ja valinta

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

Lisätiedot

A TIETORAKENTEET JA ALGORITMIT KORVAAVAT HARJOITUSTEHTÄVÄT 3, DEADLINE KLO 12:00

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

Lisätiedot

Paikkatiedon käsittely 6. Kyselyn käsittely

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

Lisätiedot

Tehtävien ratkaisut

Tehtävien ratkaisut Tehtävien 1948 1957 ratkaisut 1948 Kun juna matkaa AB kulkiessaan pysähtyy väliasemilla, kuluu matkaan 10 % enemmän aikaa kuin jos se kulkisi pysähtymättä. Kuinka monta % olisi nopeutta lisättävä, jotta

Lisätiedot

4. Perustietorakenteet

4. Perustietorakenteet 4. Perustietorakenteet Tässä osassa käsitellään erilaisia tietorakenteita, joita algoritmit käyttävät toimintansa perustana. Aluksi käydään läpi tietorakenteen abstrakti määritelmä. Tämän jälkeen käsitellään

Lisätiedot

Algoritmit 2. Luento 14 Ke Timo Männikkö

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

Lisätiedot

Ei-yhteydettömät kielet [Sipser luku 2.3]

Ei-yhteydettömät kielet [Sipser luku 2.3] Ei-yhteydettömät kielet [Sipser luku 2.3] Yhteydettömille kielille pätee samantapainen pumppauslemma kuin säännöllisille kielille. Siinä kuitenkin pumpataan kahta osamerkkijonoa samaan tahtiin. Lause 2.25

Lisätiedot

TIEA341 Funktio-ohjelmointi 1, kevät 2008

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

Lisätiedot

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

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

Lisätiedot

Hajautusrakenteet. R&G Chapter Tietokannan hallinta, kevät 2006, Jan 1

Hajautusrakenteet. R&G Chapter Tietokannan hallinta, kevät 2006, Jan 1 Hajautusrakenteet R&G Chapter 11 16.02.06 Tietokannan hallinta, kevät 2006, Jan 1 Hajautukseen perustuvat tiedostorakenteet Hajautukseen perustuvissa tiedostorakenteissa on tavoitteena yksittäisen tietueen

Lisätiedot

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

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

Lisätiedot

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista

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

Lisätiedot