Algoritmit 2. Luento 8 To Timo Männikkö
|
|
- Jarkko Laaksonen
- 5 vuotta sitten
- Katselukertoja:
Transkriptio
1 Algoritmit 2 Luento 8 To Timo Männikkö
2 Luento 8 Algoritmien analysointi Algoritmien suunnittelu Rekursio Osittaminen Rekursioyhtälöt Rekursioyhtälön ratkaiseminen Master-lause Algoritmit 2 Kevät 2019 Luento 8 To /31
3 Algoritmien analysointi Määritellään ohjelman/algoritmin yksittäisten käskyjen/askelien asymptoottinen vaativuus Yhdistetään peräkkäin suoritettavien käskyjen/askelien vaativuudet Huomioidaan silmukat, ehtolauseet ja muut rakenteet Algoritmit 2 Kevät 2019 Luento 8 To /31
4 Perusoperaatiot Sijoituslause: Yleensä vakioaika Θ(1) Peräkkäiset lauseet: Lasketaan yhteen yksittäisten lauseiden suoritusaika Ehtolause: Ehtolausekkeen suoritusaika + ehdollisesti suoritetun lauseen maksimisuoritusaika Silmukka: Silmukkalauseen lausekkeiden suoritusaika + silmukan rungon suoritusaika summattuna yli silmukan suorituskertojen Algoritmit 2 Kevät 2019 Luento 8 To /31
5 Aliohjelmat Selvitetään alimman tason aliohjelmien suoritusaika (eivät sisällä aliohjelmakutsuja) Selvitetään seuraavan tason aliohjelmien suoritusaika (sisältävät vain sellaisten aliohjelmien kutsuja, joiden suoritusaika jo selvitetty) Jatketaan kunnes kaikkien aliohjelmien suoritusajat selvitetty Algoritmit 2 Kevät 2019 Luento 8 To /31
6 Algoritminen ongelmanratkaisu Tutkitaan tehtävän tai ongelman kuvaus Käydään läpi esimerkkitapauksia Jos ongelma voidaan muuntaa joksikin tunnetuksi ongelmaksi, sille saattaa löytyä valmiita ratkaisumenetelmiä Otetaan huomioon ratkaisuympäristön asettamat rajoitukset Algoritmit 2 Kevät 2019 Luento 8 To /31
7 Algoritminen ongelmanratkaisu Käytetään hyviksi osoittautuneita algoritmien suunnittelumenetelmiä Algoritmin kuvaus Sanallinen, pseudokoodi Algoritmin analysointi Aikavaativuus, muiden resurssien käyttö Algoritmin toteutus Koodaus, testaus Algoritmit 2 Kevät 2019 Luento 8 To /31
8 Algoritmien suunnittelumenetelmät Yleisiä tekniikoita ja periaatteita algoritmin muodostamiseksi Joskus algoritmi voidaan katsoa kuuluvan usean eri suunnittelumenetelmän mukaiseksi Joskus algoritmin ei voida katsoa kuuluvan mihinkään erityiseen suunnittelumenetelmäluokkaan Monesti algoritmi käyttää hyväksi ongelman erityisominaisuuksia Algoritmit 2 Kevät 2019 Luento 8 To /31
9 Rekursio Algoritmi kutsuu itseään ratkaisun aikana Pienempi ongelma usein helpommin ratkaistavissa kuin samanlainen mutta suurempi ongelma Monille vaikeille ongelmille löytyy yksinkertainen rekursiivinen ratkaisumenetelmä Mutta rekursion käyttö voi joissain tapauksissa johtaa tehottomiin algoritmeihin Algoritmit 2 Kevät 2019 Luento 8 To /31
10 Osittaminen Ositetaan eli jaetaan ongelma pienempiin vastaavanlaisiin osaongelmiin Ratkaistaan osaongelmat Muodostetaan osaongelmien ratkaisuista alkuperäisen ongelman ratkaisu Osaongelmat tyypiltään samanlaisia kuin alkuperäinen ongelma Osaongelmat voidaan ratkaista samalla tavalla Rekursio Algoritmit 2 Kevät 2019 Luento 8 To /31
11 Rekursio ja ositus Oltava lopetusehto, jotta rekursio päättyy joskus Yleensä ositus kannattaa tehdä siten, että osaongelmat ovat keskenään suunnilleen samankokoisia Joissain tapauksissa on mahdollista, että osaongelmat eivät ole täysin erillisiä Kaikkia osaongelmia ei tarvitse aina ratkaista Riippuu tehtävästä, ratkaisuprosessin etenemisestä Ratkaisun muodostaminen osaongelmien ratkaisuista Riippuu tehtävästä Algoritmit 2 Kevät 2019 Luento 8 To /31
12 Osittava ja rekursiivinen algoritmi Algoritmin kutsu annetulla ongelmalla: Jos riittävän pieni tai yksinkertainen ongelma Ratkaistaan se (ei-rekursiivisesti) ja palautetaan ratkaisu Muuten jaetaan ongelma pienempiin vastaavanlaisiin ongelmiin Ratkaistaan ne rekursiivisilla kutsuilla Muodostetaan pienempien ongelmien ratkaisuista tämän kutsun ongelman ratkaisu ja palautetaan se Algoritmit 2 Kevät 2019 Luento 8 To /31
13 Esimerkki: Hanoin torni Kolme tankoa, n erikokoista kiekkoa Aluksi kaikki kiekot yhdessä tangossa suuruusjärjestyksessä Tehtävänä siirtää kaikki kiekot toiseen tankoon Siirretään vain yhtä kiekkoa kerrallaan Suurempaa kiekkoa ei saa siirtää pienemmän kiekon päälle Algoritmit 2 Kevät 2019 Luento 8 To /31
14 Hanoin torni: Ratkaisu Siirretään lähdetangosta n 1 kiekkoa aputankoon Siirretään lähdetankoon jäänyt suurin kiekko kohdetankoon Siirretään aputangossa olevat n 1 kiekkoa kohdetankoon Algoritmia kutsutaan rekursiivisesti Rekursio päättyy kun siirrettävänä on vain yksi kiekko Algoritmit 2 Kevät 2019 Luento 8 To /31
15 Hanoin torni: Algoritmi torni(lukumäärä, lähde, kohde, apu) { if (lukumäärä == 1) siirretään kiekko lähdetangosta kohdetankoon; else if (lukumäärä > 1) { torni(lukumäärä-1, lähde, apu, kohde); torni(1, lähde, kohde, apu); torni(lukumäärä-1, apu, kohde, lähde); } } Algoritmit 2 Kevät 2019 Luento 8 To /31
16 Hanoin torni: Aikavaativuus Siirtojen lukumäärä s(n), kun kiekkoja n kappaletta Jos n = 1, niin s(n) = 1 Jos n > 1, niin s(n) = s(n 1) + s(1) + s(n 1) = 2s(n 1) + 1 Algoritmit 2 Kevät 2019 Luento 8 To /31
17 Hanoin torni: Aikavaativuus s(n) = 2s(n 1) + 1 = 2 1 s(n 1) = 2[2s(n 2) + 1] + 1 = 4s(n 2) = 2 2 s(n 2) = 4[2s(n 3) + 1] =... = 2 n 1 s(1) + = 2 n n 1 1 = 2 n 1 Eksponentiaalinen! n 2 j=0 2 j Algoritmit 2 Kevät 2019 Luento 8 To /31
18 Rekursioyhtälöt Ongelma, jonka koko on n, jaetaan a:han osaongelmaan, joiden koko on n/b Osaongelmat ratkaistaan rekursiivisesti Lisäksi muu aika: Osaongelmien muodostaminen, ratkaisujen kokoaminen Rekursioyhtälö { c 1, kun n = 1 T (n) = at (n/b) + d(n), kun n = b k, k 1 Algoritmit 2 Kevät 2019 Luento 8 To /31
19 Rekursioyhtälön ratkaiseminen T (n) = T (b k ) = at (b k 1 ) + d(b k ) = a[at (b k 2 ) + d(b k 1 )] + d(b k ) = a 2 T (b k 2 ) + ad(b k 1 ) + d(b k ) = a 2 [at (b k 3 ) + d(b k 2 )] + ad(b k 1 ) + d(b k ) = a 3 T (b k 3 ) + a 2 d(b k 2 ) + ad(b k 1 ) + d(b k ) =... = a k T (b 0 ) + }{{} =T (1)=c 1 k 1 j=0 a j d(b k j ) Algoritmit 2 Kevät 2019 Luento 8 To /31
20 Rekursioyhtälön ratkaiseminen Erikoistapaus d(n) = cn α : T (n) = c 1 a k + = c 1 a k + k 1 j=0 k 1 j=0 k 1 = c 1 a k + cb αk a j d(b k j ) a j cb α(k j) j=0 ( a b α ) j Algoritmit 2 Kevät 2019 Luento 8 To /31
21 Rekursioyhtälön ratkaiseminen Oletetaan ensin, että a b α : k 1 T (n) = c 1 a k + cb αk j=0 ( a b α ) j = c 1 a k + cb αk (a/bα ) k 1 (a/b α ) 1 = c 1 a k + c ak b αk (a/b α ) 1 Algoritmit 2 Kevät 2019 Luento 8 To /31
22 Rekursioyhtälön ratkaiseminen T (n) = c 1 a k + c ak b αk (a/b α ) 1 = c 1 a log b n + c alog b n n α (a/b α ) 1 = c 1 n log b a + c nlog b a n α (a/b α ) 1 (k = log b n) (a log b n = n log b a ) Algoritmit 2 Kevät 2019 Luento 8 To /31
23 Rekursioyhtälön ratkaiseminen T (n) = c 1 n log b a + c nlog b a n α (a/b α ) 1 Jos c = 0, kertaluokka n log b a Muuten kertaluokka joko n log b a tai n α riippuen siitä, kumpi eksponentti on suurempi log b a > α a > b α log b a < α a < b α Algoritmit 2 Kevät 2019 Luento 8 To /31
24 Rekursioyhtälön ratkaiseminen Lisäksi tapaus a = b α ja c 0: k 1 T (n) = c 1 a k + cb αk j=0 = c 1 b αk + cb αk k = c 1 n α + cn α log b n ( a b α ) j Kertaluokka n α log b n Algoritmit 2 Kevät 2019 Luento 8 To /31
25 Master-lause Rekursioyhtälön { c 1, kun n = 1 T (n) = at (n/b) + cn α, kun n = b k, k 1 ratkaisun kertaluokka on Θ(n log b a ), jos a > b α tai c = 0 Θ(n α ), jos a < b α ja c 0 Θ(n α log b n), jos a = b α ja c 0 Algoritmit 2 Kevät 2019 Luento 8 To /31
26 Esimerkki: Lomituslajittelu Oletus: Järjestettäviä alkioita n = 2 k Jaetaan järjestettävät alkiot kahteen osajoukkoon Osajoukoissa n/2 alkiota Osajoukot lajitellaan rekursiivisesti Rekursio lopetetaan, kun osajoukossa on yksi alkio Yhdistetään kahden järjestetyn osajoukon alkiot lomittamalla Algoritmit 2 Kevät 2019 Luento 8 To /31
27 Esimerkki: Lomituslajittelu Merge_sort(a, l, h) { if (l < h) { k = (l + h)/2; Merge_sort(a, l, k); Merge_sort(a, k+1, h); Merge(a, l, k, h); } } Merge(a, l, k, h) // Lomitetaan alkiot paikoissa l,..., k // ja k+1,..., h järjestykseen Algoritmit 2 Kevät 2019 Luento 8 To /31
28 Esimerkki: Lomituslajittelu T (n) = { c 1, kun n = 1 2T (n/2) + cn, kun n = 2 k, k 1 a = 2, b = 2, α = 1, c 0 Master-lauseen kolmas kohta T (n) = Θ(n log 2 n) Algoritmit 2 Kevät 2019 Luento 8 To /31
29 Esimerkki: Kokonaislukujen kertolasku Annettu n-bittisiä kokonaislukuja Oletus: n = 2 k jollain k 0 Kahden luvun yhteenlasku: Bitti kerrallaan Θ(n) Kertominen kakkosen potenssilla 2 m : Voidaan toteuttaa sivuttaissiirtona Θ(m) Kahden luvun kertolasku: Bitti kerrallaan ( peruskoulualgoritmilla ) Θ(n 2 ) Algoritmit 2 Kevät 2019 Luento 8 To /31
30 Esimerkki: Kokonaislukujen kertolasku Kokonaislukujen X ja Y kertolasku osittamalla Jaetaan X :n bitit: X = A 2 n/2 + B Jaetaan Y :n bitit: Y = C 2 n/2 + D Silloin XY = AC 2 n + [(A B)(D C) + AC + BD] 2 n/2 + BD 3 kpl kertolaskuja n/2-bittisillä luvuilla 2 kpl sivuttaissiirtoja 6 kpl yhteen- ja vähennyslaskuja Algoritmit 2 Kevät 2019 Luento 8 To /31
31 Esimerkki: Kokonaislukujen kertolasku T (n) = { c 1, kun n = 1 3T (n/2) + cn, kun n = 2 k, k 1 a = 3, b = 2, α = 1, c 0 Master-lauseen ensimmäinen kohta T (n) = Θ(n log 2 3 ) (log 2 3 1,58 < 2) Algoritmit 2 Kevät 2019 Luento 8 To /31
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ätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotOlkoon 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ätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedot2.2.1 Ratkaiseminen arvausta sovittamalla
2.2.1 Ratkaiseminen arvausta sovittamalla Esimerkki: lomitusjärjestäminen (edellä) Yleistys: Ratkaistava T (1) c T (n) g(t (1),..., T (n 1), n) missä g on n ensimmäisen parametrin suhteen kasvava. (Ratkaisu
Lisätiedot1.4 Funktioiden kertaluokat
1.4 Funktioiden kertaluokat f on kertaluokkaa O(g), merk. f = O(g), jos joillain c > 0, m N pätee f(n) cg(n) aina kun n m f on samaa kertaluokkaa kuin g, merk. f = Θ(g), jos joillain a, b > 0, m N pätee
LisätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin
LisätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedot4 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ätiedotALGORITMIT 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ätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotNopea kertolasku, Karatsuban algoritmi
Nopea kertolasku, Karatsuban algoritmi Mikko Männikkö 16.8.2004 Lähde: ((Gathen and Gerhard 1999) luku II.8) Esityksen kulku Algoritmien analysointia (1), (2), (3), (4) Klassinen kertolasku Parempi tapa
LisätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotTietorakenteet 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ätiedotA274101 TIETORAKENTEET JA ALGORITMIT
A274101 TIETORAKENTEET JA ALGORITMIT ALGORITMIEN ANALYYSISTÄ 1.ratkaisu Laskentaaika hakkeri - optimoitu ALGORITMIANALYYSIÄ hyvä algoritmi hakkeri -optimoitu hyvä algoritmi Tehtävän koko Kuva mukailtu
LisätiedotAlgoritmit 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ätiedotAlgoritmianalyysin perusteet
Tietorakenteet ja algoritmit Algoritmianalyysin perusteet Ari Korhonen 1 5. ALGORITMIANALYYSI 5.1 Johdanto 5.2 Tavoitteet 5.3 Algoritmien luokittelu 5.4 Kertaluokkamerkinnät (Big Oh Notation) 5.5 Kertaluokkamerkinnöillä
LisätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedota k+1 = 2a k + 1 = 2(2 k 1) + 1 = 2 k+1 1. xxxxxx xxxxxx xxxxxx xxxxxx
x x x x x x x x Matematiikan johdantokurssi, syksy 08 Harjoitus, ratkaisuista Hanoin tornit -ongelma: Tarkastellaan kolmea pylvästä A, B ja C, joihin voidaan pinota erikokoisia renkaita Lähtötilanteessa
LisätiedotAlgoritmit 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ätiedotJohdatus diskreettiin matematiikkaan Harjoitus 5, Ratkaise rekursioyhtälö
Johdatus diskreettiin matematiikkaan Harjoitus 5, 14.10.2015 1. Ratkaise rekursioyhtälö x n+4 2x n+2 + x n 16( 1) n, n N, alkuarvoilla x 1 2, x 2 14, x 3 18 ja x 4 42. Ratkaisu. Vastaavan homogeenisen
LisätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedot58131 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ätiedot58131 Tietorakenteet ja algoritmit (syksy 2015)
58131 Tietorakenteet ja algoritmit (syksy 2015) Harjoitus 2 (14. 18.9.2015) Huom. Sinun on tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. 1. Erään algoritmin suoritus vie 1 ms, kun syötteen
LisätiedotREKURSIO. Rekursiivinen ohjelma Kutsuu itseään. Rekursiivinen rakenne. Rakenne sisältyy itseensä. Rekursiivinen funktio. On määritelty itsensä avulla
REKURSIO Rekursiivinen ohjelma Kutsuu itseään Rekursiivinen rakenne Rakenne sisältyy itseensä Rekursiivinen funktio On määritelty itsensä avulla Esim. Fibonacci-luvut: X(i) = X(i-1) + X(i-2), X(0) = X(1)
LisätiedotAlgoritmit 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ätiedot4. Algoritmien tehokkuus
4. Algoritmien tehokkuus (Harel luku 6) vastaa jo minulle! [Psalmi 69:18] Kuinka paljon suoritusaikaa tai -tilaa algoritmin suoritus vaatii? Keskitymme lähinnä aikavaativuuden tarkasteluun. Myös algoritmien
LisätiedotOn 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ätiedotNumeeriset menetelmät
Numeeriset menetelmät Luento 3 Ti 13.9.2011 Timo Männikkö Numeeriset menetelmät Syksy 2011 Luento 3 Ti 13.9.2011 p. 1/37 p. 1/37 Epälineaariset yhtälöt Newtonin menetelmä: x n+1 = x n f(x n) f (x n ) Sekanttimenetelmä:
Lisätiedot4. 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(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ä.
Loppu seuraa suoralla laskulla: n n Tave TR = p j (1 + b (i, j)) j=1 = 1 + 1 i
Lisätiedot5 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ätiedotKytkentäkentät - Rekursio, Cantor-verkko. Kytkentäkentän ominaisarvoja
Kytkentäkentät - Rekursio, Cantor-verkko Kertaus Estottomuus Uudelleen järjestely Tiukasti estoton Yleinen kolmiportainen verkko Closin -verkko Benes -verkko Cantor -verkko Kytkentäpisteet ja kompleksisuus
Lisätiedot811312A 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ätiedotPikalajittelu: 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ätiedotja λ 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ätiedotTIE 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ätiedotTietorakenteet 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ätiedotRekursioyhtälön ratkaisutapa #1: iteratiivinen korvaus
NodeCount(v /* lskee solmun v lipuun solmujen lukumäärän */ if solmu v on null return 0 else return + NodeCount(v.left + NodeCount(v.right Rekursio: lgoritmi kutsuu itseään Usein hjot j hllitse -perite:
LisätiedotAlgoritmit 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ätiedotTietorakenteet 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ätiedot811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2016-2017 ari.vesanen (at) oulu.fi 5. Rekursio ja induktio Rekursio tarkoittaa jonkin asian määrittelyä itseensä viittaamalla Tietojenkäsittelyssä algoritmin määrittely niin,
Lisätiedot12. Algoritminsuunnittelun perusmenetelmiä
12. Algoritminsuunnittelun perusmenetelmiä Ei vain toteuteta tietorakenteita algoritmeilla, vaan myös tietorakenteita käytetään tyypillisesti erilaisten algoritmien yhteydessä. Kun nämä tietojenkäsittelytieteen
Lisätiedot12. Algoritminsuunnittelun perusmenetelmiä
12. Algoritminsuunnittelun perusmenetelmiä Ei vain toteuteta tietorakenteita algoritmeilla, vaan myös tietorakenteita käytetään tyypillisesti erilaisten algoritmien yhteydessä. Kun nämä tietojenkäsittelytieteen
Lisätiedot811312A 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ätiedot811312A 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ätiedot8. 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ätiedotAlgoritmit 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ätiedotKäänteismatriisin ominaisuuksia
Käänteismatriisin ominaisuuksia Lause 1.4. Jos A ja B ovat säännöllisiä ja luku λ 0, niin 1) (A 1 ) 1 = A 2) (λa) 1 = 1 λ A 1 3) (AB) 1 = B 1 A 1 4) (A T ) 1 = (A 1 ) T. Tod.... Ortogonaaliset matriisit
LisätiedotTehtävä 2. Osoita, että seuraavat luvut ovat algebrallisia etsimällä jokin kokonaislukukertoiminen yhtälö jonka ne toteuttavat.
JOHDATUS LUKUTEORIAAN syksy 017) HARJOITUS 6, MALLIRATKAISUT Tehtävä 1. Etsi Pellin yhtälön x Dy = 1 pienin positiivinen ratkaisu kun D {,, 5, 6, 7, 8, 10}. Ratkaisu 1. Tehtävässä annetuilla D:n arvoilla
LisätiedotAlgoritmit 2. Luento 12 Ke Timo Männikkö
Algoritmit 2 Luento 12 Ke 26.4.2017 Timo Männikkö Luento 12 Rajoitehaku Kauppamatkustajan ongelma Lyhin virittävä puu Paikallinen etsintä Vaihtoalgoritmit Geneettiset algoritmit Simuloitu jäähdytys Algoritmit
Lisätiedotf(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))
Määritelmä: on O(g(n)), jos on olemassa vakioarvot n 0 > 0 ja c > 0 siten, että c g(n) kun n > n 0 O eli iso-o tai ordo ilmaisee asymptoottisen ylärajan resurssivaatimusten kasvun suuruusluokalle Samankaltaisia
LisätiedotNumeeriset menetelmät
Numeeriset menetelmät Luento 14 To 20.10.2011 Timo Männikkö Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 1/39 p. 1/39 Nopeat Fourier-muunnokset Diskreetti Fourier-muunnos ˆf k = 1 N 1 N
LisätiedotAlgoritmit 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ätiedot1. (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ätiedot811312A Tietorakenteet ja algoritmit II Algoritmien analyysi
811312A Tietoraketeet ja algoritmit 2016-2017 II Algoritmie aalyysi Sisältö 1. Algoritmie oikeellisuus 2. Algoritmie suorituskyvy aalyysi 3. Master Theorem 811312A TRA, Algoritmie aalyysi 2 II.1. Algoritmie
LisätiedotAlgoritmit 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ätiedotAlgoritmit 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ätiedotLukion matematiikkakilpailun alkukilpailu 2015
Lukion matematiikkakilpailun alkukilpailu 015 Avoimen sarjan tehtävät ja niiden ratkaisuja 1. Olkoot a ja b peräkkäisiä kokonaislukuja, c = ab ja d = a + b + c. a) Osoita, että d on kokonaisluku. b) Mitä
LisätiedotC = P Q S = P Q + P Q = P Q. Laskutoimitukset binaariluvuilla P -- Q = P + (-Q) (-Q) P Q C in. C out
Digitaalitekniikan matematiikka Luku ivu (2).9.2 Fe C = Aseta Aseta i i = n i > i i i Ei i < i i i Ei i i = Ei i i = i i -- On On On C in > < = CI CO C out -- = + (-) (-) = + = C + Digitaalitekniikan matematiikka
LisätiedotAlgoritmit 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ätiedotHakupuut. 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ätiedotTietorakenteet ja algoritmit syksy Laskuharjoitus 1
Tietorakenteet ja algoritmit syksy 2012 Laskuharjoitus 1 1. Tietojenkäsittelijä voi ajatella logaritmia usein seuraavasti: a-kantainen logaritmi log a n kertoo, kuinka monta kertaa luku n pitää jakaa a:lla,
LisätiedotAlgoritmit 2. Luento 9 Ti Timo Männikkö
Algoritmit 2 Luento 9 Ti 19.4.2016 Timo Männikkö Luento 9 Merkkitiedon tiivistäminen LZW-menetelmä Taulukointi Editointietäisyys Peruutus Verkon 3-väritys Algoritmit 2 Kevät 2016 Luento 9 Ti 19.4.2016
LisätiedotTarkennamme 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ätiedotAlgoritmit 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ätiedotOngelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,
Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten, että se pystyy suorittamaan kaikki mahdolliset algoritmit?
LisätiedotDiskreetin 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ätiedot815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset
815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/
LisätiedotAlgoritmit 1 Syksy 2008
Algoritmit 1 Syksy 2008 Algoritmit 1 1 1 Algoritmit ja algoritmien analysointi Algoritmilla tarkoitetaan askel askeleelta suoritettavaa ohjetta jonkin tehtävän suorittamiseksi tai jonkun ongelman ratkaisemiseksi.
LisätiedotLuku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti
Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan
LisätiedotAlgoritmit 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ätiedotAlgoritmit 2. Luento 11 Ti Timo Männikkö
Algoritmit 2 Luento 11 Ti 24.4.2018 Timo Männikkö Luento 11 Rajoitehaku Kapsäkkiongelma Kauppamatkustajan ongelma Paikallinen etsintä Lyhin virittävä puu Vaihtoalgoritmit Algoritmit 2 Kevät 2018 Luento
Lisätiedot811312A 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ätiedotImperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi
Imperatiivisen ohjelmoinnin peruskäsitteet muuttuja muuttujissa oleva data voi olla yksinkertaista eli primitiivistä (esim. luvut ja merkit) tai rakenteista jolloin puhutaan tietorakenteista. puhuttaessa
Lisätiedot9 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