Algoritmit 1. Luento 12 Ti Timo Männikkö

Koko: px
Aloita esitys sivulta:

Download "Algoritmit 1. Luento 12 Ti Timo Männikkö"

Transkriptio

1 Algoritmit 1 Luento 12 Ti Timo Männikkö

2 Luento 12 Osittamisen tasapainoisuus Pikalajittelun vaativuus Lajittelumenetelmien vaativuus Laskentalajittelu Lokerolajittelu Kantalukulajittelu Algoritmit 1 Kevät 2019 Luento 12 Ti /33

3 Osittamisen tasapainoisuus Lomituslajittelu, suurten kokonaislukujen kertolasku: Jokaisessa osituksessa osista tulee (suunnilleen) samankokoisia Jos osat ovatkin hyvin erikokoisia: Miten se vaikuttaa algoritmin tehokkuuteen? Algoritmit 1 Kevät 2019 Luento 12 Ti /33

4 Osittamisen tasapainoisuus Esimerkki: Kokonaislukujen joukko S, koko S = n Tehtävänä määrätä S:n k:nneksi pienin luku Erikoistapaus mediaanin (keskimmäisen luvun) määrääminen k = n/2 Triviaaliratkaisuja: Määrätään järjestyksessä k pienintä lukua T (n) = O(kn) = O(n 2 ) Lajitellaan S:n luvut suuruusjärjestykseen, sitten poimitaan k:s luku T (n) = O(n log n) Algoritmit 1 Kevät 2019 Luento 12 Ti /33

5 Osittava ratkaisu esimerkille Valitaan satunnainen S:n alkio a Jaetaan muut alkiot kahteen joukkoon: S 1 :een a:ta pienemmät alkiot S 2 :een a:ta suuremmat alkiot (Oletetaan, että joukot erillisiä) Tiedetään, missä haettava alkio on: Jos S 1 :n koko vähintään k, alkio on S 1 :ssä Jos S 1 :n koko korkeintaan k 2, alkio on S 2 :ssa Jatketaan etsintää samalla tavalla kyseisestä pienemmästä joukosta Jos S 1 :n koko täsmälleen k 1, haettava alkio on a Algoritmit 1 Kevät 2019 Luento 12 Ti /33

6 Osittava ratkaisu esimerkille alkio select(joukko S, int k) { if ( S == 1) return a; // joukon ainoa alkio else { a = satunnainen S:n alkio; S1 = {x in S x < a}; S2 = {x in S x > a}; if ( S1 >= k) return select(s1, k); else if ( S1 == k-1) return a; else return select(s2, k- S1-1); } } Algoritmit 1 Kevät 2019 Luento 12 Ti /33

7 Osittava ratkaisu esimerkille Paras tapaus: Jos a valitaan aina suunnilleen keskeltä Rekursiokutsussa on joukko, jonka koko on noin puolet S:n koosta T (n) = T (n) = = O(n) { b, kun n = 1 T ( n ) + cn, kun n > 1 2 Algoritmit 1 Kevät 2019 Luento 12 Ti /33

8 Osittava ratkaisu esimerkille Pahin tapaus: Jos a valitaan mahdollisimman huonosti Rekursiokutsussa on joukko, jonka koko on n 1 T (n) = { b, kun n = 1 T (n 1) + cn, kun n > 1 Algoritmit 1 Kevät 2019 Luento 12 Ti /33

9 Osittava ratkaisu esimerkille T (n) = T (n 1) + cn = T (n 2) + c(n 1) + cn = T (n 3) + c(n 2) + c(n 1) + cn =... = T (1) + c 2 + c c(n 1) + cn = b + c(n 1)(n + 2)/2 = O(n 2 ) Algoritmit 1 Kevät 2019 Luento 12 Ti /33

10 Pikalajittelu (quicksort) Perustuu osittamiseen ja rekursioon Periaate: Alkiot jaetaan kahteen pienempään osaan, jotka voidaan lajitella erikseen toisistaan riippumatta Pikalajittelu: Jos taulukon pituus pienempi kuin jokin raja, järjestetään alkiot lisäyslajittelulla (ainakin silloin jos pituus < 3) Valitaan jokin alkioista jakotietueeksi (Jatkuu) Algoritmit 1 Kevät 2019 Luento 12 Ti /33

11 Pikalajittelu jatkuu Ositetaan taulukko siirtelemällä alkioita siten, että tämän vaiheen jälkeen: Jakotietue on paikassa j Alkiot, jotka ovat pienempiä kuin jakotietue, ovat ennen paikkaa j Alkiot, jotka ovat suurempia kuin jakotietue, ovat paikan j jälkeen Alkiot, jotka ovat yhtä suuria kuin jakotietue, voivat olla paikan j kummalla puolella tahansa (Jatkuu) Algoritmit 1 Kevät 2019 Luento 12 Ti /33

12 Pikalajittelu jatkuu Lajitellaan alkuosa (paikat 0, 1,..., j-1): Pikalajittelulla (rekursio) Lajitellaan loppuosa (paikat j+1, j+2,..., n-1): Pikalajittelulla (rekursio) Algoritmit 1 Kevät 2019 Luento 12 Ti /33

13 Jakotietueen valinta Eri vaihtoehtoja valinnalle: Ensimmäinen alkio Satunnainen alkio Keskimmäinen alkio Mediaanimenetelmä Yhdeksän alkion pseudomediaani Algoritmit 1 Kevät 2019 Luento 12 Ti /33

14 Pikalajittelun vaativuus Jakotietueen valinta: Kaikki edellä esitetyt menetelmät O(1) Ositus: Käydään läpi tarkasteltava taulukon osa kerran O(n) Osien lajittelu rekursiivisesti: Vaativuus riippuu siitä, miten hyvin ositus onnistui Algoritmit 1 Kevät 2019 Luento 12 Ti /33

15 Pikalajittelun vaativuus Paras tapaus: Jokaisessa osituksessa alkiot jaetaan kahteen tasan yhtäsuureen osaan T (n) = { b, kun n = 1 2T ( n ) + cn, kun n > 1 2 Sama rekursioyhtälö kuin lomituslajittelulle O(n log n) Algoritmit 1 Kevät 2019 Luento 12 Ti /33

16 Pikalajittelun vaativuus Pahin tapaus: Jokaisen osituksen jälkeen osissa 0 ja n 1 alkiota T (n) = { b, kun n = 1 T (n 1) + cn, kun n > 1 Sama rekursioyhtälö kuin edellä O(n 2 ) Mutta: Voidaan osoittaa, että keskimäärin pikalajittelun aikavaativuus on O(n log n) Algoritmit 1 Kevät 2019 Luento 12 Ti /33

17 Lajittelumenetelmien vaativuus Vertailumenetelmät: Perustuvat kahden alkion (avaimen) vertailuun Onko t[i] < t[j] Vastaus kyllä tai ei Vastauksen perusteella tehdään jotain ja suoritetaan uusi vertailu Menetelmä voidaan esittää binäärisenä päätöspuuna Jokainen haarautumissolmu vastaa yhtä vertailua Jokainen lehtisolmu vastaa yhtä järjestystä Algoritmit 1 Kevät 2019 Luento 12 Ti /33

18 Lajittelumenetelmien vaativuus Suurin mahdollinen määrä vertailuja = Pisin mahdollinen polku päätöspuussa = Päätöspuun korkeus Järjestettäviä alkioita n Erilaisia järjestyksiä n! Lehtisolmuja päätöspuussa n! Arvioidaan päätöspuun korkeutta h Algoritmit 1 Kevät 2019 Luento 12 Ti /33

19 Lajittelumenetelmien vaativuus Tasolla h on 2 h solmua, jos puu on tasapainoinen Vähemmän, jos puu ei ole täysin tasapainoinen Lehtisolmuja voi olla korkeintaan 2 h kpl Arvio 2 h n! eli h log 2 (n!) h log 2 n! = n/2 i=1 n i=1 log 2 i log 2 n 2 = n 2 log 2 n 2 = O(n log n) Algoritmit 1 Kevät 2019 Luento 12 Ti /33

20 Lajittelumenetelmien vaativuus Vertailumenetelmien vaativuus vähintään O(n log n) Kaikki edelliset ovat vertailumenetelmiä Esimerkiksi lomituslajittelu, jonka vaativuus on tässä mielessä optimaalinen Mutta: Jos avainten arvojen suhteen on rajoituksia tai menetelmässä voidaan tehdä muutakin kuin binäärisiä vertailuja Voidaan saada vaativuus paremmaksi Algoritmit 1 Kevät 2019 Luento 12 Ti /33

21 Laskentalajittelu (counting sort) Oletus: Järjestettävät alkiot (tai avaimet) kokonaislukuja väliltä 0, 1,..., k Idea: Lasketaan kullekin alkiolle a niiden alkioiden lukumäärä, jotka ovat a Tiedetään alkion a paikka Järjestettävät alkiot taulukossa t[1..n] Järjestetyt alkiot algoritmin päättyessä järjestyksessä taulukossa s[1..n] Työtilana taulukko u[0..k] Algoritmit 1 Kevät 2019 Luento 12 Ti /33

22 Laskentalajittelu 1. for (i = 0; i <= k; i++) u[i] = 0; // työtilataulukko u nollattu 2. for (j = 1; j <= n; j++) u[t[j]]++; // nyt u[i] sisältää alkioiden i lukumäärän 3. for (i = 1; i <= k; i++) u[i] = u[i] + u[i-1]; // nyt u[i] sisältää tiedon siitä montako // alkiota on pienempiä tai yhtä suuria kuin i 4. for (j = n; j >= 1; j--) { s[u[t[j]]] = t[j]; // alkio t[j] paikalleen u[t[j]]--; // lukumäärän päivitys } Algoritmit 1 Kevät 2019 Luento 12 Ti /33

23 Laskentalajittelu Askel 1: O(k) Askel 2: O(n) Askel 3: O(k) Askel 4: O(n) Yhteensä O(k + n) Jos k = O(n), niin vaativuus O(n) Lisäksi menetelmä on stabiili Algoritmit 1 Kevät 2019 Luento 12 Ti /33

24 Lokerolajittelu (bucket sort, bin sort) Idea: Alkiot sijoitellaan lokeroihin (nippuihin) siten, että samaan lokeroon menevät ne alkiot, joilla on samansuuruinen avain Lokerot käydään läpi avainten mukaisessa järjestyksessä ja poimitaan niistä alkiot järjestettyjen alkioiden joukkoon Algoritmit 1 Kevät 2019 Luento 12 Ti /33

25 Lokerolajittelu Yksinkertainen tapaus: Avaimet kokonaislukuja väliltä 0, 1,..., n 1 Jokainen avain esiintyy täsmälleen kerran Lokerot voidaan esittää taulukon alkioina 1. Luodaan tyhjä taulukko s[0..(n-1)] 2. for (i = 0; i < n; i++) s[t[i]] = t[i]; Vaativuus O(n) Algoritmit 1 Kevät 2019 Luento 12 Ti /33

26 Lokerolajittelu Yleinen tapaus: Sama avain voi esiintyä useasti Samaan lokeroon menee useampia alkioita Kaikki mahdolliset avaimet eivät esiinny Lokeroita jää tyhjiksi Lokeroa ei voida toteuttaa taulukon alkiona Toteutetaan lokerot (esimerkiksi) lineaarisina listoina Alkiot taulukossa t[0..(n-1)] Avainkenttien t[i].key arvot kokonaislukuja väliltä l, l + 1,..., h Mahdollisten avainten lukumäärä m = h l + 1 Algoritmit 1 Kevät 2019 Luento 12 Ti /33

27 Lokerolajittelu 1. for (i = 0; i < n; i++) Lisätään alkio t[i] lokeroon t[i].key 2. Luodaan tyhjä lista lis 3. for (j = l; j <= h; j++) Lisätään lokeron j alkiot listan lis loppuun Jos listaoperaatiot voidaan tehdä vakioajassa, on vaativuus O(n + m) Jos lisääminen lokeroihin tehdään stabiilisti, on koko algoritmikin stabiili Algoritmit 1 Kevät 2019 Luento 12 Ti /33

28 Kantalukulajittelu (radix sort) Idea: Alkiot järjestetään suuruusjärjestykseen kokonaislukujen numeroiden merkitsevyyden perusteella Kunkin yksittäisen numeron kohdalla lajittelu tehdään (esimerkiksi) lokerolajittelulla Avaimet kokonaislukuja väliltä 0, 1,..., (d k 1), missä: d käytetyn lukujärjestelmän kantaluku k jokin ennalta kiinnitetty kokonaisluku Algoritmit 1 Kevät 2019 Luento 12 Ti /33

29 Kantalukulajittelu: Esimerkki Avaimet välillä 0,1,...,999, eli d = 10 ja k = 3 Järjestettävänä luvut (avaimet): 453, 9, 638, 812, 48, 561, 528, 239, 94, 184 Järjestetään lokeroihin viimeisen numeron mukaan Järjestetään lokeroihin keskimmäisen numeron mukaan Järjestetään lokeroihin ensimmäisen numeron mukaan Algoritmit 1 Kevät 2019 Luento 12 Ti /33

30 Kantalukulajittelu: Esimerkki jatkuu Algoritmit 1 Kevät 2019 Luento 12 Ti /33

31 Kantalukulajittelu Yleisesti: Lajittelu k:ssa vaiheessa Jokaisessa vaiheessa: Järjestetään alkiot lokeroihin yhden numeron mukaan, aloittaen vähiten merkitsevästä numerosta Poimitaan alkiot lokeroista, aloittaen pienimmästä lokerosta Sijoitus lokeroihin tehdään stabiilisti eli uusi alkio lisätään lokeronsa viimeiseksi alkioksi Lokeroita tarvitaan d kpl Algoritmit 1 Kevät 2019 Luento 12 Ti /33

32 Kantalukulajittelu // Järjestettävät alkiot listassa lis for (i = 1; i <= k; i++) // vaiheet 1, 2,..., k { 1. for (j = 0; j < d; j++) Tyhjennetään lokero j 2. for each (alkio a in lista lis) { Poistetaan alkio a listasta lis Lisätään alkio a avaimensa i:nnen numeron mukaisen lokeron viimeiseksi alkioksi } // Lista lis on nyt tyhjä 3. for (j = 0; j < d; j++) Lisätään lokeron j alkiot listan lis loppuun } Algoritmit 1 Kevät 2019 Luento 12 Ti /33

33 Kantalukulajittelu Avaimet: Avaimet kokonaislukuja Mutta: Esimerkiksi merkkijonot voidaan aina esittää kokonaislukujen avulla Aikavaativuus: Lokerolajittelun vaativuus O(n + m), missä m avainten lkm Lokerolajittelu k kertaa, avainten lkm aina d Vaativuus O(k(n + d)) Luvut k ja d vakioita O(n) Algoritmit 1 Kevät 2019 Luento 12 Ti /33

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

Algoritmit 1. Luento 11 Ti Timo Männikkö Algoritmit 1 Luento 11 Ti 14.2.2017 Timo Männikkö Luento 11 Algoritminen ongelmanratkaisu Osittaminen Lomituslajittelu Lomituslajittelun vaativuus Rekursioyhtälöt Pikalajittelu Algoritmit 1 Kevät 2017

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

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

Algoritmit 2. Luento 8 To Timo Männikkö

Algoritmit 2. Luento 8 To Timo Männikkö Algoritmit 2 Luento 8 To 4.4.2019 Timo Männikkö Luento 8 Algoritmien analysointi Algoritmien suunnittelu Rekursio Osittaminen Rekursioyhtälöt Rekursioyhtälön ratkaiseminen Master-lause Algoritmit 2 Kevät

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

Algoritmit 1. Luento 3 Ti Timo Männikkö

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

Lisätiedot

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö Algoritmit 1 Luento 10 Ke 14.2.2018 Timo Männikkö Luento 10 Algoritminen ongelmanratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Lisäyslajittelu Valintalajittelu Permutaatiot

Lisätiedot

Algoritmit 1. Luento 14 Ke 25.2.2015. Timo Männikkö

Algoritmit 1. Luento 14 Ke 25.2.2015. Timo Männikkö Algoritmit 1 Luento 14 Ke 25.2.2015 Timo Männikkö Luento 14 Heuristiset menetelmät Heuristiikkoja kapsäkkiongelmalle Kauppamatkustajan ongelma Lähimmän naapurin menetelmä Kertaus ja tenttivinkit Algoritmit

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

Algoritmit 2. Luento 6 Ke Timo Männikkö

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

Lisätiedot

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

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

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

Algoritmit 2. Luento 14 Ke Timo Männikkö

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

Lisätiedot

Algoritmit 2. Luento 2 Ke Timo Männikkö

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

Lisätiedot

Algoritmit 2. Luento 6 To Timo Männikkö

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

Lisätiedot

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

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö Algoritmit 2 Luento 13 Ti 30.4.2019 Timo Männikkö Luento 13 Simuloitu jäähdytys Merkkijonon sovitus Horspoolin algoritmi Ositus ja rekursio Rekursion toteutus Algoritmit 2 Kevät 2019 Luento 13 Ti 30.4.2019

Lisätiedot

Algoritmit 1. Luento 1 Ti Timo Männikkö

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

Lisätiedot

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Demot Timo Männikkö Algoritmit 1 Demot 1 31.1.-1.2.2018 Timo Männikkö Tehtävä 1 (a) Algoritmi, joka tutkii onko kokonaisluku tasan jaollinen jollain toisella kokonaisluvulla siten, että ei käytetä lainkaan jakolaskuja Jaettava

Lisätiedot

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö Algoritmit 1 Luento 10 Ke 11.2.2015 Timo Männikkö Luento 10 Algoritminen ongelman ratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Väliinsijoituslajittelu Valintalajittelu

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

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

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

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

Lisätiedot

Algoritmit 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

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

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

Lisätiedot

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

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Demot Timo Männikkö Algoritmit 1 Demot 1 25.-26.1.2017 Timo Männikkö Tehtävä 1 (a) Algoritmi, joka laskee kahden kokonaisluvun välisen jakojäännöksen käyttämättä lainkaan jakolaskuja Jaettava m, jakaja n Vähennetään luku

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

9 Erilaisia tapoja järjestää

9 Erilaisia tapoja järjestää TIE-20100 Tietorakenteet ja algoritmit 198 9 Erilaisia tapoja järjestää Käsitellään seuraavaksi järjestämisalgoritmeja, jotka perustuvat muihin kuin vertailuun alkioiden oikean järjestyksen saamiseksi.

Lisätiedot

Algoritmit 1. Luento 13 Ti 23.2.2016. Timo Männikkö

Algoritmit 1. Luento 13 Ti 23.2.2016. Timo Männikkö Algoritmit 1 Luento 13 Ti 23.2.2016 Timo Männikkö Luento 13 Suunnittelumenetelmät Taulukointi Kapsäkkiongelma Ahne menetelmä Verkon lyhimmät polut Dijkstran menetelmä Verkon lyhin virittävä puu Kruskalin

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

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

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

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

Lisätiedot

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

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

Lisätiedot

Algoritmit 2. Demot Timo Männikkö

Algoritmit 2. Demot Timo Männikkö Algoritmit 2 Demot 2 3.-4.4.2019 Timo Männikkö Tehtävä 1 Avoin osoitteenmuodostus: Hajautustaulukko t (koko m) Erikoisarvot VAPAA ja POISTETTU Hajautusfunktio h(k,i) Operaatiot: lisaa etsi poista Algoritmit

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

8. Lajittelu, joukot ja valinta

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

Lisätiedot

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

Olkoon S(n) kutsun merge-sort(a, p, q) tilavaativuus kun p q + 1 = n. Oletetaan merge toteutetuksi vakiotyötilassa (ei-triviaalia mutta mahdollista). Esimerkki Lomitusjärjestäminen merge-sort(a, p, q): var k % paikallinen muuttuja, vakiotila 1. if p < q then 2. r := (p + q)/2 3. merge-sort(a, p, r) 4. merge-sort(a, r + 1, q) 5. merge(a, p, r, q) Olkoon

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

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

Algoritmit 1. Luento 13 Ma Timo Männikkö

Algoritmit 1. Luento 13 Ma Timo Männikkö Algoritmit 1 Luento 13 Ma 26.2.2018 Timo Männikkö Luento 13 Suunnittelumenetelmät Taulukointi Kapsäkkiongelma Ahne menetelmä Verkon lyhimmät polut Dijkstran menetelmä Verkon lyhin virittävä puu Kruskalin

Lisätiedot

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Demot Timo Männikkö Algoritmit 1 Demot 2 7.-8.2.2018 Timo Männikkö Tehtävä 1 (a) Ei-rekursiivinen algoritmi: etsipienin(t, n) { pnn = t[0]; for (i = 1; i < n; i++) { pnn = min(pnn, t[i]); return pnn; Silmukka suoritetaan

Lisätiedot

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö Algoritmit 2 Luento 13 Ti 2.5.2017 Timo Männikkö Luento 13 Merkkijonon sovitus Horspoolin algoritmi Laskennallinen vaativuus Päätösongelmat Epädeterministinen algoritmi Vaativuusluokat NP-täydellisyys

Lisätiedot

811312A Tietorakenteet ja algoritmit, 2015-2016. VI Algoritmien suunnitteluparadigmoja

811312A Tietorakenteet ja algoritmit, 2015-2016. VI Algoritmien suunnitteluparadigmoja 811312A Tietorakenteet ja algoritmit, 2015-2016 VI Algoritmien suunnitteluparadigmoja Sisältö 1. Hajota ja hallitse-menetelmä 2. Dynaaminen taulukointi 3. Ahneet algoritmit 4. Peruuttavat algoritmit 811312A

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

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

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 1. Demot Timo Männikkö

Algoritmit 1. Demot Timo Männikkö Algoritmit 1 Demot 2 1.-2.2.2017 Timo Männikkö Tehtävä 1 (a) Ei-rekursiivinen algoritmi: laskesumma(t, n) sum = t[0]; for (i = 1; i < n; i++) sum = sum + t[i]; return sum; Silmukka suoritetaan n 1 kertaa

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

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I MS-A040 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I G. Gripenberg Aalto-yliopisto. maaliskuuta 05 G. Gripenberg (Aalto-yliopisto) MS-A040 Diskreetin matematiikan perusteet Esimerkkejä. ym.,

Lisätiedot

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I MS-A040 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I G. Gripenberg Aalto-yliopisto. maaliskuuta 05 G. Gripenberg (Aalto-yliopisto) MS-A040 Diskreetin matematiikan perusteet Esimerkkejä. ym.,

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

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

Algoritmit 1. Luento 4 Ke Timo Männikkö

Algoritmit 1. Luento 4 Ke Timo Männikkö Algoritmit 1 Luento 4 Ke 18.1.2017 Timo Männikkö Luento 4 Tietorakenteet Pino Pinon toteutus Jono Jonon toteutus Lista Listaoperaatiot Algoritmit 1 Kevät 2017 Luento 4 Ke 18.1.2017 2/29 Pino Pino, stack,

Lisätiedot

Tietorakenteet, laskuharjoitus 3, ratkaisuja

Tietorakenteet, laskuharjoitus 3, ratkaisuja Tietorakenteet, laskuharjoitus 3, ratkaisuja 1. (a) Toistolauseen runko-osassa tehdään yksi laskuoperaatio, runko on siis vakioaikainen. Jos syöte on n, suoritetaan runko n kertaa, eli aikavaativuus kokonaisuudessaan

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. Demot Timo Männikkö

Algoritmit 2. Demot Timo Männikkö Algoritmit 2 Demot 4 24.-25.4.2019 Timo Männikkö Tehtävä 1 (a) int laske(n) { if (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

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

Algoritmit 2. Luento 12 To Timo Männikkö

Algoritmit 2. Luento 12 To Timo Männikkö Algoritmit 2 Luento 12 To 3.5.2018 Timo Männikkö Luento 12 Geneettiset algoritmit Simuloitu jäähdytys Merkkijonon sovitus Horspoolin algoritmi Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 2/35 Algoritmien

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

5 Kertaluokkamerkinnät

5 Kertaluokkamerkinnät TIE-20100 Tietorakenteet ja algoritmit 75 5 Kertaluokkamerkinnät Tässä luvussa käsitellään asymptoottisessa analyysissa käytettyjä matemaattisia merkintätapoja Määritellään tarkemmin Θ, sekä kaksi muuta

Lisätiedot

1 Erilaisia tapoja järjestää

1 Erilaisia tapoja järjestää TIE-20100 Tietorakenteet ja algoritmit 1 1 Erilaisia tapoja järjestää Käsitellään seuraavaksi järjestämisalgoritmeja, jotka perustuvat muihin kuin vertailuun alkioiden oikean järjestyksen saamiseksi. Lisäksi

Lisätiedot

4.3. Matemaattinen induktio

4.3. Matemaattinen induktio 4.3. Matemaattinen induktio Matemaattinen induktio: Deduktion laji Soveltuu, kun ominaisuus on osoitettava olevan voimassa luonnollisilla luvuilla. Suppea muoto P(n) : Ominaisuus, joka joka riippuu luvusta

Lisätiedot

811312A Tietorakenteet ja algoritmit, , Harjoitus 4, Ratkaisu

811312A Tietorakenteet ja algoritmit, , Harjoitus 4, Ratkaisu 81112A Tietoraketeet ja algoritmit, 217-218, Harjoitus 4, Ratkaisu Harjoitukse aiheita ovat algoritmie aikakompleksisuus ja lajittelualgoritmit Tehtävä 4.1 Selvitä seuraavie rekursioyhtälöide ratkaisuje

Lisätiedot

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö Algoritmit 2 Luento 11 Ti 25.4.2017 Timo Männikkö Luento 11 Peruutusmenetelmä Osajoukon summa Pelipuut Pelipuun läpikäynti Rajoitehaku Kapsäkkiongelma Algoritmit 2 Kevät 2017 Luento 11 Ti 25.4.2017 2/29

Lisätiedot

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö Algoritmit 2 Luento 13 Ti 8.5.2018 Timo Männikkö Luento 13 Laskennallinen vaativuus Päätösongelmat Epädeterministinen algoritmi Vaativuusluokat NP-täydellisyys Kertaus ja tenttivinkit Algoritmit 2 Kevät

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

Algoritmit 2. Luento 10 To Timo Männikkö Algoritmit 2 Luento 10 To 11.4.2019 Timo Männikkö Luento 10 Merkkitiedon tiivistäminen LZW-menetelmä Taulukointi Editointietäisyys Peruutusmenetelmä Osajoukon summa Algoritmit 2 Kevät 2019 Luento 10 To

Lisätiedot

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

On annettu jono lukuja tai muita alkioita, joiden välille on määritelty suuruusjärjestys. Tehtävänä on saattaa alkiot suuruusjärjestykseen. 6. Järjestäminen On annettu jono lukuja tai muita alkioita, joiden välille on määritelty suuruusjärjestys. Tehtävänä on saattaa alkiot suuruusjärjestykseen. Tämä on eräs klassisimpia tietojenkäsittelyongelmia,

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

Tutkimusmenetelmät-kurssi, s-2004

Tutkimusmenetelmät-kurssi, s-2004 Algoritmitutkimuksen menetelmistä Tutkimusmenetelmät-kurssi, s-2004 Pekka Kilpeläinen Kuopion yliopisto Tietojenkäsittelytieteen laitos Algoritmitutkimuksen menetelmistä p.1/20 Sisällys Tänään Tietojenkäsittelytiede

Lisätiedot

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

ja λ 2 = 2x 1r 0 x 2 + 2x 1r 0 x 2 Johdatus diskreettiin matematiikkaan Harjoitus 4, 7.10.2015 1. Olkoot c 0, c 1 R siten, että polynomilla r 2 c 1 r c 0 on kaksinkertainen juuri. Määritä rekursioyhtälön x n+2 = c 1 x n+1 + c 0 x n, n N,

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

8. Lajittelu, joukot ja valinta

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

Lisätiedot

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

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

Lisätiedot

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

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

Tietorakenteet, laskuharjoitus 10, ratkaisuja. 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: Tietorakenteet, laskuharjoitus 10, ratkaisuja 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: SamaLuku(T ) 2 for i = 1 to T.length 1 3 if T [i] = = T [i + 1] 4 return True 5

Lisätiedot

Liitosesimerkki Tietokannan hallinta, kevät 2006, J.Li 1

Liitosesimerkki Tietokannan hallinta, kevät 2006, J.Li 1 Liitosesimerkki 16.02.06 Tietokannan hallinta, kevät 2006, J.Li 1 Esim R1 R2 yhteinen attribuutti C T(R1) = 10,000 riviä T(R2) = 5,000 riviä S(R1) = S(R2) = 1/10 lohkoa Puskuritilaa = 101 lohkoa 16.02.06

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

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

Ohjelmoinnin perusteet Y Python

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

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

TAMPEREEN TEKNILLINEN YLIOPISTO

TAMPEREEN TEKNILLINEN YLIOPISTO TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja Tietokonetekniikan laitos TKT-3200 Tietokonetekniikka ASSEMBLER: QSORT 11.08.2010 Ryhmä 00 nimi1 email1 opnro1 nimi2 email2 opnro2 nimi3 email3 opnro3 1. TEHTÄVÄ

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

TIE Tietorakenteet ja algoritmit 25

TIE Tietorakenteet ja algoritmit 25 TIE-20100 Tietorakenteet ja algoritmit 25 Tällä kurssilla keskitytään algoritmien ideoihin ja algoritmit esitetään useimmiten pseudokoodina ilman laillisuustarkistuksia, virheiden käsittelyä yms. Otetaan

Lisätiedot

Algoritmit 2. Luento 14 To Timo Männikkö

Algoritmit 2. Luento 14 To Timo Männikkö Algoritmit 2 Luento 14 To 2.5.2019 Timo Männikkö Luento 14 Laskennallinen vaativuus Päätösongelmat Epädeterministinen algoritmi Vaativuusluokat NP-täydelliset ongelmat Kertaus ja tenttivinkit Algoritmit

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

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

Tietorakenteet ja algoritmit. Kertaus. Ari Korhonen

Tietorakenteet ja algoritmit. Kertaus. Ari Korhonen Tietorakenteet ja algoritmit Kertaus Ari Korhonen 1.12.2015 Tietorakenteet ja algoritmit - syksy 2015 1 Presemosta: 12. Kertaus» Mitkä tekijät, miten ja miksi vaiku1avat algoritmien nopeuteen» Rekursiohistoriapuut

Lisätiedot

Algoritmit 2. Luento 1 Ti Timo Männikkö

Algoritmit 2. Luento 1 Ti Timo Männikkö Algoritmit 2 Luento 1 Ti 14.3.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin valinta Algoritmin analysointi Algoritmin suoritusaika Peruskertaluokkia Kertaluokkamerkinnät Kertaluokkien ominaisuuksia

Lisätiedot

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

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: Tietorakenteet, laskuharjoitus 10, ratkaisuja 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: SamaLuku(T ) 2 for i = 1 to T.length 1 3 if T [i] == T [i + 1] 4 return True 5 return

Lisätiedot

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu 811312A Tietorakenteet ja algoritmit 2017-2018, Harjoitus 2 ratkaisu Harjoituksen aiheena on algoritmien oikeellisuus. Tehtävä 2.1 Kahvipurkkiongelma. Kahvipurkissa P on valkoisia ja mustia kahvipapuja,

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

Lisätiedot

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