Kierros 4: Binäärihakupuut

Koko: px
Aloita esitys sivulta:

Download "Kierros 4: Binäärihakupuut"

Transkriptio

1 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 4 CS-A1140 / Autumn / 53

2 Sisältö Binäärihakupuut Avainten lisääminen, etsiminen ja poistaminen Pahimman tapauksen käytös Tasapainoiset hakupuut AVL-puut Punamustat puut Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

3 Materiaali: Hakupuut: kappaleet kirjassa Introduction to Algorithms, 3rd ed. (online via Aalto lib) AVL-puut: nämä kalvot wikipedia Punamustat puut: Kappaleet kirjassa Introduction to Algorithms, 3rd ed. (online via Aalto lib) Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

4 Samantapaista materiaalia muualla: Hakupuut: Kappale 3.2 kirjassa Algorithms, 4th ed. Punamustat puut: Kappale 3.3 kirjassa Algorithms, 4th ed. (avainten poistoa ei käsitelty) Linkkejä: MIT OCW video on binary search trees MIT OCW video on AVL trees Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

5 Binäärihakupuut Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

6 Tällä ja seuraavalla kierroksella tarkastellaan tietorakenteita ja algoritmeja, joilla voidaan toteuttaa dynaamisia joukkoja ja assosiatiivisia kuvauksia (engl. maps, dictionaries) Dynaaminen tarkoittaa tässä, että joukkoihin/kuvauksiin lisätään ja poistetaan alkioita, joilla on jokin avain, jatkuvasti (engl. online), ei vain kerran alussa tms Samaistetaan alkio avaimensa kanssa (esim. henkilö hetu) esityksen yksinkertaisuuden vuoksi Dynaamisen joukon abstraktin tietotyypin rajapinta voisi olla: INSERT(k) lisää avaimen k joukkoon SEARCH(k) etsii, onko avain k joukossa, ja DELETE(k) poistaa avaimen k joukosta Scalassa rajapintaa vastaa scala.collection.mutable.set-piirre, joka on toteutettu mm. TreeSet- ja HashSet-luokissa Javassa vastine on Set-rajapinta Kuvauksissa avaimeen liitetään myös jokin arvo Kalvoissa keskitytään esityksen yksinkertaistamisen takia joukkoihin (kuvaukset ovat melko suoraviivainen laajennus) Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

7 Tällä kierroksella tarkastellaan järjestettyjä joukkoja, joissa oletetaan jokin järjestys avainten välille ja pienimmän, seuraavaksi pienimmän jne avaimen etsiminen on tehokasta Järjestettyjen joukkojen rajapinta laajentaa perusrajapintaa esim. seuraavilla metodeilla: 1 MIN() palauttaa joukon pienimmän avaimen, 2 MAX() palauttaa joukon suurimman avaimen, 3 PREDECESSOR(k) etsii joukon suurimman avaimen, joka on pienempi kuin k 4 SUCCESSOR(k) etsii joukon pienimmän avaimen, joka on suurempi kuin k Scalan kirjastossa TreeSet-luokka toteuttaa rajapinnan version, joka sallii joukon avainten läpikäynnin järjestyksessä Javan standardikirjastossa TreeSet-luokan rajapinta on hyvin lähellä yllä kuvattua (MIN() vastaa metodi first jne) Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

8 Huomioi ero edellisen kierroksen prioriteettijonojen rajapintaan: mielivaltaisten avainten poistaminen sekä pienimmän, suurimman, seuraavaksi suuremman jne avaimen tehokas löytäminen on nyt tuettua Jälleen tavoitteena on saada aikaan logaritmisessa ajassa toimivia algoritmeja yllä mainittujen metodien toteuttamiseen Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

9 Tällä kierroksella tarkastellaan järjestettyjen joukkojen toteuttamista binääripuilla, joilla on tiettyjä lisäominaisuuksia Jokaiseen puun solmuun liitetään alkio, jolla on jokin avain; solmuun x liitetyn alkion avain on x.key Määritelmä Binääripuu on binäärihakupuu (engl. binary search tree, BST) jos seuraava hakupuuominaisuus pätee: jokaiselle puun solmulle x pätee, että 1 jos solmu y sijaitsee solmun x vasemman lapsen alipuussa, niin y.key x.key 2 jos solmu y sijaitsee solmun x oikean lapsen alipuussa, niin y.key x.key Oletetaan jatkossa, että avaimet ovat erillisiä 1 1 Yhtäsuurten avainten osalta katso Problem 12.1 kirjassa Introduction to Algorithms, 3rd ed. (online via Aalto lib) Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

10 Esimerkki Kolme binäärihakupuuta ja binääripuu, joka ei ole hakupuu: Oikealla olevassa puussa hakupuuominaisuus ei päde koska solmu, jonka avain on 4, on avaimen 8 omaavan solmun oikeassa alipuussa Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

11 Avainten etsiminen Hakupuuominaisuuden takia avainten etsintä binäärihakupuussa on helppoa Aloittaen juurisolmusta, käydään puuta läpi rekursiivisesti Jos tarkasteltavan solmun x avain on k, lopetetaan avaimen löydyttyä Jos solmun x avain on suurempi kuin k, mennään solmun vasempaan lapseen jos sellainen on, tai muutoin lopetetaan koska avainta ei ole puussa Jos solmun x avain on pienempi kuin k, mennään solmun oikeaan lapseen jos sellainen on, tai muutoin lopetetaan koska avainta ei ole puussa Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

12 Esimerkki Tarkastellaan alla olevaa binäärihakupuuta Jos etsitään avainta 4, 1 aloitetaan juuresta ja huomataan, että 8 > 4, 2 mennään vasempaan lapseen ja huomataan, että 3 < 4, 3 mennään oikeaan lapseen ja huomataan, että 6 > 4, 4 mennään vasempaan lapseen ja huomataan, että 4 = 4, ja 5 lopetetaan raportoimalla, että vain 4 löytyi Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

13 Esimerkki Tarkastellaan jälleen seuraavaa binäärihakupuuta Jos etsitään avainta 5, 1 aloitetaan juuresta ja huomataan, että 8 > 5, 2 mennään vasempaan lapseen ja huomataan, että 3 < 5, 3 mennään oikeaan lapseen ja huomataan, että 6 > 5, 4 mennään vasempaan lapseen ja huomataan, että 4 < 5, ja 5 huomataan, että solmulla ei ole oikeaa lasta ja lopetetaan toteamukseen, että avain 5 ei esiinny puussa Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

14 Avainten lisääminen Toimitaan ensin kuten avainta etsittäessä Jos avain löytyy puusta, lopetetaan Muutoin etsimisprosessin viimeinen askel olisi tahtonut mennä jonkin solmun n vasempaan (tai oikeaan) lapseen, jota ei kuitenkaan ollut lisätään uusi solmu n avaimella k puuhun niin, että siitä tulee solmun n vasen (tai oikea) lapsi Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

15 Esimerkki Tarkastellaan vasemmanpuoleista binäärihakupuuta Lisättäessä avain 10 puuhun 1 aloitetaan juuresta ja huomataan, että 8 < 10 2 mennään oikeaan lapseen ja huomataan, että 9 < 10 3 mennään oikeaa lapseen ja huomataan, että 11 > 10 4 huomataan, että solmulla ei ole vasenta lasta 5 lisätään uusi avaimen 10 omaava solmu vasemmaksi lapseksi Muokattu hakupuu on kuvattu yllä oikealla puolella Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

16 Avainten poistaminen Avaimen k poistaminen on hieman monimutkaisempaa Ensin etsitään solmu z, joka omaa avaimen k. Tämän jälkeen 1 jos solmu on lehti, se poistetaan 2 jos solmulla on yksi lapsi, poistetaan solmu ja laitetaan sen ainoa lapsi sen paikalle puussa 3 muutoin solmulla on kaksi lasta ja 1 etsitään solmu y, joka omaa suurimman avaimen solmun z vasemman lapsen alipuussa 2 vaihdetaan solmun z avaimeksi solmun y avain ja 3 poistetaan solmu y ja laitetaan sen vasen lapsi x (jos sellainen on) sen paikalle puuhun. Huomaa, ettei solmulla y ole oikeaa lasta Tehtävä: tarkastele seuraavia esimerkkejä ja perustele itsellesi, miksi hakupuuominaisuus säilyy voimassa yllä kuvatulla poistoprosessilla Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

17 Esimerkki Poistetaan avain 33 vasemmanpuoleisesta hakupuusta remove z Täsä tapauksessa riittää vain poistaa avaimen 33 omaava solmu z Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

18 Esimerkki Poistetaan avain 27 vasemmanpuoleisesta hakupuusta remove z x Nyt poistetaan avaimen 27 omaava solmu z ja laitetaan sen ainoa lapsi x sen paikalle hakupuuhun Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

19 Esimerkki Poistetaan avain 31 vasemmanpuoleisesta hakupuusta z 31 remove y z Koska avaimen 31 omaavalla solmulla z on kaksi lasta, etsitään sen vasemman lapsen alipuun suurimman avaimen 27 omaava solmu y Siirretään solmun avain y solmun z avaimeksi (punainen nuoli kuvassa) Lopuksi poistetaan solmu y ja siirretään sen ainoa lapsi x sen paikalle puussa (sininen nuoli kuvassa) Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

20 Avainten listaaminen nousevassa järjestyksessä Hakupuuominaisuuden ansiosta puun avainten läpikäynti nousevassa järjestyksessä on helppoa: käydään vain puun solmut läpi sisäjärjestyksessä (edellinen kierros) ja tulostetaan avain kun solmussa vieraillaan Täten voitaisiin järjestää n avainta 1 lisäämällä ne yksi kerrallaan alun perin tyhjään hakupuuhun ja 2 listaamalla lopuksi puun avaimet läpi järjestyksessä Esimerkki Tarkastellaan oikeanpuoleista hakupuuta Käydään solmut läpi sisäjärjestyksessä ja saadaan avaimet järjestyksessä 2,3,4,6,7,8,9,10, Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

21 Pienimmän ja suurimman avaimen etsiminen Puun pienin avain voidaan löytää yksinkertaisesti käymällä puuta läpi juuresta alkaen ja menemällä aina vasemmanpuoleiseen lapseen kunnes vasenta lasta ei enää löydy Samoin suurin avain löytyy oikeanpuoleisimmasta solmusta Esimerkki Tarkastellaan vasemmalla olevaa hakupuuta Pienin avain on 2 Suurin avain on Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

22 Edeltäjä- ja seuraaja-avainten etsiminen Mielivaltaisen avaimen k edeltäjä hakupuussa on sen suurin avain, joka on pienempi kuin k, tai None jos kaikki avaimet puussa ovat vähintään yhtä suuria kuin k Se voidaan löytää alustamalla muuttuja best arvoon None ja sitten käymällä puuta läpi juuresta alkaen niin pitkälle kuin mahdollista: Jos nykyisen solmun avain k on vähintään k, mennään vasempaan lapseen Muutoin asetetaan best arvoon k ja mennään oikeaan lapseen Lopussa, kun lapsi puuttuu, raportoidaan arvo best Avaimen k seuraaja puussa voidaan etsiä vastaavalla tavalla Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

23 Esimerkki Tarkastellaan oikeanpuoleista hakupuuta Avaimen 5 edeltäjä puussa on 4 Avaimen 20 edeltäjä puussa on 11 Avaimella 2 ei ole edeltäjää puussa Avaimen 4 seuraaja puussa on Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

24 Ajoaika-analyysiä Esitetyt algoritmit avainten lisäämiselle ja etsimiselle käyvät läpi vain yhtä polkua puussa ja suorittavat vakioaikaisia operaatioita jokaisessa solmussa (oletetaan vertailu vakioaikaiseksi) Niinpä niiden aikavaatimus on O(h), missä h on puun korkeus Avanten poistoalgoritmi käy myös läpi yhden polun kunnes se löytää poistettavan avaimen ja tämän jälkeen jatkaa polkua löytääkseen tilalle vaihdettavan avaimen Siten sen ajoaikavaatimus on myös O(h). Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

25 Keskimääräisen ja pahimman tapauksen ajoaika Voidaan osoittaa, että jos tehdään hakupuu lisäämällä tyhjään puuhun n satunnaista erillistä avainta, niin puun odotettu korkeus on O(log 2 n), katso kappale 12.4 kirjassa Introduction to Algorithms, 3rd ed. (online via Aalto lib) Mutta on helppoa lisätä avaimia myös niin, että puusta tulee erittäin epätasapainoinen linkitettyä listaa muistuttava rakenne Esimerkki Lisäämällä avaimet 1, 2, 3, 4 ja 5 tässä järjestyksessä saa aikaan oikeanpuoleisen hakupuun Tämä on käytännöllisesti katsoen sama rakenne kuin linkitetty lista Täten pahimman tapauksen ajoaika aiemmille operaatioille on Θ(n) kun avaimia on puussa n kpl Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

26 Tasapainoiset binäärihakupuut Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

27 Avainten lisääminen, etsiminen ja poistaminen saadaan toimimaan ajassa O(log 2 n), missä n on avainten lukumäärä puussa, tasapainottamalla hakupuut Tasapainotus takaa, että puiden korkeus on aina O(log 2 n) Tasapainotus voidaan tehdä monella eri tekniikalla, esimerkiksi tälle wikipedia-sivulle on koottu eri tapoja Seuraavassa tarkastelaan AVL-puita, joka on ensimmäiseksi esitelty tasapainoisten puiden luokka, ja punamustia puita (engl. red-black trees), joita käytetään useassa standardikirjastossa Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

28 Kiertäminen Eri tasapainotusmenetelmissä käytetty apurutiini on kiertäminen (engl. rotation) Tarkastellaan solmua x, jolla on oikea lapsi y. Kun solmua kierretään vasemmalle, niin solmun alipuu muutetaan muotoon, missä solmusta y tulee alipuun juuri, solmusta x tulee solmun y vasen lapsi ja solmun y vasemmasta lapsesta tulee solmun x oikea lapsi Oikealle kiertäminen määritellään vastaavasti solmulle, jolla on vasen lapsi x y y rotate x left x subtree 1 rotate y right subtree 3 subtree 2 subtree 3 subtree 1 subtree 2 Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

29 x y y rotate x left x subtree 1 rotate y right subtree 3 subtree 2 subtree 3 subtree 1 subtree 2 Vasemmalle ja oikealle kiertäminen säilyttävät hakupuuominaisuuden eli jos hakupuuominaisuus pätee binääripuulle ennen kiertämistä, niin se pätee kiertämisen jälkeenkin Tämä nähdään yllä olevasta kuvasta seuraavasti: Alkuperäisen alipuun solmujen läpikäynti sisäjärjestyksessä tuottaa järjestyksessä avaimet alipuussa 1, solmun x avaimen, alipuun 2 avaimet, solmun y avaimen ja alipuun 3 avaimet Vasemmalle kiertämisen jälkeen syntyneen alipuun läpikäynti sisäjärjestyksessä tuottaa alipuun 1 avaimet, solmun x avaimen, alipuun 2 avaimet, solmun y avaimen ja alipuun 3 avaimet Vastaavasti oikealle kiertämisen kohdalla Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

30 AVL-puut Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

31 AVL-puut ovat eräs tasapainoisten hakupuiden luokka AVL tulee tietorakenteen keksijöiden nimistä Georgy Adelson-Velsky ja Evgenii Landis Materiaali ja linkkejä: nämä kalvot wikipedia MIT OCW video on AVL trees Eräs visualisointityökalu AVL-puille Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

32 Määritelmä Binäärihakupuu on AVL-puu jos sen jokaiselle solmulle x pätee, että solmun vasemman ja oikean lapsen alipuiden korkeudet eroavat korkeintaan yhdellä Esimerkki Tarkastellaan alla olevaa neljää hakupuuta Kaksi vasemmanpuoleista ovat AVL-puita Kolmas ei ole AVL-puu koska avaimen 12 omaavan solmun vasen alipuu on tyhjä, eli korkeus on -1, kun taas oikean alipuun korkeus on 1 Oikeanpuoleisin ei ole AVL-puu koska juuren vasemman alipuun korkeus on 0 ja oikean 2 Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

33 Annettuna AVL-puu, jonka korkeus on h. Kuinka monta solmua se sisältää vähintään? Tämä alaraja voidaan ilmaista rekursioyhtälönä T (h): T ( 1) = 0 ja T (0) = 1 T (h) = 1 + T (h 1) + T (h 2) kaikille h 2 Muistetaan, että Fibonaccin luvut F n on määritelty kaavoilla F 0 = 0, F 1 = 1 ja F n = F n 1 + F n 2 kun n 2 Täten T (h) > F h+1 Koska F n on lukua ϕn 5 lähinnä oleva kokonaisluku, missä ϕ = 1,618..., niin korkeuden h omaava AVL-puu sisältää eksponentiaalisen määrän solmuja suhteessa korkeuteen Kääntäen, n-solmuisen AVL-puun korkeus on logaritminen suhteessa arvoon n Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

34 Avainten lisääminen Lisätään avain k AVL-puuhun Alussa toimitaan kuten yleisillä hakupuillakin: etsitään avaimen oikea paikka puussa ja lisätään uusi avaimen omaava lehti z Nyt kuitenkin solmun z vanhemman p, kuten sen edeltäjienkin, korkeus on saattanut kasvaa yhdellä. Sen takia ALV-ominaisuus ei välttämättä enää päde vaan puussa voi olla solmuja, joiden toisen lapsen alipuu on kaksi tasoa korkeampi kuin toisen Puuta täytyy siis tasapainottaa, jotta AVL-ominaisuus pätee jälleen Tehdään tämä alhaalta ylöspäin alkaen solmun p vanhemmasta p (AVL-ominaisuus pätee jo solmun p alipuussa; miksi?) Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

35 Näytetään yleisesti, kuinka voidaan AVL-tasapainottaa solmun x alipuu, missä toisen lapsen y alipuun korkeus on h + 2 kun taas toisen lapsen alipuun korkeus on h Oletetaan nämä lapset jo tasapainoisiksi eli AVL-ominaisuus pätee niiden alipuissa Tasapainotuksen jälkeen AVL-ominaisuus pätee uudessa alipuussa Koska uuden alipuun korkeus on voinut kasvaa yhdellä avaimen lisäyksen jälkeen, pitää tasapainotuksen jälkeen tarkastaa (rekursiivisesti) tarvitseeko solmun x vanhemman alipuuta tasapainottaa myös Esitetään seuraavassa tasapainotus vain tapauksille, missä korkeamman alipuun solmu y on solmun x oikea lapsi. Vasemman lapsen tapaus on symmetrinen tämän kanssa. Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

36 Tapaus I: y on kallellaan oikealle Solmun y alipuun korkeus on h + 2 mutta solmun x vasemman alipuun korkeus on h Solmun y oikean alipuun korkeus on h + 1 ja vasemman h Jos kierretään solmua x vasemmalle, saatavan uuden alipuun juuri on nyt y ja AVL-ominaisuus pätee siinä x y h + 2 h y h + 2 rotate x left x h + 1 h + 1 subtree 1 h h + 1 h h subtree 3 subtree 2 subtree 3 subtree 1 subtree 2 Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

37 Esimerkki Tarkastellaan vasemmanpuoleista AVL-puuta x y Kun siihen lisätään avain 19, 1 lisätään ensin uusi avaimen omaava lehtisolmu korkeudelle 0 2 sen vanhempi on tasapainoinen, päivitetään korkeudeksi 1 3 seuraava vanhempi x ei ole tasapainoinen (vasemman lapsen alipuun korkeus on -1 ja oikean on 1) ja sen oikea, solmun y alipuu on kallellaan oikealle kierretään solmua x vasemalle ja saadaan alipuu tasapainoon 4 seuraava vanhempi eli juuri on tasapainoinen Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

38 Tapaus II: y ei ole kallellaan Solmun y alipuun korkeus on h + 2 mutta solmun x vasemman alipuun korkeus on h Solmun y vasemman ja oikean alipuun korkeus on h + 1 Kiertämällä jälleen solmua x vasemmalle saadaan uusi alipuu, jonka juuri on solmu y ja jossa AVL-ominaisuus pätee x y h + 3 h y h + 2 rotate x left x h + 2 h + 1 subtree 1 h + 1 h + 1 h h + 1 subtree 3 subtree 2 subtree 3 subtree 1 subtree 2 Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

39 Tapaus III: y on kallellaan vasemmalle Solmun y alipuun korkeus on h + 2 mutta solmun x vasemman alipuun korkeus on h Solmun y vasemman alipuun korkeus on h + 1 ja oikean h Kierretään ensin solmua y oikealle ja saadaan solmun x oikeasta alipuusta oikealle kallellaan oleva. Tämän jälkeen toimitaan kuten tapauksessa I eli kierretään solmua x vasemmalle. h x rotate y right y h + 2 x h z h + 2 subtree 1 z h + 1 h subtree 1 h y h + 1 h h subtree 3 subtree 2a h h subtree 2a subtree 2b subtree 2b subtree 3 rotate x left z h + 2 x h + 1 y h + 1 h h h h subtree 1 subtree 2a subtree 2b subtree 3 Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

40 Esimerkki Tarkastellaan alla vasemmalla olevaa AVL-puuta x x y z 15 0 Lisätään avain 15: 1 lisätään ensin lehtisolmu avaimella ja korkeudella 0, lehden vanhempi on tasapainoinen, päivitetään korkeudeksi 1 3 seuraava vanhempi x ei ole tasapainoinen (sen vasen alipuu on tyhjä eli korkeus on -1 ja oikean alipuun korkeus on 1) ja tämän oikea solmun y alipuu on kallellaan vasemmalle; kierretään ensin solmua y vasemmalle, jotta x: oikeasta alipuu on kallellaan oikealle ja 4 sitten kierretään solmua x vasemmalle ja saadaan uusi alipuu tasapainoon 5 seuraava vanhempi eli juuri on jo tasapainoinen Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

41 Esimerkki Tarkastellaan vasemmanpuoleista AVL-puuta x 9 3 x y z Lisätään siihen avain Ensin lisätään uusi lehtisolmu avaimella Uuden solmun vanhempi z ja tämän vanhempi y ovat kumpikin tasapainoisia. Mutta seuraava vanhempi eli juuri x ei ole tasapainoinen (vasemman alipuun korkeus on 0 ja oikean 2) ja oikea alipuu on kallellaan vasemmalle. 3 Kierretään solmua y oikealle, jotta solmun x oikea alipuu on oikealle kallellaan. 4 Kierretään solmua x vasemmalle ja saadaan koko puu tasapainoiseksi. Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

42 Avainten poistaminen Alussa toimitaan kuten tasapainottomien puiden tapauksessa Kun on poistettu solmu, niin sen vanhemman ja muiden edeltäjien korkeus voi pienentyä yhdellä Tällöin voi jälleen syntyä korkeintaan kahden suuruista epätasapainoa solmujen alupuiden välille ja voidaan käyttää edellä kuvattuja tasapainotusmenetelmiä AVL-ominaisuuden palauttamiseksi Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

43 Esimerkki Tarkastellaan vasemman puoleista AVL-puuta x z 20 1 y w Poistettaessa avain 20, 4 0 poistetaan solmu z ja laitetaan solmu w sen paikalle huomataan, että vanhempi eli solmu x on nyt epätasapainoinen ja että sen vasen alipuu on kallellaan vasemmalle kierretään solmua x oikealle ja saadaan puu jälleen tasapainoiseksi Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

44 Punamustat puut Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

45 Eräs toinen tasapainoisten hakupuiden luokka Vain yksi väribitti lisätietoa per solmu Toteutettu useassa standardikirjastossa, esim Scalassa TreeMap on muuttumaton järjestettyjen kuvausten luokka, joka käyttää punamustia puita lähdekoodi luokille TreeMap ja RedBlackTree Javassa java.util.treemap toteuttaa muuttuvatilaiset järjestetyt kuvaukset punamustien puiden avulla. Vastaavasti java.util.treeset käyttää TreeMap-luokkaa järjestettyjen joukkojen toteuttamiseen. erään toteutuksen lähdekoodi Eräs visualisointityökalu punamustille puille Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

46 Määritelmä Hakupuu on punamusta puu jos Esimerkki 1 Sen jokainen solmu on väritetty joko punaiseksi tai mustaksi 2 Juurisolmu on musta 3 Jos solmu on punainen, niin kummatkin sen lapsista ovat mustia 4 Jokaiselle sen solmuista pätee, että jokainen polku solmusta mihin tahansa jälkeläislehteen sisältää saman määrän mustia solmuja vasemmalla: punamusta puu keskellä: vaatimus 3 ei päde oikealla: vaatimus 4 ei päde Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

47 Punaiset solmut sallivat tietyn määrän epätasapainoa mutta eivät liikaa koska millään polulla ei voi olla kahta punaista solmua peräkkäin Lause 13.1 kirjassa Cormen et al Jos punamustassa puussa on n solmua, niin sen korkeus on korkeintaan 2log 2 (n + 1). Koska punamustat puut ovat hakupuita, avainten etsiminen ja läpikäynti toimii kuten hakupuilla yleensäkin Täten avaimen etsiminen sekä edeltäjä- ja seuraaja-avainten etsiminen ovat logaritmisen ajan operaatioita punamustissa puissa Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

48 Kuten AVL-puidenkin tapauksessa, pitää enää näyttää kuinka punamustia puita voidaan muokata lisäämällä ja poistamalla avaimia Jälleen toimitaan kuten hakupuissa yleensäkin mutta solmun lisäyksen tai poiston jälkeen uudelleentasapainotetaan puu mikäli punamustan puun vaatimukset eivät päde muutoksen jälkeen Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

49 Avainten lisääminen Ensin toimitaan kuten perushakupuilla eli lisätään uusi lehtisolmu Uusi lehti on aluksi punainen 1 Jos sen vanhempi on musta, puu on edelleen punamusta puu ja lisäys on valmis 2 Jos vanhempi on punainen, vaatimus 3 ei päde ja pitää tasapainottaa Yleisemminkin seuraavssa oletetaan, että solmu z on juuri väritetty punaiseksi ja sen vanhempi p on myös punainen ja sitten tasapainotetaan puuta ylöspäin kunnes se on taas punamusta puu Esityksen yksinkertaistamiseksi esitetään vain tapaus, jossa z on vanhempansa vasen lapsi. Oikean lapsen tapaus on symmetrinen. Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

50 Tapaus I Myös solmun p sisarus u (u on solmun z setä eli uncle ) on punainen Alipuut solmuissa c 1, c 2, b, u 1 ja u 2 ovat punamustia puita, joissa jokainen polku lehteen sisältää k mustaa solmua g g p u p u z b u 1 u 2 z b u 1 u 2 c 1 c 2 c 1 c 2 Väritetään g punaiseksi ja p sekä u mustiksi Solmun g alipuu on nyt muutoin punamusta puu paitsi sen juuri on punainen kaikki polut lehtiin sisältävät k + 1 mustaa solmua kuten ennen uudelleenväritystäkin Jos g on koko puun juuri, väritetään se mustaksi ja lopetetaan Muutoin jatketaan tasapainottamista ylöspäin jos solmun g vanhempi on punainen Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

51 Tapaus II Solmun p sisarus u on musta ja Solmu z on solmun p vasen lapsi Solmujen c 1, c 2, b ja u alipuut ovat punamustia puita, joissa kaikki polut lehtiin sisältävät k mustaa solmua g p p u z g z b c 1 c 2 b u c 1 c 2 Kierretään solmua g oikealle ja väritetään p mustaksi ja g punaiseksi Uusi solmun p alipuu on punamusta puu ja kaikki sen polut sisältävät saman määrän k + 1 mustia solmuja kuin solmusta g ennen kiertämistä ja uudelleenvärittämistä Tasapainotus on nyt tehty Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

52 Tapaus III Solmun p sisarus u on musta ja solmu z on solmun p oikea lapsi Solmujen c 1, c 2, b ja u alipuut ovat punamustia puita, joissa kaikki polut lehtiin sisältävät k mustaa solmua g g z rotate p left rotate g right p u z u p g b z p c 2 b c 1 c 2 u c 1 c 2 b c 1 Kierretään solmua p vasemmalle Kierretään solmua g oikealle ja väritetään z mustaksi ja g punaiseksi Uusi solmun z alipuu on punamusta puu ja kaikki sen polut sisältävät saman määrän k + 1 mustia solmuja kuin solmusta g ennen kiertämistä ja uudelleenvärittämistä Tasapainotus on nyt tehty Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

53 Avainten poistaminen Avainten poistaminen on hieman monimutkaisempaa Perusprosessi on samanlainen kuin perushakupuilla Jos poistettava solmu on punainen, punamustan puun ominaisuudet säilyvät eikä tarvetta tasapainottamiselle ole Mustaa solmua poistettaessa alipuun polkujen mustien solmujen määrä laskee yhdellä ja voidaan joutua tasapainottamaan puuta Yksityiskohdat esitetty kappaleessa 13.4 kirjassa Introduction to Algorithms, 3rd ed. (online via Aalto lib), eivät kuulu kurssin sisältöön Tommi Junttila (Aalto University) Kierros 4 CS-A1140 / Autumn / 53

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

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

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

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

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

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

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

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

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

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

Lisätiedot

Algoritmit 2. Luento 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

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

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

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

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

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

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

Lisätiedot

Algoritmit 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

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

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

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

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

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

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

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

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

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

(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

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

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

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

Kierros 3: Puut. Tommi Junttila. Aalto University School of Science Department of Computer Science

Kierros 3: Puut. Tommi Junttila. Aalto University School of Science Department of Computer Science Kierros 3: Puut Tommi Junttila Aalto University School of Science Department of Computer Science CS-A1140 Data Structures and Algorithms Autumn 2017 Tommi Junttila (Aalto University) Kierros 3 CS-A1140

Lisätiedot

Algoritmit 2. Luento 6 Ke Timo Männikkö

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

Lisätiedot

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

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

Lisätiedot

Algoritmit 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

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

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

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

Johdatus graafiteoriaan

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

Lisätiedot

7. Tasapainoitetut hakupuut

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

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

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

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

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

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

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

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

Datatähti 2019 loppu

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

Lisätiedot

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

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

CS-A1140 Tietorakenteet ja algoritmit

CS-A1140 Tietorakenteet ja algoritmit CS-A1140 Tietorakenteet ja algoritmit Kierros 3: Puut Tommi Junttila Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan laitos Syksy 2016 Sisältö Puut yleisesti Matemaattinen määrittely Puiden läpikäynti

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

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

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

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

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

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

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

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

Lisätiedot

Algoritmi on periaatteellisella tasolla seuraava:

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

Lisätiedot

Algoritmit 2. Demot Timo Männikkö

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

Lisätiedot

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

3. Binääripuu, Java-toteutus

3. Binääripuu, Java-toteutus 3. Binääripuu, Java-toteutus /*-------------------------------------------------------------/ / Rajapinta SearchTree: binäärisen hakupuun käsittelyrajapinta / / Metodit: / / void insert( Comparable x );

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

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

8. Puna-mustat puut ja tietorakenteiden täydentäminen

8. Puna-mustat puut ja tietorakenteiden täydentäminen 8. Puna-mustat puut ja tietorakenteiden täydentäminen Tässä osassa perehdytään puna-mustiin puihin, jotka toteuttavat yhden tavan pitää binäärinen hakupuu tasapainossa. Teoksessa [Cor] käsitellään puna-mustia

Lisätiedot

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia Tehtävä 1 Tehtävässä 1 mallinnettiin Monopolipeliä. Alla olevassa esimerkissä peliin liittyy aina 2 noppaa, peliä pelataan pelilaudalla,

Lisätiedot

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe malliratkaisut ja arvosteluperusteet

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

Lisätiedot

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

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

Lisätiedot

Mukautuvat järjestämisalgoritmit

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

Lisätiedot

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

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

Lisätiedot

Algoritmit 2. Luento 10 To Timo Männikkö

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

Lisätiedot

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

4 Tehokkuus ja algoritmien suunnittelu

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

Lisätiedot

Algoritmit 1. Luento 9 Ti Timo Männikkö

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

Lisätiedot

Kysymyksiä koko kurssista?

Kysymyksiä koko kurssista? Kysymyksiä koko kurssista? Lisää kysymyksesi osoitteessa slido.com syötä event code: #8777 Voit myös pyytää esimerkkiä jostain tietystä asiasta Vastailen kysymyksiin luennon loppupuolella Tätä luentoa

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin

Lisätiedot

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

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

Lisätiedot

Tieto- ja tallennusrakenteet

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

Lisätiedot

v 8 v 9 v 5 C v 3 v 4

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

Lisätiedot

Tiraka, yhteenveto tenttiinlukua varten

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

Lisätiedot

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

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9 Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9 Tuntitehtävät 9-10 lasketaan alkuviikon harjoituksissa ja tuntitehtävät 13-14 loppuviikon harjoituksissa. Kotitehtävät 11-12 tarkastetaan loppuviikon

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

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

Lisätiedot

Koe ma 28.2 klo salissa A111, koeaika kuten tavallista 2h 30min

Koe ma 28.2 klo salissa A111, koeaika kuten tavallista 2h 30min Koe Koe ma 28.2 klo 16.00-19 salissa A111, koeaika kuten tavallista 2h 30min Kokeessa saa olla mukana A4:n kokoinen kaksipuolinen käsin tehty, itse kirjoitettu lunttilappu Neuvontapaja (Joel ja Nyman)

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

Tarkennamme geneeristä painamiskorotusalgoritmia

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

Lisätiedot

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

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

Lisätiedot

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

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

Lisätiedot

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

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

Lisätiedot

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

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:

Lisätiedot

6. Hakupuut. Hakupuu (engl. search tree) on listaa huomattavasti edistyneempi tapa toteuttaa abstrakti tietotyyppi joukko

6. Hakupuut. Hakupuu (engl. search tree) on listaa huomattavasti edistyneempi tapa toteuttaa abstrakti tietotyyppi joukko 6. Hakupuut Hakupuu (engl. search tree) on listaa huomattavasti edistyneempi tapa toteuttaa abstrakti tietotyyppi joukko Puurakenteelle on tietojenkäsittelyssä myös muuta käyttöä, esim. algoritmin suoritusajan

Lisätiedot

18. Abstraktit tietotyypit 18.1

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:

Lisätiedot

Anna Kuikka Pyöräkatu 9 B Kuopio GSM: Opiskelijanro: 60219K. Prioriteettijonot

Anna Kuikka Pyöräkatu 9 B Kuopio GSM: Opiskelijanro: 60219K. Prioriteettijonot Anna Kuikka Pyöräkatu 9 B 68 70600 Kuopio GSM: 040-734 9266 akuikka@cc.hut.fi Opiskelijanro: 60219K Prioriteettijonot PRIORITEETTIJONOT...1 1. JOHDANTO...3 2. TOTEUTUKSET...3 1.2 Keon toteutus...4 1.3

Lisätiedot

Datatähti 2000: alkukilpailun ohjelmointitehtävä

Datatähti 2000: alkukilpailun ohjelmointitehtävä Datatähti 2000: alkukilpailun ohjelmointitehtävä 1 Lyhyt tehtävän kuvaus Tehtävänä on etsiä puurakenteen esiintymiä kirjaintaulukosta. Ohjelmasi saa syötteenä kirjaintaulukon ja puun, jonka jokaisessa

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 11.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 11.2.2009 1 / 33 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

Lisätiedot