811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Samankaltaiset tiedostot
811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

811312A Tietorakenteet ja algoritmit, , Harjoitus 4, Ratkaisu

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

811312A Tietorakenteet ja algoritmit I Johdanto

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

811312A Tietorakenteet ja algoritmit, VI Algoritmien suunnitteluparadigmoja

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

811312A Tietorakenteet ja algoritmit II Algoritmien analyysi

Algoritmit 1. Luento 12 Ke Timo Männikkö

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

Tietorakenteet ja algoritmit - syksy

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Algoritmit 1. Luento 12 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit II Perustietorakenteet

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

Ohjelmoinnin peruskurssi Y1

Algoritmit 1. Luento 11 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit, , Harjoitus 2, Ratkaisu

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

811120P Diskreetit rakenteet

Algoritmit 2. Luento 14 Ke Timo Männikkö

811120P Diskreetit rakenteet

58131 Tietorakenteet ja algoritmit (syksy 2015)

Algoritmit 1. Demot Timo Männikkö

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

4 Tehokkuus ja algoritmien suunnittelu

811120P Diskreetit rakenteet

Algoritmit 1. Demot Timo Männikkö

Algoritmit 2. Demot Timo Männikkö

5 Kertaluokkamerkinnät

Algoritmit 1. Luento 2 Ke Timo Männikkö

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Algoritmit 2. Luento 7 Ti Timo Männikkö

811120P Diskreetit rakenteet

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

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

Algoritmit 2. Luento 2 To Timo Männikkö

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Algoritmit 1. Luento 3 Ti Timo Männikkö

Johdatus lukuteoriaan Harjoitus 11 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma

Algoritmit 1. Luento 1 Ti Timo Männikkö

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

Nopea kertolasku, Karatsuban algoritmi

Algoritmit 2. Luento 2 Ke Timo Männikkö

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

Algoritmit 2. Luento 8 To Timo Männikkö

Algoritmit 1. Luento 5 Ti Timo Männikkö

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

1 Erilaisia tapoja järjestää

Koe ma 1.3 klo salissa A111, koeaika kuten tavallista 2h 30min

4. Algoritmien tehokkuus

(iv) Ratkaisu 1. Sovelletaan Eukleideen algoritmia osoittajaan ja nimittäjään. (i) 7 = , 7 6 = = =

Algoritmit 1. Demot Timo Männikkö

1.4 Funktioiden kertaluokat

Ohjelmoinnin perusteet Y Python

ITKP102 Ohjelmointi 1 (6 op)

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

4 Lajittelualgoritmeista

4.3. Matemaattinen induktio

Tutkimusmenetelmät-kurssi, s-2004

Algoritmit 2. Demot Timo Männikkö

TIE Tietorakenteet ja algoritmit 25

8. Lajittelu, joukot ja valinta

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

13. Loogiset operaatiot 13.1

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

Ohjelmointi 1 Taulukot ja merkkijonot

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Zeon PDF Driver Trial

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

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

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

Tietorakenteet, laskuharjoitus 2,

Algoritmi on periaatteellisella tasolla seuraava:

Numeeriset menetelmät

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmianalyysin perusteet

Algoritmit 2. Luento 11 Ti Timo Männikkö

13. Loogiset operaatiot 13.1

Matematiikan tukikurssi

3 Lajittelualgoritmeista

Uolevin reitti. Kuvaus. Syöte (stdin) Tuloste (stdout) Esimerkki 1. Esimerkki 2

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

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

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

4. Joukkojen käsittely

11. Javan toistorakenteet 11.1

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

Algoritmit 2. Luento 3 Ti Timo Männikkö

1 Määrittelyjä ja aputuloksia

A215 Tietorakenteet. Tietojenkäsittelytieteiden laitos Tampereen yliopisto. Periodit I-II, syksy 2007

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi

Algoritmit 2. Luento 3 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit V Hash-taulukot ja binääriset etsintäpuut

Numeeriset menetelmät

Algoritmit 2. Luento 13 Ti Timo Männikkö

Transkriptio:

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 Algoritmin oikeaksi todistaminen = Todistettava algoritmin päättyminen ja oikea tulos Osattava todistaa algoritmi vääräksi Päättymisen todistaminen: usein käytetään konvergenttia, joka takaa toistorakenteen tai rekursion päättymisen Oikeellisuus: Toistorakenteisissa algoritmeissa usein invariantti, joka takaa oikean tuloksen kun algoritmi päättyy Invariantin muotoilu ja oikeaksi osoittaminen

II Algoritmien analyysi: asymptoottinen merkintä Osattava O ja Ɵ-merkinnät (määritelmä ja käyttö) Olkoon g(n) jokin funktio. Silloin O(g(n)) ja Ɵ(g(n)) ovat seuraavat funktioiden joukot: O( g( n)) { f positiiviset vakiot 0 ( g( n)) ( n) positiiviset vakiot c 1 f ( n) g( n) c g( n),aina { f f ( n) ( n) On olemassa c c ja On olemassa sellaiset c 2 1 n 0 kun, c 2,että n ja n 0 sellaiset n },että g( n),aina kun n 0 n 0 }

II Algoritmien analyysi: aikakompleksisuus Aikakompleksisuus = algoritmin suoritusaika (operaatioiden lukumäärä) suhteessa syötteen kokoon Ilmaistaan kompleksisuusluokkana O- tai Ɵ- merkinnällä Yleensä tarkastellaan huonointa tapausta Osattava määrittää yksinkertaisen iteratiivisen tai rekursiivisen algoritmin kompleksisuusluokka Tentissä aina tällainen tehtävä, enimmäkseen iteratiivisia algoritmeja Jos tarvitaan Master Theoremia, se annetaan

Esimerkkitehtäviä a) Esitä mitä määritelmän mukaan tarkoittaa merkintä f(n) (n 2 ). b) Onko f(n) (n 2 ), kun f(n) = 2n 2 + n f(n) = n 3 +2n+1? Perustele vastauksesi.

Esimerkkitehtäviä (2) Seuraavan algoritmin tulisi laskea summa 1+2+ +n aina kun n on positiivinen kokonaisluku. Todista algoritmi vääräksi. Syöte: Kokonaisluku n >= 1 Tuloste: Summa 1+2+...+n SUMMA(n) 1. s = 1 2. i = 1 3. if n == 1 4. return s 5. while i <= n do 6. s = s+i 7. i = i+1 8. return s

Esimerkkitehtäviä (3) Seuraava algoritmi laskee syötteenä saamansa taulukon alkioiden keskiarvon. Todista algoritmi oikeaksi. Syöte: Taulukko A[1,..,n], n >= 1 Tuloste: Taulukon alkioiden keskiarvo KESKIARVO(A) 1. s = 0 2. i = 1 3. ka = 0 4. while i <= n do 5. s = s+a[i] 6. i = i+1 7. ka = s/n 8. return ka

Esimerkkitehtäviä (4) Mitkä ovat seuraavien algoritmien aikakompleksisuusluokat, kun syötteen koon mittarina on syötetaulukon A[1..n] koko n? SUM1(A) 1. sum = 0 2. for i=1 to n 3. sum = sum + A[i] 4. return sum SUM2(A) 1. sum = 0 2. for i=1 to n 3. for j=1 to n 4. sum = sum+a[i]-a[j] 5. return sum SUM3(A) 1. max = 0 2. for i=1 to n 3. sum = 0 4. for j=i to n 5. sum = sum+a[j] 6. if sum > max 7. max = sum 8. return sum 811386A Tietorakenteet ja algoritmit, Tehtäviä

III Lajittelualgoritmit Tiedettävä että nopeimpien vertailuun perustuvien lajittelualgoritmien aikakompleksisuus Ɵ(nlg(n)), kun n on taulukon koko Pikalajittelusta tunnettava idea: taulukko jaetaan saranaalkion suhteen ja osat lajitellaan rekursiivisesti Kekolajittelu: tunnettava maksimikeko tietorakenteena ja sen esittäminen taulukolla Kekolajittelun idea: Muodostetaan maksimikeko ja poistetaan siitä toistuvasti suurin alkio, sijoitetaan taulukon loppuun ja pienennetään keon kokoa

Esimerkkitehtäviä (5) Ovatko taulukot A=[15,10,12,7,5,9,8], B=[20,12,18,8,14,13] maksimikekojärjestyksessä? Sadistinen valmentaja harjoittaa 2n pelaajaa. Hän haluaa jakaa pelaajat kahteen joukkueeseen niin, että pelistä tulee mahdollisimman epätasainen. Minkälaista algoritmia hän voi käyttää jaon tekemiseen? Taulukossa on lukuja jotka halutaan järjestää niin, että negatiiviset luvut ovat taulukon alkuosassa ja positiiviset luvut loppuosassa. Anna tehokas algoritmi tämän tekemiseen.

Pikalajittelun muunnettu ositus Syöte: Taulukko A[1,..,n] n>=1 Tuloste: Taulukon vasemmalla puolella negatiiviset arvot ja oikealla positiiviset (ja nollat) OSITA(A) 1. i = 0 2. for j = 1 to n 3. if A[j] < 0 4. i = i + 1 5. vaihda A[i] A[j] 6. return 811312A TRA / 52144A ATR, Lajittelualgoritmeista 11

Esimerkkitehtäviä (6) Olkoon A[1..n] pienimmästä suurimpaan järjestetty kokonaislukutaulukko, jonka kaikki luvut ovat erisuuria. Suunnittele aikakompleksisuudeltaan luokkaa O(lg(n)) oleva algoritmi, joka vastaa kysymykseen, onko lukua i, jolle A[i] = i (kiintopiste).

Alkuperäinen puolitushaku Syöte: Taulukko A[1,..,n], n >= 1, A[1] <= A[2] <= <= A[n]. Luvut 1<=p<=q<=n. Luku x jota haetaan taulukosta väliltä A[p,..,q]. Tulostus: Alkion x indeksi taulukossa tai arvo NIL, jos x ei esiinny taulukossa välillä A[p,..,q]. HAKU(A,p,q,x) 1. if p==q 2. if A[p]==x return p 3. else return NIL 4. else 5. r = (p + q)/2 6. if x<=a[r] 7. return HAKU(A,p,r,x) 8. else 9. return HAKU(A,r+1,q,x)

Kiintopisteen hakemisalgoritmi Syöte: Taulukko A[1,..,n], n >= 1, A[1] < A[2] < < A[n]. Luvut 1<=p<=q<=n. Tulostus: TRUE jos A[i]=i jollakin i, FALSE muuten KIINTOPISTE(A,p,q) 1. if p==q 2. if A[p]==p 3. return TRUE 4. else return FALSE 5. else 6. r = (p + q)/2 7. if A[r]==r 8. return TRUE 9. else if A[r]>r 10. return KIINTOPISTE(A,p,r) 11. else 12. return KIINTOPISTE(A,r+1,q,x)