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

Samankaltaiset tiedostot
Algoritmit 1. Luento 12 Ke Timo Männikkö

Algoritmit 1. Luento 12 Ti Timo Männikkö

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

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 11 Ti Timo Männikkö

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

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

Algoritmit 1. Luento 3 Ti Timo Männikkö

Binäärihaun vertailujärjestys

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

5 Kertaluokkamerkinnät

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 1. Luento 5 Ti Timo Männikkö

Tietorakenteet, laskuharjoitus 3, ratkaisuja

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

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 1. Luento 14 Ke Timo Männikkö

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

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Algoritmit 1. Demot Timo Männikkö

4. Joukkojen käsittely

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Algoritmit 2. Luento 8 To Timo Männikkö

4 Tehokkuus ja algoritmien suunnittelu

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

Algoritmit 1. Demot Timo Männikkö

Tarkennamme geneeristä painamiskorotusalgoritmia

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

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

Algoritmit 2. Luento 6 To Timo Männikkö

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

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

TIE Tietorakenteet ja algoritmit 25

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

A TIETORAKENTEET JA ALGORITMIT

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 8 Ke Timo Männikkö

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

(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ä.

Algoritmit 2. Luento 6 Ke Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

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

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

8. Lajittelu, joukot ja valinta

C.C. McGeoch, Toward an experimental method for algorithm simulation. algorithm simulation = algoritmin testaus, experimental algorithmics

Algoritmi on periaatteellisella tasolla seuraava:

7. Satunnaisalgoritmit (randomized algorithms)

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

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

7.4 Sormenjälkitekniikka

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

Algoritmit 1. Luento 2 Ke Timo Männikkö

3 Lajittelualgoritmeista

Algoritmit 2. Luento 14 Ke Timo Männikkö

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

Algoritmit 2. Luento 12 To Timo Männikkö

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

58131 Tietorakenteet ja algoritmit (syksy 2015)

Tutkimusmenetelmät-kurssi, s-2004

Kanta ja dimensio 1 / 23

Fibonacci-kasoilla voidaan toteuttaa samat operaatiot kuin binomikasoilla.

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Kaikki kurssin laskuharjoitukset pidetään Exactumin salissa C123. Malliratkaisut tulevat nettiin kurssisivulle.

8. Lajittelu, joukot ja valinta

ABHELSINKI UNIVERSITY OF TECHNOLOGY

Demo 1: Simplex-menetelmä

Kierros 4: Binäärihakupuut

Algoritmit 2. Luento 5 Ti Timo Männikkö

1. Osoita, että joukon X osajoukoille A ja B on voimassa toinen ns. de Morganin laki (A B) = A B.

Tehtävä 2: Loppuosataulukko

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Tietorakenteet ja algoritmit - syksy

Algoritmit 2. Demot Timo Männikkö

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

Sovellettu todennäköisyyslaskenta B

Luku 8. Aluekyselyt. 8.1 Summataulukko

Algoritmit 1. Luento 10 Ke Timo Männikkö

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

CS-A1140 Tietorakenteet ja algoritmit

811312A Tietorakenteet ja algoritmit, VI Algoritmien suunnitteluparadigmoja

4 Lajittelualgoritmeista

Todennäköisyyslaskenta I, kesä 2017 Helsingin yliopisto/avoin Yliopisto Harjoitus 1, ratkaisuehdotukset

Tietorakenteet ja algoritmit

A TIETORAKENTEET JA ALGORITMIT

Tietorakenteet, laskuharjoitus 6,

Algoritmit 2. Luento 10 To Timo Männikkö

Datatähti 2019 loppu

Avaruuden R n aliavaruus

ImageRecognition toteutus

Tietorakenteet, laskuharjoitus 1,

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

Tilastollisen analyysin perusteet Luento 9: Moniulotteinen lineaarinen. regressio

Johdatus verkkoteoriaan 4. luento

Transkriptio:

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 sitten siirretään pivot paikalleen alkion lopullinen paikka lajitellussa sekvenssissä jatketaan lajittelua rekursiivisesti pivot-alkion erottamiin ryhmiin Tietorakenteet, syksy 2007 1 Tietorakenteet, syksy 2007 2 Tietorakenteet, syksy 2007 3 Tietorakenteet, syksy 2007 4

6 7 8 6 7 8 1 0 4 3 6 7 2 8 2 8 Tietorakenteet, syksy 2007 6 7 8 1 0 4 3 6 7 0 1 3 4 6 7 Tietorakenteet, syksy 2007 6 6 7 8 1 0 4 3 6 7 0 1 3 4 6 7 1 4 6 0 2 3 7 8 0 2 3 7 8 Tietorakenteet, syksy 2007 7 Tietorakenteet, syksy 2007 8

6 7 8 1 0 4 3 6 7 0 1 3 4 6 7 1 4 6 1 4 6 0 1 2 3 4 6 7 8 Alkioiden jako pivotin suhteen esim. seuraavasti: 6 1 4 3 7 2 1 6 4 3 7 2 1 4 6 3 7 2 1 4 0 6 8 3 7 2 1 4 0 3 8 6 7 2 Tietorakenteet, syksy 2007 muodostetaan joukot L ja G taulukkoon peräkkäin: alkuosassa L, loppuosassa G alkuasetus: suurempien alkioiden joukko G = koko jaettava joukko, ja pienempien ja yhtäsuurten alkioiden joukko L tyhjä selataan joukko G askel kerrallaan jos nykyalkio pivot-alkio, siirretään alkio joukosta G joukkoon L käytännössä: siirretään alkio joukon G alkuun ja joukkojen rajaa askel eteenpäin aikavaativuus O(n i ), jos alkioita n i kpl Tietorakenteet, syksy 2007 11 Tietorakenteet, syksy 2007 10 6 7 8 1 0 4 3 6 7 0 1 3 4 6 7 Pikalajittelun kokonaisaikavaativuus? kukin n i alkioisen joukon jako vie O(n i ) kullakin tasolla arvojen n i summa O(n) tasojen määrä? Tietorakenteet, syksy 2007 12

0 1 2 3 4 6 7 8 0 1 2 3 4 6 7 8 0 1 2 3 4 6 7 Pahimmassa tapauksessa O(n) tasoa jos pivot-alkio jaettavan joukon suurin tai pienin alkio osajoukkojen koko pienenee ainoastaan yhdellä per taso (vrt. sekvenssimäinen binääripuu) Tietorakenteet, syksy 2007 13 L G jos joukoista L ja G pienempi keskimäärin vähintään kokoa n i k? joukot pienenevät jaoissa keskimäärin vähintään kertoimen c k 1 k verran alin taso saavutetaan O(log 1/c (n)) jakotason jälkeen jos k (ja siten c) vakio, pätee log 1/c (n) = log 2 ( log 1/c (2) = O(log(n)) Pikalajittelu pahimmassa tapauksessa O(n 2 ) Keskimääräinen tapaus? oletus: pivotin suuruus verrattuna muuhun joukkoon satunnainen ajatellaan, että n i alkioinen joukko olisi järjestetty, ja jaettu k yhtäsuureen osaan todennäköisyys, että pivot n i k suurimman (tai pienimmän) alkion joukossa? 2 k pivot ensimmäisessä tai viimeisessä osassa Tietorakenteet, syksy 2007 14 Pikalajittelun aikavaativuus keskimäärin O(n log(n)) Edellä oletus, että pivot valikoituu satunnaisesti tämä varmistetaan vahvemmin käyttäen ns. satunnaistettua pikalajittelua pivot-alkio valitaan jokaisella kerralla satunnaisesti jaettavasta alkiojoukosta ei olemassa tietyn rakenteen omaavia alkiojoukkoja, jotka johtaisivat aina pahimpaan O(n 2 ) aikaan Tietorakenteet, syksy 2007 1 Tietorakenteet, syksy 2007 16

Lajittelun sukulainen: valinta (selection) syöte: n-alkioinen joukko ja parametri k tehtävä: hae suuruusjärjestyksessä k. alkio esim. hae kymmenenneksi pienin alkio Yksi ratkaisutapa: osittainen pikalajittelu ns. pikavalinta pivot-alkio asetettu kohdalleen: sen sijainti kertoo kummalla puolella haettu k. suurin alkio on vrt. binäärihaku(puu), hakuhierarkia määräytyy pivot-alkioiden suhteen Tietorakenteet, syksy 2007 17 1. 2. 3. 4.. 6. 7. 8.. 10. Tietorakenteet, syksy 2007 18 1. 2. 3. 4.. 6. 7. 8.. 10. 2 1. 2. 3. 4.. 6. 7. 8.. 10. Tietorakenteet, syksy 2007 1 Tietorakenteet, syksy 2007 20

3 4 2 3 1. 2. 3. 4.. 6. 7. 8.. 10. 3 4 4 2 3 4 1. 2. 3. 4.. 6. 7. 8.. 10. Tietorakenteet, syksy 2007 21 Tietorakenteet, syksy 2007 22 Pikavalinnan aikavaativuus? tasoja pahimmillaan O(n) työmäärä per taso pahimmillaan O(n) pahimmassa tapauksessa O(n 2 ) keskimäärin? n +cn +c 2 n +.. n Σ i=0 ci = n 1 1 c, missä c < 1 osituskertoimen yläraja Pikavalinta siis keskimäärin O(n), koska c vakio Tietorakenteet, syksy 2007 23