Mukautuvat järjestämisalgoritmit

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

9 Erilaisia tapoja järjestää

On annettu jono lukuja tai muita alkioita, joiden välille on määritelty suuruusjärjestys. Tehtävänä on saattaa alkiot suuruusjärjestykseen.

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

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

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

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 2. Luento 2 Ke Timo Männikkö

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

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö

A TIETORAKENTEET JA ALGORITMIT

Tietorakenteet ja algoritmit - syksy

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Kierros 2: Järjestämisalgoritmeja

Algoritmit 1. Luento 14 Ke Timo Männikkö

A TIETORAKENTEET JA ALGORITMIT

Algoritmit 2. Luento 5 Ti Timo Männikkö

Tietorakenteet ja algoritmit. Järjestäminen. Ari Korhonen

CS-A1140 Tietorakenteet ja algoritmit

Algoritmit 1. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit

Tietorakenteet, laskuharjoitus 7, ratkaisuja

4 Tehokkuus ja algoritmien suunnittelu

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

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

Algoritmit 1. Luento 12 Ke Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Olkoon S(n) kutsun merge-sort(a, p, q) tilavaativuus kun p q + 1 = n. Oletetaan merge toteutetuksi vakiotyötilassa (ei-triviaalia mutta mahdollista).

Algoritmit 1. Luento 10 Ke Timo Männikkö

ja λ 2 = 2x 1r 0 x 2 + 2x 1r 0 x 2

Algoritmit 1. Luento 12 Ti Timo Männikkö

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

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

TIE Tietorakenteet ja algoritmit 25

Binäärihaun vertailujärjestys

4. Joukkojen käsittely

Algoritmien suunnittelu ja analyysi (kevät 2004) 1. välikoe, ratkaisuja

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

Tämä on helpompi ymmärtää, kun tulkitaan keko täydellisesti tasapainotetuksi binääripuuksi, jonka juuri on talletettu taulukon paikkaan

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

Algoritmit 2. Luento 6 Ke Timo Männikkö

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

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

Tiraka, yhteenveto tenttiinlukua varten

Algoritmit 1. Luento 8 Ke Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

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

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

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

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

Algoritmit 2. Luento 4 Ke Timo Männikkö

811312A Tietorakenteet ja algoritmit V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit

TAMPEREEN TEKNILLINEN YLIOPISTO

Tietorakenteet, laskuharjoitus 3, ratkaisuja

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

A TIETORAKENTEET JA ALGORITMIT

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe malliratkaisut ja arvosteluperusteet

Algoritmit 2. Demot Timo Männikkö

8. Lajittelu, joukot ja valinta

Algoritmit 1. Luento 2 Ke Timo Männikkö

Paikkatiedon käsittely 5. Paikkatiedon indeksointi

Algoritmit 2. Luento 3 Ti Timo Männikkö

TAMPEREEN TEKNILLINEN YLIOPISTO

Algoritmit 1. Luento 6 Ke Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Ongelma 1: Ovatko kaikki tehtävät/ongelmat deterministisiä?

(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.

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

Ongelma 1: Ovatko kaikki tehtävät/ongelmat deterministisiä?

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

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

Algoritmit 1. Luento 11 Ti Timo Männikkö

Algoritmit 1. Luento 7 Ti Timo Männikkö

2.3 Keskimääräisen tapauksen analyysi

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

1 Erilaisia tapoja järjestää

1 Puu, Keko ja Prioriteettijono

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

Algoritmien suunnittelu ja analyysi

14 Tasapainotetut puurakenteet

1.4 Funktioiden kertaluokat

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

5 Kertaluokkamerkinnät

3. Binääripuu, Java-toteutus

7. Tasapainoitetut hakupuut

A TIETORAKENTEET JA ALGORITMIT

Kierros 4: Binäärihakupuut

Tietorakenteet ja algoritmit Hakurakenteet Ari Korhonen

Tietotekniikan laitos T /1223 Tietorakenteet ja algoritmit T/Y

Luentorunko keskiviikolle Hierarkkinen ryvästäminen

f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))

Silmukkaoptimoinnista

Alaraja vertailuihin perustuvalle järjestämiselle

Algoritmit 1. Luento 10 Ke Timo Männikkö

TEEMU ROOS (KALVOT MUOKATTU PATRIK HOYERIN LUENTOMATERIAALISTA)

Algoritmit 2. Luento 6 To Timo Männikkö

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

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne.

Transkriptio:

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 Ω(n log n) vertailua esim. lomitusjärjestäminen (merge sort) on O(n log n) mutta osa tapauksista voidaan järjestää tätä nopeammin esim. lisäysjärjestäminen (insertion sort) järjestää valmiiksi järjestyksessä olevan jonon ajassa O(n) mukautuva järjestäminen (adaptive sorting) tutkii tätä mitä tarkempaa voidaan sanoa kuin että algoritmi on pahimmassa tapauksessa O(n log n) uusia järjestämisalgoritmeja, jotka järjestävät melkein järjestyksessä olevia jonoja nopeammin useita määritelmiä melkein järjestyksessä olemiselle

3 Melkein järjestyksessä: mukautuvuusmittarit mikä syöte on melkein järjestyksessä? voi mitata usealla tavalla esim. inversiot: 0.. (n 2 n)/2 väärin päin olevaa alkioparia Esimerkkejä Inv-mittarista 1 2 3 4 5 6 7 8 9 10 11 Inv = 0 1 2 3 4 6 5 7 8 9 10 11 Inv = 1 3 4 5 6 1 2 7 8 10 9 11 Inv = 9 11 10 9 8 7 6 5 4 3 2 1 Inv = 55 mukautuvat järjestämisalgoritmit ovat optimaalisia tiettyjen mittarien suhteen aikavaativuus = vertailujen vähimmäismäärä mittarille esim. Inv-optimaalinen jos aika on O(n log(inv/n)) pahimmassa tapauksessa aina O(n log n) mittareita on esitetty n. 15 kpl, ja niillä on yhteyksiä esim. kaikki Loc-optimaaliset algoritmit ovat myös Inv-optimaalisia

4 Mukautuvat puujärjestämisalgoritmit lisäysjärjestämisestä voi tehdä mukautuvan käyttämällä taulukon sijaan hakupuuta eli lisätään alkiot yksi kerrallaan hakupuuhun ja luetaan järjestys siitä lopuksi seuraavaa lisäyskohtaa ei haeta hakupuun juuresta eli alkioiden keskeltä lähtien, vaan: suurimmasta alkiosta Inv-optimaalinen algoritmi edellisestä lisäyskohdasta Loc-optimaalinen algoritmi puussa pitää liikkua ylös ja sivulle; vaihtoehtoja: muokatut AVL-puut (ei pääse sivulle vain Inv-opt.) finger-puut (B-puu isä- ja sisaruslinkeillä) splay-puut (josta Splaysort, parhaita näistä algoritmeista) myös lomitusjärjestämisen voi tehdä hakupuilla

5 Bulkkipuu Block-mittari: montako alijonoa, jotka eivät muutu järjestettäessa? oma bulkkipuumme tallettaa näitä alijonoja alijono käyttäytyy kuin se olisi yksi alkio alijono pitää jakaa, jos sen sisään lisätään Jono (Block ) 1 2 3 10 11 9 4 5 6 7 8 (4 ) Bulkkipuu splay-puusta [4, 5, 6, 7, 8] [1, 2, 3] [10, 11] [9]

5 Bulkkipuu Block-mittari: montako alijonoa, jotka eivät muutu järjestettäessa? oma bulkkipuumme tallettaa näitä alijonoja alijono käyttäytyy kuin se olisi yksi alkio alijono pitää jakaa, jos sen sisään lisätään Jono (Block, Inv Block rep ) 1 2 3 10 11 9 4 5 6 7 8 (4, 3) 10 11 9 4 5 6 7 8 1 2 3 (4, 6) Bulkkipuu splay-puusta [4, 5, 6, 7, 8] [1, 2, 3] [10, 11] [9] tähän perustuva lisäysjärjestäminen on mm. Inv-, Loc-, Block-, Inv Block rep - ja Loc Block rep -optimaalinen Inv Block rep mittaa Block-mittarin laskemien alijonojen keskinäistä järjestystä Inv:lla

6 Vähän koetuloksia Running time (s) Suoritusaikoja eri Block-mittarin arvoilla, n = 2 25 34 10 6 5 60 4 50 3 40 30 2 20 1 10 0 10 0 10 1 10 2 10 3 10 4 10 5 10 6 Block(X) 0 10 6 10 7 Block(X) Splaysort Bulk-tree sort Quicksort Merge sort

7 Lisää koetuloksia Vertailujen määrä eri Block-mittarin arvoilla, n = 2 25 34 10 6 40 35 Comparisons/N 30 25 20 15 10 5 0 10 0 10 1 10 2 10 3 10 4 10 5 10 6 10 7 Block(X) Splaysort Bulk-tree sort Quicksort Merge sort

8 Lopuksi mukautuvaa järjestämistä voisi käyttää missä vain mutta tavallisia järjestämisalgoritmeja parempi vain jos suuri osa syötejonoista on melkein järjestyksessä muuta tähän liittyvää tutkimusryhmämme tutkimusta: bulkkipuu toimii myös yleiskäyttöisenä hakupuuna, jossa on tehokkaat monen alkion lisäys ja poisto jonkin verran muokattuna se sopii hyvin SSD-levyjä käyttävän tietokannan hakemistorakenteeksi aihepiiriä lähimmät pääaineet ja kurssit: Ohjelmisto- T-106.4100 Algoritmien suunnittelu ja analyysi järjestelmät T-106.5221 Transaktionhallinta tietokantajärjestelmissä T-106.5400 String Algorithms Tietojen- T-79.4202 Principles of Algorithmic Techniques käsittelyteoria T-79.5207 Advanced Course in Algorithms