Algoritmit 2. Luento 6 Ke Timo Männikkö

Samankaltaiset tiedostot
Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 4 To Timo Männikkö

Algoritmit 1. Luento 8 Ke Timo Männikkö

Algoritmit 2. Luento 4 Ke Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö

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.

Algoritmit 1. Luento 12 Ti Timo Männikkö

Algoritmit 2. Demot Timo Männikkö

Algoritmit 1. Luento 12 Ke Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 1. Luento 6 Ke Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 2. Luento 12 To Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Tietorakenteet, laskuharjoitus 7, ratkaisuja

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

Algoritmit 1. Luento 10 Ke Timo Männikkö

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

Algoritmit 1. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 9 Ti Timo Männikkö

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Datatähti 2019 loppu

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö

Paikkatiedon käsittely 5. Paikkatiedon indeksointi

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

Algoritmit 2. Luento 11 Ti Timo Männikkö

1.1 Tavallinen binäärihakupuu

B + -puut. Kerttu Pollari-Malmi

Luku 8. Aluekyselyt. 8.1 Summataulukko

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

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

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

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

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

14 Tasapainotetut puurakenteet

Algoritmit 2. Luento 9 Ti Timo Männikkö

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

Algoritmit 2. Luento 10 To Timo Männikkö

Paikkatiedon hallinta ja analyysi 4. Paikkatiedon indeksointi

Algoritmit 2. Demot Timo Männikkö

7. Tasapainoitetut hakupuut

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

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

A TIETORAKENTEET JA ALGORITMIT

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Binäärihaun vertailujärjestys

Ohjelmoinnin perusteet Y Python

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

4. Joukkojen käsittely

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 1. Luento 4 Ke Timo Männikkö

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

Algoritmit 2. Luento 13 Ti Timo Männikkö

Ohjelmoinnin perusteet Y Python

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

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

Paikkatiedon käsittely 6. Kyselyn käsittely

Paikkatiedon hallinta ja analyysi 4. Paikkatiedon indeksointi (jatkoa)

Algoritmit 1. Luento 11 Ti Timo Männikkö

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

D B. Harvat hakemistot. Harvat hakemistot

811312A Tietorakenteet ja algoritmit II Perustietorakenteet

Algoritmit 1. Demot Timo Männikkö

isomeerejä yhteensä yhdeksän kappaletta.

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Tehtävä 2: Loppuosataulukko

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

Hakemistotyypeistä. Hakemistorakenteet. Hakemiston toteutuksesta. Hakemiston toteutuksesta

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

Algoritmit 2. Luento 12 Ke Timo Männikkö

Algoritmit 2. Luento 8 To Timo Männikkö

Tarkennamme geneeristä painamiskorotusalgoritmia

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

Algoritmi on periaatteellisella tasolla seuraava:

Tietokannan indeksointi: B puun ja hajautusindeksin tehokkuus

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

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

Algoritmit 1. Luento 14 Ke Timo Männikkö

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

Johdatus verkkoteoriaan 4. luento

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 14 To Timo Männikkö

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

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

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista

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

Ohjelmoinnin peruskurssi Y1

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

Transkriptio:

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 40 60 80 130 90 100 200 250 340 400 150 180 Astetta m oleva B-puu: 210 220 240 270 300 Alkioita m 1... 2m 1 Osoittimia m... 2m 360 370 420 440 460 Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 3/31

B-puun operaatiot: Haku Alkion haku: Aloitetaan juurisolmusta Etsitään avainta solmusta Jos alkio ei ole solmussa, siirrytään avainta vastaavaan alipuuhun Tarvittaessa jatketaan lehtisolmuun saakka Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 4/31

B-puun operaatiot: Lisäys Alkion lisäys: Kuljetaan juurisolmusta kohti avainta vastaavaa lehtisolmua Jos polulla täysi solmu, halkaistaan se kahdeksi solmuksi Halkaisussa keskimmäisen alkion vasemmalla puolella olevat alkiot jäävät solmuun, oikealla puolella olevat siirretään uuteen solmuun Jos juurisolmu täynnä, muodostetaan sen alkioista uusi taso juuren alapuolelle Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 5/31

B-puun operaatiot: Lisäys Solmun halkaisu: w x a w x a y Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 6/31

B-puun operaatiot: Lisäys Uuden tason lisääminen: x a y x a z Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 7/31

B-puun operaatiot: Poisto Alkion poisto: Aloitetaan poistettavan alkion etsintä juurisolmusta Pidetään huoli, että mikään solmu ei tule liian vajaaksi Tarvittaessa alkioita siirretään haarautumissolmusta sen lapsisolmuun ja päinvastoin Tarvittaessa täsmälleen puoliksi täynnä olevia sisarussolmuja yhdistetään yhdeksi solmuksi Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 8/31

B-puun operaatiot: Poisto Alkioiden siirto: x a y b z x b y a z Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 9/31

B-puun operaatiot: Poisto Solmujen yhdistäminen: y x a z x a Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 10/31

B-puun muunnelmia B+-puu: Kaikki tieto lehtisolmuissa Haarautumissolmuissa vain avaimia ja osoittimia Lehtisolmut linkitetty toisiinsa kahteen suuntaan linkitettynä listana Sallii lehtisolmujen peräkkäiskäsittelyn Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 11/31

B-puun muunnelmia B*-puu: Solmun tullessa täyteen, ei halkaista välittömästi Ensin yritetään saada lisätilaa naapurisolmusta Lisätään uusi solmu, jos naapurisolmukin on täynnä, ja jaetaan tieto suunnilleen tasan näiden kolmen solmun kesken Keskimääräinen täyttösuhde parempi kuin tavallisella B-puulla Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 12/31

Nelipuu Kaksidimensioisen tiedon tallennukseen Solmulla voi olla neljä alipuuta Esimerkki: Tallennetaan tason pisteitä neliön muotoisessa alueessa Jaetaan neljään yhtä suureen osaan koordinaattiakselien suuntaisilla viivoilla Jatketaan jakoa, kunnes jokainen piste on omassa neliössään Kukin neliö vastaa yhtä solmua nelipuussa Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 13/31

Esimerkki 3 2 6 1 7 4 5 8 4 1 2 3 6 7 5 8 Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 14/31

Nelipuun operaatiot Haku: Solmussa tutkitaan, mihin osaneliöön haettava piste kuuluu Siirrytään vastaavaan alipuuhun, kunnes tullaan lehtisolmuun Tutkitaan, onko lehtisolmuun tallennettu piste haettu piste Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 15/31

Nelipuun operaatiot Lisäys: Haetaan lehtisolmu, johon piste tulisi sijoittaa Jos lehtisolmussa on jo piste, jaetaan vastaava alue osaneliöihin Tehdään jakoa vastaava haarautumissolmu ja neljä lapsisolmua Tarvittaessa jatketaan jakoa, kunnes uusi piste yksin omassa neliössään Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 16/31

Nelipuun operaatiot Poisto: Haetaan lehtisolmu, jossa poistettava piste on Jos kyseiselle alueelle jää vain yksi piste, vastaavat osaneliöt yhdistetään Tehdään vastaavat muutoksen nelipuuhun Tarvittaessa jatketaan yhdistämistä Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 17/31

Nelipuun versioita Tasajaon asemesta pisteiden muodostama jako: Jokaisessa solmussa myös kyseisen pisteen tiedot Lisättäessä piste alue jaetaan neljään osaan koordinaattiakselien suuntaisilla viivoilla, jotka kulkevat kyseisen pisteen kautta Osa-alueet eivät neliötä vaan suorakulmioita Operaatiot jonkin verran hankalampia kuin tasajaossa Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 18/31

Nelipuun versioita Jako vain kahteen alueeseen: Tehdään jako vuorotellen x-koordinaatin ja y-koordinaatin suhteen Kullakin solmulla vain kaksi lapsisolmua Tehokkaampi muistitilan käyttö Voidaan yleistää useampiulotteisen tapaukseen: Esimerkiksi kolmiulotteinen tieto Alue (kuutio) jaetaan kolmella tasolla kahdeksaan osa-alueeseen Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 19/31

Trie-rakenteet Merkkijonojen käsittelyyn liittyvä tallennusmuoto Sanan haku, sanan sovitus, sanan etuosan sovitus Aakkosto A, erilaisten merkkien lkm d Joukko merkkijonoja S, merkkijonojen lkm s Ehto: Mikään joukon S merkkijono ei ole etuosa (etuliite) jostain toisesta joukon S merkkijonosta Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 20/31

Standarditrie Joukon S standarditrie on järjestetty puu T : Jokaiseen solmuun, paitsi juurisolmuun, liittyy yksi aakkoston A merkki Sisäisessä solmussa (haarautumissolmussa) lapsisolmujen järjestys määräytyy aakkoston luonnollisen järjestyksen mukaan Ulkoisia solmuja (lehtisolmuja) on s kpl Jokainen ulkoinen solmu liittyy yhteen merkkijonoon, joka saadaan kun kootaan yhteen polulla juuresta tähän ulkoiseen solmuun olevat merkit Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 21/31

Standarditrie Sisäisellä solmulla lapsia 1... d Polku juuresta syvyydelle i vastaa aina jonkin merkkijonon i:tä ensimmäistä merkkiä Puun korkeus sama kuin S:n pisimmän merkkijonon pituus Mikään merkkijono ei ole toisen merkkijonon etuosa Ulkoisiin solmuihin liittyvät merkkijonot yksikäsitteisiä Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 22/31

Esimerkki a k l n e s t s e t u s a i e ä i o t k a Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 23/31

Haku trie-rakenteesta Etsitään merkkijonoa, jonka pituus on m Aloitetaan juuresta ja edetään merkki kerrallaan vastaavan merkin mukaiseen haaraan (jos mahdollista) Jos polku päättyy ulkoiseen solmuun, merkkijono (tai sen alkuosa) löytyi Jos polku päättyy sisäiseen solmuun, merkkijono ei ole puussa Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 24/31

Haku trie-rakenteesta Käydään läpi m + 1 solmua Yhdessä solmussa menee aika Θ(d) Aikavaativuus Θ(dm) Joskus yhden solmun käsittely voidaan tehdä ajassa Θ(1) tai Θ(log m) Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 25/31

Trien muodostaminen Lisätään merkkijono kerrallaan Jäljitetään polkua niin pitkälle kuin mahdollista Jos merkkijono ei ole jo puussa, polku päättyy johonkin sisäiseen solmuun Luodaan merkkijonon loppuosalle uusi polku, päättyen ulkoiseen solmuun Yhden merkkijonon lisäys Θ(dm) Koko trien muodostaminen Θ(dn), missä n on kaikkien S:n merkkijonojen yhteispituus Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 26/31

Pakattu trie Sisäinen solmu v on tarpeeton, jos v:llä on vain yksi lapsi v ei ole juurisolmu Solmujen ketju (v 0, v 1 ),..., (v k 1, v k ) on tarpeeton, jos v i :t, i = 1,..., k 1, ovat tarpeettomia v 0 ja v k eivät ole tarpeettomia Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 27/31

Pakattu trie Trie-rakenteen pakkaaminen: Korvataan jokainen tarpeeton ketju (v 0, v 1 ),..., (v k 1, v k ) yhdellä haaralla (v 0, v k ) Asetetaan solmun v k tunnukseksi solmujen v 1,..., v k merkkien muodostama merkkijono Sisäisillä solmuilla ainakin kaksi lasta Solmujen tunnuksina merkkijonoja (ei pelkästään yksittäisiä merkkejä) Solmujen lkm suhteessa merkkijonojen lkm:ään (ei niiden yhteispituuteen) Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 28/31

Esimerkki le a k n s esä ot sa ti te u i ka Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 29/31

Pakattu trie Tehostetaan rakennetta edelleen: Merkkijonot tallennetaan taulukkoon S Merkkijonot: S[0], S[1],..., S[s 1] Puun solmuihin tallennetaan indeksejä (kokonaislukuja, ei merkkijonoja) Indeksikolmikko (i, j, k) tarkoittaa i:nnen merkkijonon alimerkkijonoa, joka sisältää merkit paikoista j... k Toisin sanoen (i, j, k) S[i][j..k] Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 30/31

Esimerkki 5,1,2 1,0,0 0,0,0 7,1,1 1,1,1 0,1,3 6,1,2 4,2,3 7,2,3 3,2,3 1,2,2 2,3,3 6,3,4 0 1 2 3 4 S[0] k e s ä S[1] a s u S[2] k o t i S[3] a s t e 0 1 2 3 4 S[4] a n s a S[5] a l e S[6] k o t k a S[7] a n t i Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 31/31