Algoritmit 2. Demot Timo Männikkö

Samankaltaiset tiedostot
Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 2. Demot Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Algoritmit 2. Luento 8 To Timo Männikkö

Algoritmit 1. Luento 11 Ti Timo Männikkö

Algoritmit 1. Luento 13 Ma Timo Männikkö

Algoritmit 2. Luento 8 Ke Timo Männikkö

Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Luento 13 Ti Timo Männikkö

Lukion matematiikkakilpailun alkukilpailu 2015

Algoritmit 2. Luento 12 Ke Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

Algoritmit 1. Luento 12 Ke Timo Männikkö

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

811312A Tietorakenteet ja algoritmit, VI Algoritmien suunnitteluparadigmoja

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 1. Luento 12 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

10. Painotetut graafit

Algoritmit 2. Luento 13 Ti Timo Männikkö

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

Algoritmit 1. Luento 1 Ti Timo Männikkö

Syötteen ensimmäisellä rivillä on kokonaisluku n, testien määrä (1 n 10). Tämän jälkeen jokaisella seuraavalla rivillä on kokonaisluku x (0 x 1000).

v 8 v 9 v 5 C v 3 v 4

Lukumäärän laskeminen 1/7 Sisältö ESITIEDOT:

Malliratkaisut Demot

13 Lyhimmät painotetut polut

Algoritmit 2. Luento 14 To Timo Männikkö

Tekijä Pitkä matematiikka On osoitettava, että jana DE sivun AB kanssa yhdensuuntainen ja sen pituus on 4 5

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Algoritmit 2. Luento 12 To Timo Männikkö

Algoritmit 2. Demot Timo Männikkö

10. Painotetut graafit

Algoritmit 1. Luento 2 Ke Timo Männikkö

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

8. Kieliopit ja kielet

4 Tehokkuus ja algoritmien suunnittelu

Tehtävä 2: Loppuosataulukko

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Algoritmit 1. Luento 8 Ke Timo Männikkö

VETUMA-PALVELUN PALVELINVARMENTEET

0, niin vektorit eivät ole kohtisuorassa toisiaan vastaan.

j n j a b a c a d b c c d m j b a c a d a c b d c c j

2 Sanoja järjestävän funktion ohjelmoiminen

4. Tehtävässä halutaan todistaa seuraava ongelma ratkeamattomaksi:

ITKP102 Ohjelmointi 1 (6 op)

ARKISTOLUETTELO A MERKINTÄKIRJAT. Aa Luokkien päiväkirjat. sis. 5 sidosta. 1 kansio. Aa: Päiväkirjoja. Päiväkirja. 4 sidosta.

9 Erilaisia tapoja järjestää

Nopea kertolasku, Karatsuban algoritmi

1.4 Funktioiden kertaluokat

Lineaarialgebra ja matriisilaskenta I

Aa lähtevien kirjeiden diaari. Saapuvien ja lähtevien kirjeiden diaari. Ab Saapuneiden kirjeiden diaari. Saapuneiden kirjeiden diaari

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

Algoritmit 1. Luento 14 Ke Timo Männikkö

Johdatus graafiteoriaan

Algoritmit 2. Luento 10 To Timo Männikkö

Matikkapaja keskiviikkoisin klo Lineaarialgebra (muut ko) p. 1/81

Äärettömät sanat. Aleksi Saarela. Matematiikan ja tilastotieteen laitos ja FUNDIM-keskus, Turun yliopisto. A. Saarela (TY) Äärettömät sanat 1 / 28

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö

Matikkapaja keskiviikkoisin klo Lineaarialgebra (muut ko) p. 1/210

811120P Diskreetit rakenteet

Oikeasta tosi-epätosi -väittämästä saa pisteen, ja hyvästä perustelusta toisen.

Algoritmi on periaatteellisella tasolla seuraava:

1 Erilaisia tapoja järjestää

Tietolan kansakoulun luokkapäiväkirjat. Ab Kirjastonhoidon päiväkirjat. Tietolan koulukirjaston hoidon päiväkirja

Lähetettyjen ja saapuneiden kirjeiden diaari. Lähetettyjen ja saapuneiden kirjeiden diaari. Lähetettyjen kirjeiden diaari

Lineaarialgebra (muut ko)

c) Vektorit ovat samat, jos ne ovat samansuuntaiset ja yhtä pitkät. Vektorin a kanssa sama vektori on vektori d.

Algoritmit 2. Luento 1 Ti Timo Männikkö

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

Formalisoimme nyt edellä kuvatun laskennan.

811120P Diskreetit rakenteet

3x + y + 2z = 5 e) 2x + 3y 2z = 3 x 2y + 4z = 1. x + y 2z + u + 3v = 1 b) 2x y + 2z + 2u + 6v = 2 3x + 2y 4z 3u 9v = 3. { 2x y = k 4x + 2y = h

Juuri 4 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty Kertaus. b) B = (3, 0, 5) K2. 8 ( 1)

Matriisipotenssi. Koska matriisikertolasku on liitännäinen (sulkuja ei tarvita; ks. lause 2), voidaan asettaa seuraava määritelmä: ja A 0 = I n.

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut

LAUSEKKEET JA NIIDEN MUUNTAMINEN

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Tekijä Pitkä matematiikka b) Kuvasta nähdään, että b = i 4 j. c) Käytetään a- ja b-kohtien tuloksia ja muokataan lauseketta.

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

Tietorakenteet ja algoritmit. Kertaus. Ari Korhonen

Algoritmit 2. Luento 13 Ti Timo Männikkö

Rajoittamattomat kieliopit

8. Kieliopit ja kielet 1 / 22

Luonnolliset vs. muodolliset kielet

Tekijä Pitkä matematiikka

Transkriptio:

Algoritmit 2 Demot 4 24.-25.4.2019 Timo Männikkö

Tehtävä 1 (a) int laske(n) { if (n <= 1) return 1; for (i = 0; i < w; i++) x = laske(n/2); for (j = 0; j < n; j++) for (k = 0; k < n; k++) x++; return x; } T (n) = missä c 1, c > 0 vakioita Kun n > 1 tehdään w kertaa rekursiivinen kutsu syöttötiedon koolla n/2 suoritetaan n 2 kertaa vakioaikainen lause { c 1, kun n 1, wt (n/2) + cn 2, kun n > 1, Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 2/23

Tehtävä 1 (b) T (n) = { c 1, kun n 1 wt (n/2) + cn 2, kun n > 1 Master-lauseessa a = w, b = 2, α = 2 ja c 0 Tapaus w = 3: a < b α T (n) = Θ(n α ) = Θ(n 2 ) Tapaus w = 4: a = b α T (n) = Θ(n α log b n) = Θ(n 2 log 2 n) Tapaus w = 5: a > b α T (n) = Θ(n log b a ) = Θ(n log 2 5 ) (log 2 5 2,32) Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 3/23

Tehtävä 2 (a) Kruskal(N, E) { S = E; // kaikki tiet T = tyhjä joukko; while (T ei muodosta virittävää puuta) { valitse lyhin tie (u,v) joukosta S; poista tie (u,v) joukosta S; if (tie (u,v) ei aiheuta silmukkaa T:ssä) lisää tie (u,v) joukkoon T; } return T; } Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 4/23

Tehtävä 2 (a) jatkuu S T (A,B) (A,C) (A,D) (A,E) (B,C) (B,D) - (B,E) (C,D) (D,E) (A,B) (A,C) (A,D) (B,C) (B,D) (B,E) (C,D) (D,E) (A,B) (A,C) (A,D) (B,D) (B,E) (C,D) (D,E) (A,B) (A,C) (B,D) (B,E) (C,D) (D,E) (A,B) (A,C) (B,D) (B,E) (C,D) (A,C) (B,D) (B,E) (C,D) (A,E) (A,E) (B,C) (A,E) (B,C) (A,D) (A,E) (B,C) (A,D) (A,E) (B,C) (A,D) (A,B) Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 5/23

Tehtävä 2 (b) Prim(N, E) { U = {aloitussolmu}; T = tyhjä joukko; while (U ei sisällä kaikkia solmuja) { valitse lyhin tie (u,v), jolla u on U:ssa ja v ei ole U:ssa; lisää tie (u,v) joukkoon T; lisää solmu v joukkoon U; } return T; } Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 6/23

Tehtävä 2 (b) U T A - A E (A,E) A E D (A,E) (A,D) A E D B (A,E) (A,D) (A,B) A E D B C (A,E) (A,D) (A,B) (B,C) E 2 A 6 4 D B 3 C Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 7/23

Tehtävä 3 (a) Huffmanin koodit merkeille, joiden esiintymistiheydet ovat: a b c d e f g 34 16 12 3 7 15 18 3 7 12 15 16 18 34 10 12 15 16 18 34 / \ 3 7 Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 8/23

Tehtävä 3 (a) jatkuu 15 16 18 22 34 / \ 10 12 / \ 3 7 18 22 31 34 / \ / \ 10 12 15 16 / \ 3 7 31 34 40 / \ / \ 15 16 18 22 / \ 10 12 / \ 3 7 Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 9/23

Tehtävä 3 (a) jatkuu 40 65 / \ / \ 18 22 31 34 / \ / \ 10 12 15 16 / \ 3 7 105 / \ / \ 40 65 / \ / \ 18 22 31 34 / \ / \ 10 12 15 16 / \ 3 7 Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 10/23

Tehtävä 3 (a) jatkuu * / \ * / \ 0 / \ 1 * * / \ / \ / \ g * * a / \ / \ * c f b / \ d e Koodit: a b c d e f g 11 101 011 0100 0101 100 00 Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 11/23

Tehtävä 3 (b) a b c d e f g 11 101 011 0100 0101 100 00 Vakiopituinen koodi, 3 bittiä/merkki: 3 105 = 315 bittiä Huffmanin koodit: 2 34 + 3 16 + 3 12 + 4 3 + 4 7 + 3 15 + 2 18 = 273 bittiä Tilaa säästyy 42 bittiä, joka on 13,3 % vakiopituisen tarvitsemasta tilasta. Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 12/23

Tehtävä 4 (a) ababbabbbabb 0 1 a b a babbabbbabb 0 0 1 2 a b ab ab abbabbbabb 01 0 1 2 3 a b ab ba Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 13/23

Tehtävä 4 (a) jatkuu abab babbbabb 012 0 1 2 3 4 a b ab ba abb ababba bbbabb 0123 0 1 2 3 4 5 a b ab ba abb bab ababbab bbabb 01231 0 1 2 3 4 5 6 a b ab ba abb bab bb Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 14/23

Tehtävä 4 (a) jatkuu ababbabbb abb 012316 0 1 2 3 4 5 6 7 a b ab ba abb bab bb bba ababbabbbabb 0123164 0 1 2 3 4 5 6 7 a b ab ba abb bab bb bba Merkkijonon pituus 12 ja koodin pituus 7, joten tilaa säästyy 5/12 41,7 % Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 15/23

Tehtävä 4 (b) 11042036 0 1 a b 1 1042036 b 0 1 a b 11 042036 bb 0 1 2 a b bb Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 16/23

Tehtävä 4 (b) jatkuu 110 42036 bba 0 1 2 3 a b bb ba 1104 2036 bbaaa 0 1 2 3 4 a b bb ba aa 11042 036 bbaaabb 0 1 2 3 4 5 a b bb ba aa aab Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 17/23

Tehtävä 4 (b) jatkuu 110420 36 bbaaabba 0 1 2 3 4 5 6 a b bb ba aa aab bba 1104203 6 bbaaabbaba 0 1 2 3 4 5 6 7 a b bb ba aa aab bba ab 11042036 bbaaabbababba 0 1 2 3 4 5 6 7 8 a b bb ba aa aab bba ab bab Merkkijonon pituus 13 ja koodin pituus 8, joten tilaa säästyy 5/13 38,5 % Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 18/23

Tehtävä 5 Merkkijonoissa a (pituus m) ja b (pituus n) on kirjaimia aakkosjärjestyksessä Kukin kirjain voi esiintyä samassa merkkijonossa vain kerran Montako yhteistä kirjainta merkkijonoilla a ja b on? Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 19/23

Tehtävä 5 Taulukointimenetelmä: Jos merkit a i ja b j ovat samat, lasketaan merkkijonojen a 1 a 2... a i 1 ja b 1 b 2... b j 1 yhteiset merkit ja lisätään yksi Jos merkit a i ja b j eivät ole samoja, lasketaan merkkijonojen a 1 a 2... a i 1 ja b 1 b 2... b j sekä merkkijonojen a 1 a 2... a i ja b 1 b 2... b j 1 yhteiset merkit ja valitaan näistä suurempi Merkkijonot a[1..m] ja b[1..n] Yhteisten merkkien lukumäärä d[0..m][0..n] Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 20/23

Tehtävä 5 (a) 1. for (i = 0; i <= m; i++) d[i][0] = 0; 2. for (j = 0; j <= n; j++) d[0][j] = 0; 3. for (i = 1; i <= m; i++) { for (j = 1; j <= n; j++) { if (a[i] == b[j]) d[i][j] = d[i-1][j-1] + 1; else d[i][j] = max(d[i-1][j], d[i][j-1]); } } 4. return d[m][n]; Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 21/23

Tehtävä 5 (b) A B D G K M 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 A 1 0 1 1 1 1 1 1 C 2 0 1 1 1 1 1 1 G 3 0 1 1 1 2 2 2 J 4 0 1 1 1 2 2 2 M 5 0 1 1 1 2 2 3 P 6 0 1 1 1 2 2 3 Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 22/23

Tehtävä 5 (c) C F K L N R T 0 1 2 3 4 5 6 7 0 0 0 0 0 0 0 0 0 B 1 0 0 0 0 0 0 0 0 C 2 0 1 1 1 1 1 1 1 H 3 0 1 1 1 1 1 1 1 K 4 0 1 1 2 2 2 2 2 N 5 0 1 1 2 2 3 3 3 R 6 0 1 1 2 2 3 4 4 Algoritmit 2 Kevät 2019 Demot 4 24.-25.4.2019 23/23