Tietorakenteet, laskuharjoitus 2,

Koko: px
Aloita esitys sivulta:

Download "Tietorakenteet, laskuharjoitus 2,"

Transkriptio

1 Tietorakenteet, laskuharjoitus, Muista TRAKLA-tehtävien deadline Tarkastellaan ensin tehtävää yleisellä tasolla. Jos funktion T vaativuusluokka on O(f), niin funktio T on muotoa T (n) = cf(n) + dg(n), missä g = O(f) ja c sekä d ovat vakiokertoimia. Ehto g = O(f) seuraa siitä, että muulloin T O(f). Tehtävänannon nojalla voidaan jättää funktio g huomioimatta. Itse asiassa tämä rajoitus on oleellinen, sillä ilman sitä olisi mahdotonta saada yksikäsitteisiä ratkaisuja tämän tehtävän kohtiin. Näiden havaintojen nojalla jokaisessa tehtävän kohdassa riittää ratkaista yhtälöstä cf(00) = 1 ms vakiokerroin c ja laskea sen jälkeen arvo lausekkeelle cf(5000), josta nähdään kuinka monta millisekuntia kullakin vaativuudella kuluisi aikaa syötteen käsittelyyn, jonka koko on (a) O(log n): Käsitellään edellinen päättely vielä tässä erikoistapauksessa, jotta ajatus tulisi selkeämmäksi konkreettisen esimerkin avulla. Algoritmin aikavaativuus on O(log n), joten sen vaativuutta tarkasti kuvaava funktio on muotoa c log n + dg(n), jossa d on vakio ja g(n) on jokin funktio, jolle pätee g(n) = O(log n). Edellä käsitellyn yleisemmän päättelyn merkinnöin f = log. Koska g voitiin jättää huomiotta riittää ratkaista c log 00 = 1. c log 00 = 1 ms c = 1 ms log 00 Löydettiin c:lle arvo. Nyt voidaan laskea kauan suoritus kestäisi kun n = Huomaa, että tässä vaiheessa ei vielä oltu kiinnitetty logaritmin kantalukua. Käyttämällä logaritmin kannanvaihtosääntöä log a x = log b x log b a osoittautuukin, ettei se ole lainkaan välttämätöntä. Siis olkoon a > 1. c log a 5000 = log a 5000 log a 00 ms = log ms 1, 61 ms Havaittiin, että algoritmi on lähes yhtä nopea 5000:n kokoiselle syötteelle, kuin 00:nkin kokoiselle syötteelle. Tämän laskun perusteella logaritmisen aikavaativuuden algoritmit vaikuttavat hyvin tehokkailta. (b) O(n): Ratkaistaan ensin c tunnetun arvon nojalla. c00 = 1 ms c = 1 ms 00 Nyt voidaan laskea algoritmin kesto 5000:n kokoiselle syötteelle. c5000 = 5000 ms 00 = 5 ms 1

2 (c) O(n log n): Tämä lasketaan kuten edelliset kohdat. Suoritusaika, kun n = 5000: c5000 log 5000 = (d) O(n ): Ratkaistaan c: Suoritusaika, kun n = 5000: c00 log 00 = 1 ms c = c5000 = 5000 log 5000 ms 00 log 00 1 ms 00 log 00 c00 = 1 ms c = 1 ms ms = 5 log ms 40, 19 ms = 65 ms = 0, 65 s Havaitaan, että neliöllisen aikavaativuuden algoritmeilla suoritus alkaa jo hidastua tuntuvasti. (e) O( n ): Ratkaistaan c: c 00 = 1 ms c = 1 ms 00 Suoritusaika, kun n = 5000: c 5000 = 5000 ms 00 = 4800 ms Tälläisenään luku ei kerro vielä juuri mitään. Yhdessä vuodessa on = ms ja log , 876, joten algoritmin suoritus vie aikaa noin 4765, vuotta. Eräiden arvioiden mukaan maailmankaikkeudessa on atomeja noin kappaletta. Samaisen lähteen mukaan maailmankaikkeuden ikä on vaivaiset 13, vuotta, joten suorittaaksemme näin kauan kestävän algoritmin tarvitsisimme aikaa vähintään 00 kertaa maailmankaikkeuden iän verran. Tämän tarkastelun nojalla eksponentiaalisen aikavaativuuden algoritmi vaikuttaa hyvin pitkälti käyttökelvottomalta erittäin pienestä vakiokertoimesta huolimatta. Käytännössä eksponentiaalisen aikavaativuuden algoritmeja tulisikin välttää viimeiseen asti. Joskus niitä on pakko käyttää, mutta tällöin on varmistuttava, että mahdolliset syötteet ovat tarpeeksi pieniä.. Yksi minuutti sisältää = ms. Tehtävässä voidaan käyttää hyväksi edellä ratkottuja vakiokertoimia. Jokaisessa kohdassa riittää nyt etsiä suurin n:n arvo, joka toteuttaa epäyhtälön cf(n) ms. (a) O(log n): log a n ms log a ms log 00 n n , Huomataan, että logaritmisen aikavaativuuden algoritmille voidaan antaa käytännössä kuinka iso syöte tahansa, jos jaksetaan odotella vähän aikaa.

3 (b) O(n): n ms ms n = 1, 107 Myös lineaarisen ajan vievä algoritmi sietää vielä hyvin suuria syötteitä. (c) O(n log n): n log a n ms 00 log a ms n log a n log a n log 00 n Edellä olevaa epäyhtälöä ei kyetä ratkaisemaan analyyttisesti ainakaan tämän kurssin esitiedoilla. Kokeilemalla havaitaan, että suurin kokonaisluku, jolla epäyhtälö on vielä voimassa on (d) O(n ): Käytetään jälleen edellisessä kohdassa ratkaistun vakiokertoimen c arvoa hyväksi. (e) O( n ): n ms ms n n , 79 n ms ms n log n 00 log n 00 log n 00 + log , 87 Eksponentiaalisen aikavaativuuden algoritmissa syötteen ei tarvitse olla kovinkaan suuri, jotta suoritusaika hidastuu. Todellisissa tapauksissa vakiokertoimet eivät ole niin pieniä kuin tässä tapauksessa. Esimerkiksi vakiokertoimella c = 1 algoritmille voitaisiin antaa korkeintaan 15:n kokoinen syöte, mikäli haluttaisiin laskennan suoriutuvan alle minuutissa. 3. Muistutetaan tässä, että funktio f kuuluu kertaluokkaan O(g), jos on olemassa vakiot d > 0 ja n 0 siten että kaikilla n > n 0 pätee f(n) dg(n). Tätä merkitään f = O(g). (a) Näytetään, että n + 7n + 3 = O(n 3 ). Tässä on ideana arvioida annettua funktiota sopivalla tavalla ylöspäin. Sopiva tapa määräytyy kulloisenkin tavoitteen mukaan. Tässä tehtävässä halutaan osoittaa funktion vaativuusluokaksi O(n 3 ), joten ylärajaksi pitäisi saada d n 3, jollain d > 0. Olkoon n > 0. n + 7n + 3 n + 7n + 3n n + 7n + 3n = 1n 1n 3 Edellinen laskussa osoitettiin, että n + 7n + 3 1n 3 kun n > 0, siis määritelmän vakioiksi kelpaavat n 0 = 0 ja d = 1. 3

4 (b) Näytetään, että n 3 + 7n + 3 O(n ). Todistetaan tämä vastaoletuksen avulla. Oletetaan siis, että n 3 + 7n + 3 = O(n ). Olkoon d ja n 0 määritelmän takaamat vakiot, joille pätee vastaväitteen nojalla n 3 + 7n + 3 dn kaikille n > n 0. Arviomalla funktiota alaspäin kun n > n 0 > 0 saadaan: n 3 n 3 n 3 + 7n + 3 dn Jakamalla puolittain luvulla n tästä seuraa, että n d kaikilla n > n 0 0. Tämä ei voi päteä koska lukua n voidaan kasvattaa rajatta. Saatiin aikaiseksi ristiriita, joten vastaoletuksen on oltava väärä. Saatiin siis todistettua n 3 + 7n + 3 O(n ). Edellisessä päättelyssä päästiin tulokseen, josta seuraa ristiriita, mutta näytetään vielä matemaattisen täsmällisyyden nimissä kaksi erilaista tapaa kaivaa ristiriita edellisestä lausekkeesta. Kummassakin on ajatuksena valita n:lle jokin arvo, jolla vastaväitteen mukaan pitäisi päteä n d. Valintaa n:n arvoksi rajoittaa ehto n > n 0. Saavuttaaksemme ristiriidan halutaan myös että n > d. Erääksi ristiriitaan johtavaksi arvoksi kelpaa n = max{n 0, d + 1. Tästä seuraa kaksi vaihtoehtoa, jotka kummatkin on käsiteltävä erikseen. Käsitellään ensin tapaus d > n 0. Tällöin n = d + 1 ja edellä johtamamme epäyhtälö väittää d + 1 d 1 0, joka on ilmiselvä ristiriita. Toisessa tapauksessa n 0 d, jolloin saadaan edellä olevan nojalla Siis pääsimme jälleen ristiriitaan. n d n 0 n n Esitetään vielä toinen sopiva arvo n:lle, jonka avulla päädytään ristiriitaan. Asetetaan n = (n 0 + 1)(d + 1). Tätä hiukan yllättävää valintaa puoltaa havainto, että d voi olla kuinka pieni positiivinen luku tahansa. Lisäämällä d:hen 1 ja kertomalla n 0 +1 tällä luvulla voidaan olla varmoja, että kaikissa mahdollisissa tapauksissa n > n 0. Sijoittamalla tämä arvo edellä johdettuun epäyhtälöön, päästään haluttuun tulokseen. (n 0 + 1)(d + 1) d (n 0 + 1)d + n d (n 0 + 1)d (n 0 + 1)d + n d n < n < 1 Nähtiin, että myös tällä tavoin saavutetaan ristiriitan kohtuullisen yksinkertaisen laskennon jälkeen. (c) Näytetään, että log n O(10 16 ). Käytetään jälleen vastaoletusta, siis oletetaan, että log n = O(10 16 ). On siis olemassa vakiot d 0 ja n 0 s.e. log n d = d Merkitään d = d Nyt log a n d n a d, joka on selvästikin ristiriita n:n arvolla (n 0 +1)(a d +1). Siis alkuperäinen väite pitää paikkansa. 4

5 (d) Osoitetaan, että 10 6 = O(1). Kun valitaan määritelmän d:ksi esimerkiksi 10 7, niin kaikilla n pätee 10 6 d 1 = , joten n 0 :ksi kelpaa mikä tahansa luku. Kuten huomataan n ei vaikuta tähän vaativuusluokkaan kuuluvien funktioiden arvoon millään tavalla. Algoritmin aika- tai tilavaativuutena tämä tarkoittaa sitä, että syötteen koko ei vaikuta algoritmin suoritusaikaan tai sen käyttämään muistiin millään tavalla. Toisin sanoen algoritmin käyttämä aika tai tila on saman kokoinen kaikilla syötteillä. Tälläisiä algoritmeja kutsutaan vakioaikaisiksi tai sanotaan että algoritmi käyttää vakiomäärän muistia. (e) Osoitetaan, että log n = O(log n). Intuiitiivisesti väite on selvä, sillä eksponentti saadaan tuotua logaritmin sisältä logaritmin kertoimeksi. Käsitellään tämä kuitenkin hiukan yksityiskohtaisemmin. Käytetään logaritmeille mielivaltaisia kantalukuja a, b > 1 havainnollistaaksemme miksi aikavaativuusmerkinnöissä ei tarvitse kiinnittää logaritmin kantaa. Logaritmin laskusäännöistä tiedetään, että log a n = log a n = log b n log b a = log b a log b n Tämä arvio antaa määritelmän d:tä vastaavan luvun valitsemiseksi hyvän idean. Asetetaan d = 3 log b a. Nyt voidaan helposti osoittaa näyttää väite todeksi. log b a 3 log b a log b a log b n 3 log b a log b n kaikilla n > 0 log b n log b a 3 log b a log b n kaikilla n > 0 log a n 3 log b a log b n kaikilla n > 0 Tämä riittää osoittamaan väitteen. Korvaamalla laskuista numero k:lla ja 3 k + 1:llä oltaisiin todistettu log n k = O(log n). 4. Tarkastellaan seuraavaa lukujen 1,..., n summan laskevaa algoritmia. Summa(n) 1 summa = 0 for i = 1 to n // Invariantti: summa == i 1 j 3 summa = summa + i Tarkastellaan aluksi algoritmin aikavaativuutta. Rivilla 1 oleva sijoitus suoritetaan ainoastaan kerran koko algoritmin avulla. Tavallinen sijoitus sujuu vakioajassa. 5

6 Rivillä oleva silmukan tarkistus suoritetaan n + 1 kertaa. Itse tarkistus sujuu vakioajassa. Usein algoritmien analyysissa ajatellaan for-silmukoiden kätkevän taakseen while-silmukan kaltaisen rakenteen, jota seuraava koodin pätkä kuvaa. i = 0 while i < n i = i Tässä silmukassa while:n tarkistus suoritetaan selvästikin n + 1 kertaa. Esimerkiksi C-kielen tai Javan for-silmukoista on helposti nähtävissä samankaltaisuus while-silmukkaan. Rivi 3 suoritetaan tasan n kertaa. Jälleen itse rivillä suoritettava yhteenlasku kestää ainoastaan vakioajan. Jo tämän tarkastelun nojalla nähdään, että algoritmi vie lineaarisen ajan syötteen koon suhteen, kun ajatellaan koon tarkoittavan tässä yhteydessä argumenttina saatavaa numeroa. Osoitetaan vielä hiukan seikkaperäisemmin miksi algoritmin aikavaativuus on luokkaa O(n). Merkitään rivin i suoritukseen kuluvaa aikaa a i :llä. Kun n > 0 algoritmin viemää aikaa voidaan arvioida seuraavasti: a 1 + (n + 1)a + na 3 = a 1 + a + (a + a 3 )n a 1 n + a n + (a + a 3 )n = (a 1 + a + a 3 )n. Joten algoritmin aikavaativuutta kuvaava funktio on kaikilla n > 0 pienempi tai yhtäsuuri kuin dn, missä d = a 1 + a + a 3. Algoritmin tilavaativuus on vakio, siis luokkaa O(1), sillä olipa n minkä kokoinen tahansa, algoritmi tarvitsee ainoastaan yhden muuttujan. Tarkastellaan vielä algoritmin pseudokoodiesitykseen merkittyä invarianttia. Aloitettaessa silmukan ensimmäinen kierros i = 1. Invariantti väittää, että muuttuja summa arvo on i 1 j = 0 j = 0. Tämä pitää paikkansa, sillä muuttujaan summa on vielä koskematon alustuksen jäljiltä. Jos invariantti oli voimassa kun i = k, niin se pätee myös kun i = k + 1. Tällöin invariantti väittää, että muuttujan summa arvo on i 1 j = k+1 1 j = k j. Koska invariantti oli voimassa kun i = k, niin summan arvo on tämän nojalla seuraavalla kierroksella summa + k = k 1 j + k = k j = i 1 j, siis täsmälleen se mitä invariantti väittää kun i = k+1. Edellisen kaavan k tulee siitä, että kullakin kierroksella summaan lisätään i:n arvo. Saavuttaessa viimeisellä kierroksella i:n arvoa testaavaan silmukkaan pätee, että i = n+1. Edellä osoitettiin, että invariantti pätee myös tällöin, joten muuttujan summa arvoksi saatiin silmukan päätyttyä i 1 j = n j = n, eli juurikin se mitä algoritmilla haluttiin saavuttaa. 5. Tehtävän oli tutkia algoritmia Evaluate-Polynomial. 6

7 Evaluate-Polynomial(A[0.. k], x) 1 s = 0 for i = 0 to A.length // Invariantti: s == i 1 A[j] xj 3 z = 1 4 for j = 1 to i 5 z = z x 6 s = s + A[i] z 7 return s Simuloidaan ensin algoritmin toimintaa funktiolla p(x) = x 3 3x 7 kun x =. Algoritmin alkutila: s == 0, i = 0, A[i] = 7 Tilanne ensimmäisen kierroksen jälkeen: s == 7, i = 1, A[i] = 0 Tilanne toisen kierroksen jälkeen: s == 7, i =, A[i] = 3 Tilanne kolmannen kierroksen jälkeen: s == 19, i = 3, A[i] = Tilanne viimeisen kierroksen jälkeen: s == 3, i = 4 Merkitään n = A.length 1, joka on luonnollinen mitta syötteen koolle. Rivi 1 suoritetaan kerran. Rivi suoritetaan n + 1 kertaa. operaatioita. Rivi 3 suoritetaan n kertaa. Rivi 4 suoritetaan jokaisella ulomman silmukan kierroksella i + 1 kertaa. Koko algoritmin aikana tämä rivi suoritetaan kertaa. n (n + 1) = i = i=0 (n + 1)(n + ) = O(n ) Rivi 5 suoritetaan yhden ulomman silmukan kierroksella i kertaa. Yhteensä tämä suoritetaan n(n+1) kertaa. Rivi 6 suoritetaan yhteensä n kertaa. Rivi 7 suoritetaan ainoastaan kerran. Koska aritmeettisten operaatioiden ajatellaan olevan vakioaikaisia nähdään ylläolevasta päättelystä, että algoritmin suoritusaika on O(n ). Tämä voidaan edellisen kohdan tapaan perustella seikkaperäisesti laskemalla algoritmin käyttämä aika joillain ajoilla a i. 6. (a) Summakaavan n i=1 i arvoksi tiedetään n(n+1). Puuttuva arvo voidaan selvittää laskemalla taulukon arvot yhteen ja vähentämällä saatu tulos ylläolevan kaavan arvosta. Esitetään ratkaisu vielä pseudokoodilla. 1 Lukua n 1 kutsutaan polynomin asteeksi. 7

8 Etsi_puuttuva(A[1.. n]) 1 summa = 0 for i = 1 to A.length 3 summa = summa + A[i] 4 n = A.length return (n (n + 1))/ summa (b) Koska tietorakenteen ainoa tarvittava operaatio on osasumma riittää tallettaa lukujen summat taulukkoon S. Jos rakenne alustetaan antamalla sille taulukko A, niin tällöin S[i] = i A[j]. osasumma(a, b) saadaan laskettua vakioaikaisesti erotuksena S[b] S[a 1] ja alustus vie lineaarisen ajan. Ohessa on tietorakenteen Java-luokkana sekä sen käyttöä esittelevä pääohjelma. public class Osasummat { private double[] summat; public Osasummat(double[] luvut) { this.summat = new double[luvut.length]; this.summat[0] = luvut[0]; for(int i = 1; i < luvut.length; i++) { this.summat[i] = this.summat[i-1] + luvut[i]; public double osasumma(int i,int j) { if (j >= this.summat.length) j = this.summat.length-1; if (i > 0) return this.summat[j] - this.summat[i-1]; else return this.summat[j]; class T6b { /* Metodi ottaa taulukkojen koon komentoriviparametrinaan. */ public static void main(string[] args) { if (args.length < 1) System.exit(0); System.out.println("foo"); int koko = Integer.parseInt(args[0]); // Talletetaan tähän taulukkoon luvut 0...n double[] taulu = new double[koko]; // Tähän approksimoidaan funktion x^ integraalin arvoa // välillä [0,1] double[] integraalit = new double[koko]; 8

9 double vali = (1.0/koko); for(int i = 0; i < koko; i++) { taulu[i] = i; integraalit[i] = vali*(math.pow(i/(double)koko+0.5*vali,)); Osasummat summat = new Osasummat(taulu); Osasummat integraali = new Osasummat(integraalit); System.out.println(summat.osasumma(0,koko - 1)); System.out.println(summat.osasumma(0,koko/)); System.out.println(summat.osasumma(koko/,koko)); System.out.println(integraali.osasumma(0,koko - 1)); System.out.println(integraali.osasumma(0,koko/)); System.out.println(integraali.osasumma(koko/,koko)); 9

58131 Tietorakenteet ja algoritmit (syksy 2015)

58131 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ätiedot

Tietorakenteet, laskuharjoitus 1,

Tietorakenteet, laskuharjoitus 1, Tietorakenteet, laskuharjoitus 1, 19.-22.1 Huom: laskarit alkavat jo ensimmäisellä luentoviikolla 1. Taustaa http://wiki.helsinki.fi/display/mathstatkurssit/matukurssisivu Halutaan todistaa, että oletuksesta

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

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

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

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

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia 58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, 10..2014, vastauksia 1. [9 pistettä] (a) Todistetaan 2n 2 + n + 5 = O(n 2 ): Kun n 1 on 2n 2 + n + 5 2n 2 + n 2 +5n 2 = 8n 2. Eli

Lisätiedot

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

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

Nopea kertolasku, Karatsuban algoritmi

Nopea 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ätiedot

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu 811312A Tietorakenteet ja algoritmit, 2018-2019, Harjoitus 3, Ratkaisu Harjoituksessa käsitellään algoritmien aikakompleksisuutta. Tehtävä 3.1 Kuvitteelliset algoritmit A ja B lajittelevat syötteenään

Lisätiedot

1.4 Funktioiden kertaluokat

1.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ätiedot

Johdatus diskreettiin matematiikkaan Harjoitus 5, Ratkaise rekursioyhtälö

Johdatus 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ätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

Lisätiedot

Kannan vektorit siis virittävät aliavaruuden, ja lisäksi kanta on vapaa. Lauseesta 7.6 saadaan seuraava hyvin käyttökelpoinen tulos:

Kannan vektorit siis virittävät aliavaruuden, ja lisäksi kanta on vapaa. Lauseesta 7.6 saadaan seuraava hyvin käyttökelpoinen tulos: 8 Kanta Tässä luvussa tarkastellaan aliavaruuden virittäjävektoreita, jotka muodostavat lineaarisesti riippumattoman jonon. Merkintöjen helpottamiseksi oletetaan luvussa koko ajan, että W on vektoreiden

Lisätiedot

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Ohjelmointi 1 / 2009 syksy Tentti / 18.12 Tentti / 18.12 Vastaa yhteensä neljään tehtävään (huomaa että tehtävissä voi olla useita alakohtia), joista yksi on tehtävä 5. Voit siis valita kolme tehtävistä 1 4 ja tehtävä 5 on pakollinen. Vastaa JOKAISEN

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

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

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

= 5! 2 2!3! = = 10. Edelleen tästä joukosta voidaan valita kolme särmää yhteensä = 10! 3 3!7! = = 120

= 5! 2 2!3! = = 10. Edelleen tästä joukosta voidaan valita kolme särmää yhteensä = 10! 3 3!7! = = 120 Tehtävä 1 : 1 Merkitään jatkossa kirjaimella H kaikkien solmujoukon V sellaisten verkkojen kokoelmaa, joissa on tasan kolme särmää. a) Jokainen verkko G H toteuttaa väitteen E(G) [V]. Toisaalta jokainen

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

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

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

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 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ätiedot

Sekalaiset tehtävät, 11. syyskuuta 2005, sivu 1 / 13. Tehtäviä

Sekalaiset tehtävät, 11. syyskuuta 2005, sivu 1 / 13. Tehtäviä Sekalaiset tehtävät, 11. syyskuuta 005, sivu 1 / 13 Tehtäviä Tehtävä 1. Johda toiseen asteen yhtälön ax + bx + c = 0, a 0 ratkaisukaava. Tehtävä. Määrittele joukon A R pienin yläraja sup A ja suurin alaraja

Lisätiedot

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

16. Ohjelmoinnin tekniikkaa 16.1

16. Ohjelmoinnin tekniikkaa 16.1 16. Ohjelmoinnin tekniikkaa 16.1 Sisällys For-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. If-else-lause vaihtoehtoisesti

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin Sisällys 17. Ohjelmoinnin tekniikkaa for-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. if-else-lause vaihtoehtoisesti

Lisätiedot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

Tietorakenteet (syksy 2013)

Tietorakenteet (syksy 2013) Tietorakenteet (syksy 2013) Harjoitus 1 (6.9.2013) Huom. Sinun on osallistuttava perjantain laskuharjoitustilaisuuteen ja tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. Näiden laskuharjoitusten

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

Reaalifunktioista 1 / 17. Reaalifunktioista

Reaalifunktioista 1 / 17. Reaalifunktioista säilyy 1 / 17 säilyy Jos A, B R, niin funktiota f : A B sanotaan (yhden muuttujan) reaalifunktioksi. Tällöin karteesinen tulo A B on (aiempia esimerkkejä luonnollisemmalla tavalla) xy-tason osajoukko,

Lisätiedot

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3 16. Lohkot 16.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 16.2 Lohkot Kaarisulut

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

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

2.1. Tehtävänä on osoittaa induktiolla, että kaikille n N pätee n = 1 n(n + 1). (1)

2.1. Tehtävänä on osoittaa induktiolla, että kaikille n N pätee n = 1 n(n + 1). (1) Approbatur 3, demo, ratkaisut Sovitaan, että 0 ei ole luonnollinen luku. Tällöin oletusta n 0 ei tarvitse toistaa alla olevissa ratkaisuissa. Se, pidetäänkö nollaa luonnollisena lukuna vai ei, vaihtelee

Lisätiedot

Tekijä MAA2 Polynomifunktiot ja -yhtälöt = Vastaus a)

Tekijä MAA2 Polynomifunktiot ja -yhtälöt = Vastaus a) K1 a) Tekijä MAA Polynomifunktiot ja -yhtälöt 6.8.016 ( + + ) + ( ) = + + + = + + + = + 4 b) 4 4 ( 5 + ) ( 5 + 1) = 5 + + 5 + 1 4 = + + + 4 = + 5 5 1 1 Vastaus a) 4 + b) 4 + 1 K a) f ( ) = + 1 f () = +

Lisätiedot

Miten osoitetaan joukot samoiksi?

Miten osoitetaan joukot samoiksi? Miten osoitetaan joukot samoiksi? Määritelmä 1 Joukot A ja B ovat samat, jos A B ja B A. Tällöin merkitään A = B. Kun todistetaan, että A = B, on päättelyssä kaksi vaihetta: (i) osoitetaan, että A B, ts.

Lisätiedot

Luku 8. Aluekyselyt. 8.1 Summataulukko

Luku 8. Aluekyselyt. 8.1 Summataulukko Luku 8 Aluekyselyt Aluekysely on tiettyä taulukon väliä koskeva kysely. Tyypillisiä aluekyselyitä ovat, mikä on taulukon välin lukujen summa tai pienin luku välillä. Esimerkiksi seuraavassa taulukossa

Lisätiedot

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten Sisällys 16. Ohjelmoinnin tekniikkaa Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. For-lause lyhemmin. If-else-lause vaihtoehtoisesti

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 8. kesäkuuta 2018 Yleistä Tentti 1 meni pistekeskiarvon (11.2) perusteella välttävästi. Omasta tehtäväpaperista saa kopion

Lisätiedot

16. Ohjelmoinnin tekniikkaa 16.1

16. Ohjelmoinnin tekniikkaa 16.1 16. Ohjelmoinnin tekniikkaa 16.1 Sisällys Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. For-lause lyhemmin. If-else-lause vaihtoehtoisesti

Lisätiedot

1. Esitä rekursiivinen määritelmä lukujonolle

1. Esitä rekursiivinen määritelmä lukujonolle Matematiikan laitos Johdatus Diskrettiin Matematiikkaan Harjoitus 4 24.11.2011 Ratkaisuehdotuksia Aleksandr Pasharin 1. Esitä rekursiivinen määritelmä lukujonolle (a) f(n) = (2 0, 2 1, 2 2, 2 3, 2 4,...)

Lisätiedot

Matematiikan tukikurssi, kurssikerta 5

Matematiikan tukikurssi, kurssikerta 5 Matematiikan tukikurssi, kurssikerta 5 1 Jonoista Matematiikassa jono (x n ) on yksinkertaisesti järjestetty, päättymätön sarja numeroita Esimerkiksi (1,, 3, 4, 5 ) on jono Jonon i:ttä jäsentä merkitään

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

Algoritmi on periaatteellisella tasolla seuraava:

Algoritmi on periaatteellisella tasolla seuraava: Algoritmi on periaatteellisella tasolla seuraava: Dijkstra(V, E, l, v 0 ): S := { v 0 } D[v 0 ] := 0 for v V S do D[v] := l(v 0, v) end for while S V do valitse v V S jolle D[v] on minimaalinen S := S

Lisätiedot

811312A Tietorakenteet ja algoritmit 2015-2016. I Johdanto

811312A Tietorakenteet ja algoritmit 2015-2016. I Johdanto 811312A Tietorakenteet ja algoritmit 2015-2016 I Johdanto Sisältö 1. Algoritmeista ja tietorakenteista 2. Algoritmien analyysistä 811312A TRA, Johdanto 2 I.1. Algoritmeista ja tietorakenteista I.1.1. Algoritmien

Lisätiedot

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Esimerkkejä polynomisista ja ei-polynomisista ongelmista Esimerkkejä polynomisista ja ei-polynomisista ongelmista Ennen yleisempiä teoriatarkasteluja katsotaan joitain tyypillisiä esimerkkejä ongelmista ja niiden vaativuudesta kaikki nämä ongelmat ratkeavia

Lisätiedot

2017 = = = = = = 26 1

2017 = = = = = = 26 1 JOHDATUS LUKUTEORIAAN (syksy 2017) HARJOITUS 2, MALLIRATKAISUT Tehtävä 1. Sovella Eukleiden algoritmia ja (i) etsi s.y.t(2017, 753) (ii) etsi kaikki kokonaislukuratkaisut yhtälölle 405x + 141y = 12. Ratkaisu

Lisätiedot

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3 15. Lohkot 15.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.2 Lohkot Aaltosulkeet

Lisätiedot

Ohjelmoinnin perusteet, syksy 2006

Ohjelmoinnin perusteet, syksy 2006 Ohjelmoinnin perusteet, syksy 2006 Esimerkkivastaukset 1. harjoituksiin. Alkuperäiset esimerkkivastaukset laati Jari Suominen. Vastauksia muokkasi Jukka Stenlund. 1. Esitä seuraavan algoritmin tila jokaisen

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 2 Lisää osamurtoja Tutkitaan jälleen rationaalifunktion P(x)/Q(x) integrointia. Aiemmin käsittelimme tapauksen, jossa nimittäjä voidaan esittää muodossa Q(x) = a(x x

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 4 Jatkuvuus Jatkuvan funktion määritelmä Tarkastellaan funktiota f x) jossakin tietyssä pisteessä x 0. Tämä funktio on tässä pisteessä joko jatkuva tai epäjatkuva. Jatkuvuuden

Lisätiedot

Diskreetin matematiikan perusteet Laskuharjoitus 1 / vko 8

Diskreetin matematiikan perusteet Laskuharjoitus 1 / vko 8 Diskreetin matematiikan perusteet Laskuharjoitus 1 / vko 8 Tuntitehtävät 1-2 lasketaan alkuviikon harjoituksissa ja tuntitehtävät 5- loppuviikon harjoituksissa. Kotitehtävät 3-4 tarkastetaan loppuviikon

Lisätiedot

3. Laskennan vaativuusteoriaa

3. Laskennan vaativuusteoriaa 3. Laskennan vaativuusteoriaa tähän asti puhuttu siitä, mitä on mahdollista laskea äärellisessä ajassa siirrytään tarkastelemaan laskemista kohtuullisessa ajassa vaihtoehtoisesti voidaan laskenta-ajan

Lisätiedot

Harjoitustyön testaus. Juha Taina

Harjoitustyön testaus. Juha Taina Harjoitustyön testaus Juha Taina 1. Johdanto Ohjelman teko on muutakin kuin koodausta. Oleellinen osa on selvittää, että ohjelma toimii oikein. Tätä sanotaan ohjelman validoinniksi. Eräs keino validoida

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

2. Johdanto tietorakenteisiin

2. Johdanto tietorakenteisiin 2. Johdanto tietorakenteisiin Kaikki epätriviaalit ohjelmat joutuvat tallettamaan ja käsittelemään tietoa suoritusaikanaan Esim. "puhelinluettelo": numeron lisäys numeron poisto numeron muutos numeron

Lisätiedot

Vapaus. Määritelmä. jos c 1 v 1 + c 2 v c k v k = 0 joillakin c 1,..., c k R, niin c 1 = 0, c 2 = 0,..., c k = 0.

Vapaus. Määritelmä. jos c 1 v 1 + c 2 v c k v k = 0 joillakin c 1,..., c k R, niin c 1 = 0, c 2 = 0,..., c k = 0. Vapaus Määritelmä Oletetaan, että v 1, v 2,..., v k R n, missä n {1, 2,... }. Vektorijono ( v 1, v 2,..., v k ) on vapaa eli lineaarisesti riippumaton, jos seuraava ehto pätee: jos c 1 v 1 + c 2 v 2 +

Lisätiedot

Ohjelmointi 2 / 2010 Välikoe / 26.3

Ohjelmointi 2 / 2010 Välikoe / 26.3 Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään

Lisätiedot

Yhtälöryhmät 1/6 Sisältö ESITIEDOT: yhtälöt

Yhtälöryhmät 1/6 Sisältö ESITIEDOT: yhtälöt Yhtälöryhmät 1/6 Sisältö Yhtälöryhmä Yhtälöryhmässä on useita yhtälöitä ja yleensä myös useita tuntemattomia. Tavoitteena on löytää tuntemattomille sellaiset arvot, että kaikki yhtälöt toteutuvat samanaikaisesti.

Lisätiedot

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

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe ratkaisuja (Jyrki Kivinen) 58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe 12.9.2018 ratkaisuja (Jyrki Kivinen) 1. [10 pistettä] Iso-O-merkintä. (a) Pitääkö paikkansa, että n 3 + 5 = O(n 3 )? Ratkaisu: Pitää paikkansa.

Lisätiedot

Tarkennamme geneeristä painamiskorotusalgoritmia

Tarkennamme 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ätiedot

Esitetään tehtävälle kaksi hieman erilaista ratkaisua. Ratkaisutapa 1. Lähdetään sieventämään epäyhtälön vasenta puolta:

Esitetään tehtävälle kaksi hieman erilaista ratkaisua. Ratkaisutapa 1. Lähdetään sieventämään epäyhtälön vasenta puolta: MATP00 Johdatus matematiikkaan Ylimääräisten tehtävien ratkaisuehdotuksia. Osoita, että 00 002 < 000 000. Esitetään tehtävälle kaksi hieman erilaista ratkaisua. Ratkaisutapa. Lähdetään sieventämään epäyhtälön

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

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

Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten Ratkaisuehdotelma Tehtävä 1 1. Etsi lukujen 4655 ja 12075 suurin yhteinen tekijä ja lausu se kyseisten lukujen lineaarikombinaationa ilman laskimen

Lisätiedot

2.2.1 Ratkaiseminen arvausta sovittamalla

2.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ätiedot

Sisällys. 15. Lohkot. Lohkot. Lohkot

Sisällys. 15. Lohkot. Lohkot. Lohkot Sisällys 15. Lohkot Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.1 15.2 Lohkot Aaltosulkeet

Lisätiedot

5. OSITTAISINTEGROINTI

5. OSITTAISINTEGROINTI 5 OSITTAISINTEGROINTI Kahden funktion f ja g tulo derivoidaan kuten muistetaan seuraavasti: D (fg) f g + f Kun tämä yhtälö integroidaan puolittain, niin saadaan fg f ()g()d + f ()()d Yhtälö saattaa erota

Lisätiedot

Matematiikan tukikurssi, kurssikerta 3

Matematiikan tukikurssi, kurssikerta 3 Matematiikan tukikurssi, kurssikerta 3 1 Epäyhtälöitä Aivan aluksi lienee syytä esittää luvun itseisarvon määritelmä: { x kun x 0 x = x kun x < 0 Siispä esimerkiksi 10 = 10 ja 10 = 10. Seuraavaksi listaus

Lisätiedot

MATEMATIIKAN KOE, PITKÄ OPPIMÄÄRÄ HYVÄN VASTAUKSEN PIIRTEITÄ

MATEMATIIKAN KOE, PITKÄ OPPIMÄÄRÄ HYVÄN VASTAUKSEN PIIRTEITÄ MATEMATIIKAN KOE, PITKÄ OPPIMÄÄRÄ 6.3.09 HYVÄN VASTAUKSEN PIIRTEITÄ Alla oleva vastausten piirteiden, sisältöjen ja pisteitysten luonnehdinta ei sido ylioppilastutkintolautakunnan arvostelua. Lopullisessa

Lisätiedot

1 Kertaus. Lineaarinen optimointitehtävä on muotoa:

1 Kertaus. Lineaarinen optimointitehtävä on muotoa: 1 Kertaus Lineaarinen optimointitehtävä on muotoa: min c 1 x 1 + c 2 x 2 + + c n x n kun a 11 x 1 + a 12 x 2 + + a 1n x n b 1 a 21 x 1 + a 22 x 2 + + a 2n x n b 2 (11) a m1 x 1 + a m2 x 2 + + a mn x n

Lisätiedot

Funktiot. funktioita f : A R. Yleensä funktion määrittelyjoukko M f = A on jokin väli, muttei aina.

Funktiot. funktioita f : A R. Yleensä funktion määrittelyjoukko M f = A on jokin väli, muttei aina. Funktiot Tässä luvussa käsitellään reaaliakselin osajoukoissa määriteltyjä funktioita f : A R. Yleensä funktion määrittelyjoukko M f = A on jokin väli, muttei aina. Avoin väli: ]a, b[ tai ]a, [ tai ],

Lisätiedot

MS-A0401 Diskreetin matematiikan perusteet

MS-A0401 Diskreetin matematiikan perusteet MS-A0401 Diskreetin matematiikan perusteet Osa 2: Relaatiot ja funktiot Riikka Kangaslampi Syksy 2017 Matematiikan ja systeemianalyysin laitos Aalto-yliopisto Relaatiot Relaatio Määritelmä 1 Relaatio joukosta

Lisätiedot

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. 1 Luokka Murtoluku uudelleen Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. Sievennettäessä tarvitaan osoittajan ja nimittäjän suurin yhteinen tekijä (syt).

Lisätiedot

Numeeriset menetelmät TIEA381. Luento 6. Kirsi Valjus. Jyväskylän yliopisto. Luento 6 () Numeeriset menetelmät / 33

Numeeriset menetelmät TIEA381. Luento 6. Kirsi Valjus. Jyväskylän yliopisto. Luento 6 () Numeeriset menetelmät / 33 Numeeriset menetelmät TIEA381 Luento 6 Kirsi Valjus Jyväskylän yliopisto Luento 6 () Numeeriset menetelmät 4.4.2013 1 / 33 Luennon 6 sisältö Interpolointi ja approksimointi Polynomi-interpolaatio: Vandermonden

Lisätiedot

Positiivitermisten sarjojen suppeneminen

Positiivitermisten sarjojen suppeneminen Positiivitermisten sarjojen suppeneminen Jono (b n ) n= on kasvava, jos b n+ b n kaikilla n =, 2,... Lemma Jokainen ylhäältä rajoitettu kasvava jono (b n ) n= raja-arvo on lim n b n = sup n Z+ b n. suppenee

Lisätiedot

Jokaisen parittoman kokonaisluvun toinen potenssi on pariton.

Jokaisen parittoman kokonaisluvun toinen potenssi on pariton. 3 Todistustekniikkaa 3.1 Väitteen kumoaminen vastaesimerkillä Monissa tilanteissa kohdataan väitteitä, jotka koskevat esimerkiksi kaikkia kokonaislukuja, kaikkia reaalilukuja tai kaikkia joukkoja. Esimerkkejä

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

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Tietorakenteet 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ätiedot

MAB3 - Harjoitustehtävien ratkaisut:

MAB3 - Harjoitustehtävien ratkaisut: MAB - Harjoitustehtävien ratkaisut: Funktio. Piirretään koordinaatistoakselit ja sijoitetaan pisteet:. a) Funktioiden nollakohdat löydetään etsimällä kuvaajien ja - akselin leikkauspisteitä. Funktiolla

Lisätiedot

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

Algoritmien suunnittelu ja analyysi (kevät 2004) 1. välikoe, ratkaisuja 58053-7 Algoritmien suunnittelu ja analyysi (kevät 2004) 1. välikoe, ratkaisuja Malliratkaisut ja pisteytysohje: Jyrki Kivinen Tentin arvostelu: Jouni Siren (tehtävät 1 ja 2) ja Jyrki Kivinen (tehtävät

Lisätiedot

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko,

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko, Tehtävä 1 : 1 a) Olkoon G heikosti yhtenäinen suunnattu verkko, jossa on yhteensä n solmua. Määritelmän nojalla verkko G S on yhtenäinen, jolloin verkoksi T voidaan valita jokin verkon G S virittävä alipuu.

Lisätiedot

verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari

verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari Tehtävä 9 : 1 Merkitään kirjaimella G tehtäväpaperin kuvan vasemmanpuoleista verkkoa sekä kirjaimella H tehtäväpaperin kuvan oikeanpuoleista verkkoa. Kuvan perusteella voidaan havaita, että verkko G on

Lisätiedot

1. Mitä tehdään ensiksi?

1. Mitä tehdään ensiksi? 1. Mitä tehdään ensiksi? Antti Jussi i Lakanen Ohjelmointi 1, kevät 2010/ Jyväskylän yliopisto a) Etsitään Googlesta valmis algoritmi b) Mietitään miten itse tehtäisiin sama homma kynällä ja paperilla

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 9 Korkeamman asteen derivaatat Tutkitaan nyt funktiota f, jonka kaikki derivaatat on olemassa. Kuten tunnettua, funktion toista derivaattaa pisteessä x merkitään f (x).

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

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

T Datasta tietoon, syksy 2005 Laskuharjoitus 8.12., ratkaisuja Jouni Seppänen

T Datasta tietoon, syksy 2005 Laskuharjoitus 8.12., ratkaisuja Jouni Seppänen T-1.1 Datasta tietoo, syksy 5 Laskuharjoitus.1., ratkaisuja Joui Seppäe 1. Simuloidaa tasoittaista algoritmia. Esimmäisessä vaiheessa ehdokkaia ovat kaikki yhde muuttuja joukot {a}, {b}, {c} ja {d}. Aaltosulkeide

Lisätiedot

Kohdissa 2 ja 3 jos lukujen valintaan on useita vaihtoehtoja, valitaan sellaiset luvut, jotka ovat mahdollisimman lähellä listan alkua.

Kohdissa 2 ja 3 jos lukujen valintaan on useita vaihtoehtoja, valitaan sellaiset luvut, jotka ovat mahdollisimman lähellä listan alkua. A Lista Aikaraja: 1 s Uolevi sai käsiinsä listan kokonaislukuja. Hän päätti laskea listan luvuista yhden luvun käyttäen seuraavaa algoritmia: 1. Jos listalla on vain yksi luku, pysäytä algoritmi. 2. Jos

Lisätiedot

R : renkaan R kääntyvien alkioiden joukko; R kertolaskulla varustettuna on

R : renkaan R kääntyvien alkioiden joukko; R kertolaskulla varustettuna on 0. Kertausta ja täydennystä Kurssille Äärelliset kunnat tarvittavat esitiedot löytyvät Algebran kurssista [Alg]. Hyödyksi voivat myös olla (vaikka eivät välttämättömiä) Lukuteorian alkeet [LTA] ja Salakirjoitukset

Lisätiedot

MAB3 - Harjoitustehtävien ratkaisut:

MAB3 - Harjoitustehtävien ratkaisut: MAB3 - Harjoitustehtävien ratkaisut: 1 Funktio 1.1 Piirretään koordinaatistoakselit ja sijoitetaan pisteet: 1 1. a) Funktioiden nollakohdat löydetään etsimällä kuvaajien ja - akselin leikkauspisteitä.

Lisätiedot

MATEMATIIKAN KOE, PITKÄ OPPIMÄÄRÄ HYVÄN VASTAUKSEN PIIRTEITÄ

MATEMATIIKAN KOE, PITKÄ OPPIMÄÄRÄ HYVÄN VASTAUKSEN PIIRTEITÄ MATEMATIIKAN KOE, PITKÄ OPPIMÄÄRÄ 4.9.09 HYVÄN VASTAUKSEN PIIRTEITÄ Alustavat hyvän vastauksen piirteet on suuntaa-antava kuvaus kokeen tehtäviin odotetuista vastauksista ja tarkoitettu ensisijaisesti

Lisätiedot

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

58131 Tietorakenteet ja algoritmit (syksy 2015) Toinen välikoe, malliratkaisut Tietorakenteet ja algoritmit (syksy 0) Toinen välikoe, malliratkaisut. (a) Alussa puu näyttää tältä: Lisätään 4: 4 Tasapaino rikkoutuu solmussa. Tehdään kaksoiskierto ensin oikealle solmusta ja sitten

Lisätiedot

Similaarisuus. Määritelmä. Huom.

Similaarisuus. Määritelmä. Huom. Similaarisuus Määritelmä Neliömatriisi A M n n on similaarinen neliömatriisin B M n n kanssa, jos on olemassa kääntyvä matriisi P M n n, jolle pätee Tällöin merkitään A B. Huom. Havaitaan, että P 1 AP

Lisätiedot