2. Algoritmien analyysi

Koko: px
Aloita esitys sivulta:

Download "2. Algoritmien analyysi"

Transkriptio

1 . Algoritmie aalyysi Tässä osassa käsitellää algoritmie aalyysia, joka tarkoittaa algoritmie oikeellisuustarkasteluja sekä iide suorituskyvy aalysoitia. Joskus algoritmie aalyysi katsotaa sisältävä aioastaa suorituskyvy aalyysi, mutta tässä siihe kuuluu myös algoritmi oikeellisuude varmistamie. Algoritmie aalyysii voi tarkemmi perehtyä kirja [Cor] luvuista Algoritmie oikeellisuus Muistettakoo, että tässä kurssissa algoritmi o aia äärellie, ts. se suoritus loppuu äärellisessä ajassa. Tästä syystä oikeellisuus jaetaa kahtee tyyppii: osittaisee oikeellisuutee (partial correctess) ja täydellisee oikeellisuutee (total correctess). Näistä esi maiittu tarkoittaa, että mikäli algoritmi päättyy, se tuottaa vaaditu tulokse ja toie sitä, että algoritmi päättyy ja tuottaa oikea tulokse. Näi olle algoritmi oikeaksi todistamisee vaaditaa osittaise oikeellisuude ja algoritmi päättymise todistamie. Usei algoritmi päättymie o itsestää selvää ja aioaa työä o todistaa osittaie oikeellisuus. Kute jokaie ohjelmoitia harrastaut tietää, ohjelma saattaa jäädä joskus, eteki joillaki harviaisilla erityisillä syötteillä, ikuisee silmukkaa tai rekursioo. Näi olle o tärkeää myös varmistaa algoritmi päättymie kaikissa tapauksissa. Miksi algoritmi o todistettava oikeaksi? Jos tietokoeohjelma toimii vääri, voi syyä olla laitevika, virheellie algoritmi tai siäsä oikea algoritmi virheellie implemetoiti. Näistä viimeksi maiittu o ylivoimaisesti yleisi virhee lähde ja esimmäie todeäköisesti harviaisi. O kuiteki selvää, että mikäli algoritmi o jo suuiteltu vääri, ei ohjelma voi hieosta implemetoiista huolimatta toimia täysi oikei. Näi olle erityisesti tieteellistä lasketaa tai erilaisia protokollia toteuttavissa ohjelmissa olisi syytä varmistaa algoritmi oikeellisuus, jos se suiki o teoreettisesti mahdollista. Myös suorituskykyaalyysii kaattaa kiiittää huomiota erityisesti äissä tapauksissa. Mikälaisilla mekaismeilla algoritmi voidaa todistaa oikeaksi? O olemassa erilaisia formaaleja metodeja tätä varte. Tämä kurssi tarpeisii käyttökelpoisi meetelmä o todistaa osittaie oikeellisuus tekemällä eri kohtii algoritmia väitteitä (assertios), jotka voidaa osoittaa paikkasapitäviksi ja jotka yhdessä varmistavat algoritmi osittaise oikeellisuude. Nämä ovat yleesä s. ivariatteja (ivariats), koska iissä esitetää joki omiaisuus, joka o säilyttävä voimassa tietyssä kohdassa algoritmia koko se suoritukse aja. Algoritmi päättymie varmistetaa käyttämällä kovergetteja (covergets), eli arvoja jotka pieeevät algoritmi edetessä ja päättävät algoritmi saavuttaessaa joki alaraja (useimmite arvo 0). Tällöi algoritmi ei voi jatkua loputtomii.

2 Otetaa aluksi yksikertaie esimerkki; algoritmi joka palauttaa kolmesta luvusta suurimma: Syöte: Luvut a, ja c Tulostus: Suuri luvuista a, ja c MAKSIMI(a,,c) 1. x = a. if > x. x = 4. if c > x 5. x = c 6. retur x Esitetää seuraavat väitteet: 1. Rivillä 4 muuttuja x arvo o suurempi luvuista a ja.. Rivillä 6 muuttuja x arvo o suuri luvuista a, ja c. Todistetaa esi väite 1: Jos a o suurempi tai yhtä suuri kui, if-lausee sisällä olevaa sijoituslausetta ei suoriteta ja x=a. Muute, jos o suurempi kui a, lause suoritetaa ja x=. Kummassaki tapauksessa rivillä 4 muuttuja x arvo o suurempi luvuista a ja. Todistetaa väite. Väittee 1 perusteella tultaessa rivi 4 if-lauseesee muuttuja x arvo o suurempi luvuista a ja. Jos c o suuri luvuista, se o suurempi kui x, jote rivi 5 sijoituslause suoritetaa ja x=c. Muussa tapauksessa sijoituslausetta ei suoriteta ja x o suurempi luvuista a ja, joka o myös suuri luvuista a, ja c. Kummassaki tapauksessa x o suuri luvuista a, ja c. Väittee perusteella algoritmi o osittai oikea. Lisäksi o selvää, että algoritmi päättyy, jote se o myös täysi oikea. Siirrytää hiema mutkikkaampaa tapauksee, jossa joudutaa käyttämää iduktiivista päättelyä. Tutkitaa seuraavaa algoritmia, joka palauttaa parametria saamasa tauluko pieimmä arvo: Syöte: Taulukko A[1,..,], >= 1 Tulostus: Piei luvuista A[1],, A[] MINIMI(A) 1. i =. x = A[1]. while i <= 4. if A[i] < x 5. x = A[i] 6. i = i+1 7. retur x Nyt muuttuja i o eräälaie kovergetti: o selvää että i saavuttaa lopulta arvo +1 ja päättää algoritmi suoritukse. O siis aioastaa todistettava algoritmi osittaie oikeellisuus. Tätä varte muotoillaa ivariatti, jota tällaisessa tapauksessa saotaa myös silmukkaivariatiksi, koska se o voimassa suoritettava silmuka tietyssä kohdassa:

3 while-silmuka kierrokse alkaessa rivillä, ku muuttuja i = k, muuttuja x arvo o piei tauluko arvoista A[1],, A[k-1]. Ivariati todistamie muistuttaa iduktiotodistusta: Osoitetaa esi, että ivariatti o aluksi voimassa ja sitte, että se säilyy voimassa silmuka suorituskerrasta toisee. Ku silmukkaa tullaa esimmäistä kertaa, o x = A[1] ja i= ja väite selvästi voimassa. Oletetaa, että i o aiaki kaksi ja korkeitaa ja ivariatti voimassa arvolla k, ts. kierrokse i=k alussa muuttuja x arvo o piei arvoista A[1], A[k-1]. Tällöi seuraavalla kierroksella (eli kierroksella i=k) verrataa muuttuja x arvoa arvoo A[k]. Jos A[k] o pieempi kui mikää arvoista A[1], A[k-1], se o pieempi kui x ja x päivittyy arvoo A[k]. Muute x ei muutu ja kummassaki tapauksessa muuttuja x arvo o piei arvoista A[1], A[k-1], A[k]. Näi olle ivariatti o voimassa myös seuraava kierrokse (eli kierrokse i=k+1) alussa ja koska se oli voimassa ee esimmäistä silmukkaa, se pysyy voimassa ii kaua kui silmukkaa suoritetaa. Site se o voimassa myös viimeisellä kierroksella eli ku i=+1 (jolloi silmuka sisää ei eää meä). Tällöi muuttujassa x o piei arvoista A[1], A[], A[] eli piei tauluko arvo. Myös rekursiiviste algoritmie oikeellisuude voi usei todistaa iduktiotekiikalla. Otetaa esimerkiksi Haoi torit. Alkuasemassa o kolme paalua (umeroidaa e 1, ja ), joista paaluu 1 o piottu N erikokoista kiekkoa suuruusjärjestyksessä ii, että suuri o alimmaisea ja piei päällimmäiseä. Tehtävää o siirtää kaikki kiekot paaluu ii, että missää vaiheessa ei isompaa kiekkoa saa siirtää pieemmä päälle. Luoollisesti kiekkoja saa siirtää paalusta toisee aioastaa yksi kiekko kerrallaa. O laadittava algoritmi, joka tulostaa kiekkoje siirtojärjestykse. Tutkitaa seuraavaa rekursiivista algoritmia Syöte: Luku N >= 1 ja paaluje umerot A, B ja C (luvut 1,, jossaki järjestyksessä) Tulostus: Siirtojärjestys N:lle kiekolle paalusta A paaluu B Käyttämällä apua paalua C SIIRRÄ(N,A,B,C) 1. if N==1. tulosta A -> B. else 4. SIIRRÄ(N-1,A,C,B) 5. tulosta A -> B 6. SIIRRÄ(N-1,C,B,A) 7. retur Muuttuja N pieeee jokaisella kutsulla ja N: arvolla 1 ei eää algoritmia suoriteta eteepäi. Näi olle N o kovergetti, ja o selvää että suoritettaessa algoritmia millä tahasa N: arvolla, joka o vähitää 1, algoritmi päättyy. Site riittää osoittaa osittaie oikeellisuus. Koska algoritmi o rekursiivie, käytäössä aioa mahdollisuus se oikeaksi todistamiseksi o iduktiivie argumetoiti. Todistetaa seuraava väite: Mistä tahasa laillisesta asemasta, jossa N pieitä kiekkoa ovat paalussa A, algoritmi tulostaa laillise siirtosarja, missä ämä N pieitä kiekkoa siirtyvät paaluu B käyttäe apua paalua C eikä siiä siirretä mitää muita kiekkoja.

4 Jos N=1, o oletukse mukaa piei kiekko paalussa A ja se voidaa laillisesti siirtää mihi tahasa. Site algoritmi aioa operaatio tulosta A -> B o laillie ja väite o voimassa N: arvolla 1. Oletetaa yt, että N o vähitää ja että väite o voimassa arvolla N-1. Nyt siis oletukse mukaa N pieitä kiekkoa ovat paalussa A ja asema o laillie. Koska myös N-1 pieitä kiekkoa ovat luoollisesti paalussa A, oletukse mukaa kutsu SIIRRÄ(N-1,A,C,B) siirtää laillisesti N-1 pieitä kiekkoa paalusta A paaluu C käyttäe apua paalua B eikä se siirrä muita kiekkoja. Koska N-1 pieitä kiekkoa ovat paalussa C, voidaa N:eksi piei kiekko siirtää paalusta A paaluu B laillisesti (rivi 5). Nyt N-1 pieitä kiekkoa ovat paalussa C ja asema o edellee laillie, jote oletukse mukaa rivi 6 kutsu SIIRRÄ(N-1,C,B,A) siirtää laillisesti N-1 pieitä kiekkoa paalusta C paaluu B käyttäe apua paalua A eikä se siirrä muita kiekkoja. Site lopputuloksea o, että N pieitä kiekkoa siirtyivät laillisesti paalusta A paaluu B ilma että muita kiekkoja siirrettii. Koska väite oli voimassa N: arvolla 1, yllä olevasta argumetoiista seuraa, että se o voimassa myös N: arvolla, je. Algoritmi o siis oikea. Ku haluttaisii siirtää kolme kiekkoa paalusta 1 paaluu, kutsuttaisii SIIRRÄ(,1,,), jolloi se suoritettaisii seuraavasti: SIIRRÄ(,1,,) SIIRRÄ(,1,,) SIIRRÄ(1,1,,) 1 -> 1 -> SIIRRÄ(1,,,1) -> 1 -> SIIRRÄ(,,,1) SIIRRÄ(1,,1,) -> 1 -> SIIRRÄ(1,1,,) 1 -> Näi saataisii siirtosarjaksi 1-> 1-> -> 1-> ->1 -> 1-> mikä voi vahvistaa oikeaksi. Ylimääräie harjoitustehtävä: Keksi Haoi toreille iteratiivie ratkaisu ja todista se oikeaksi!

5 Tutustutaa vielä lisäyslajittelualgoritmii. Tämä lajittelumeetelmä tuetaa myös kortipelaaja lajittelua, sillä meetelmä vastaa tapaa, jolla useimmat lajittelevat kädessä olevat pelikortit suuruusjärjestyksee: Esi verrataa vasemmalta lähtie toista korttia esimmäisee; jos toie o pieempi, siirretää se esimmäiseksi. Nyt kaksi esimmäistä korttia ovat järjestyksessä. Sitte verrataa kolmatta korttia kahtee esimmäisee ja haetaa sille oikea paikka. Tällöi kolme esimmäistä korttia o järjestetty. Sitte tutkitaa eljäs kortti je. Algoritmi o varsi tehokas piete taulukoide lajittelussa. Pseudokoodia algoritmi äyttää tältä, ku tauluko ideksit alkavat ollasta: Syöte: Taulukko A[0,1,..,-1], >= 1 Tulostus: Tauluko alkiot (luvut) järjestyksessä A[0] <= <= A[-1] INSERTION_SORT(A) 1. for j = 1 to -1. k = A[j]. //Lisätää alkio A[j] jooo A[0,.., j-1] 4. i = j-1 5. while i>=0 ad A[i]>k 6. A[i+1] = A[i] 7. i = i-1 8. A[i+1] = k Osoitetaa algoritmi oikeaksi. Tarkastellaa esi algoritmi päättymistä. Riviltä 1 alkavaa forsilmukkaa suoritetaa -1 kertaa, jote algoritmi päättyy, mikäli jokaisella silmuka kierroksella rivie 5-7 while-silmukka päättyy. Rivillä 4 asetetaa muuttuja i arvoksi j-1, jote muuttuja i arvo ee while-silmukkaa o vähitää 0 ja korkeitaa -. Rivie 5-7 while-silmukka päättyy viimeistää, ku i saa arvo -1. Koska muuttujaa i väheetää jokaisella silmuka kierroksella, tämä tapahtuu väistämättä viimeistää -1 kierrokse jälkee. Näi olle while-silmukka päättyy jokaisella for-silmuka kierroksella. Site myös algoritmi päättyy. Vielä pitää varmistaa, että algoritmi tuottaa oikea tulokse. Tutkitaa esi esimerkkitapausta algoritmi suorituksesta. Sovelletaa sitä taulukkoo A={6,,5,4,1,}. 1.kierros j=1, k=a[1]= i while lopussa -1. kierros j=, k=a[]=5 i while lopussa 0. kierros j=, k=a[]=4 i while lopussa kierros j=4, k=a[4]=1 i while lopussa kierros j=5, k=a[5]= i while lopussa for-silmukka päättyy. Taulukko järjestyksessä Tästä huomataa, mite algoritmi toimii. Tauluko alkuosa o järjestyksessä ja silmukassa haetaa käsiteltävälle tauluko alkiolle oikea paikka alkuosassa. Näi voidaa muotoilla silmukkaivariatti:

6 Algoritmi riviä 1 suoritettaessa tauluko alkiot A[0, j-1] ovat samat kui alkuperäisessä taulukossa, mutta ovat suuruusjärjestyksessä A[0] <= <= A[j-1]. Silmuka esimmäisellä suorituskerralla j=1 ja ivariatti koskee vai tauluko alkiota A[0], joka luoollisesti o järjestyksessä. Näi olle ivariatti o alussa voimassa. Oletetaa seuraavaksi että j=r < -1 ja että ivariatti o voimassa, ts. for-silmuka alussa tauluko alkiot A[0],, A[r- 1] ovat samat kui alkuperäisessä taulukossa ja ovat suuruusjärjestyksessä. Aluksi asetetaa k=a[r] ja i=r-1. Tämä jälkee while-silmukassa siirretää alkioita A[r-1], A[r-] je taulukossa askelee oikealle ja väheetää muuttuja i arvoa yhdellä, kues löydetää alkio A[i], joka o pieempi kui A[r] tai i=-1. Tämä jälkee kirjoitetaa A[r] paikalle A[i+1]. Näi for-silmuka seuraava kierrokse alussa tauluko alkiot A[0], A[r] ovat samat kui alkuperäisessä taulukossa, mutta suuruusjärjestyksessä. Site ivariatti pysyy voimassa koko algoritmi suoritukse aja ja johtaa siihe, että algoritmi päättyessä koko taulukko o suuruusjärjestyksessä. Olemme siis osoittaeet, että algoritmi päättyy ja päättyessää tuottaa oikea tulokse. Näi olle algoritmi o oikea. HUOM! Kute tarkkaavaie lukija saattoi huomataki, edellie todistus ei ollut muodollisesti täysi pitävä, koska emme muotoilleet ja todistaeet while-silmukalle omaa silmukkaivariattia. Meidä tarkoituksiimme päättely o kuiteki riittävä pätevä... Algoritmie suorituskyvy aalyysi Edellä tarkasteltii algoritmie oikeellisuutta. O luoollisesti tärkeää, että ogelma ratkaisualgoritmi toimii oikei. Kuiteki samalle ogelmalle o yleesä olemassa useita ratkaisuja eivätkä kaikki ole yhtä tehokkaita (tehokkuuskriteerejäki voi olla moelaisia). Siksi suuitellu ratkaisualgoritmi suorituskykyä pyritää myös yleesä aalysoimaa. Algoritmia voidaa arvioida se kuluttamie resurssie tai se käyttämä aja suhtee. Esimmäisessä tapauksessa tarkoitetaa yleesä algoritmi tarvitsemaa muistia; tällöi puhutaa algoritmi tilakompleksisuudesta (space complexity). Jälkimmäisessä tapauksessa puhutaa algoritmi aikakompleksisuudesta (time complexity). Nämä omiaisuudet ovat aiaki jossai määri vastakkaisia: lisäämällä muistikäyttöä voidaa saada algoritmi usei toimimaa opeammi. Koska tila- ja aikavaatimukset tyypillisesti kasvavat, ku syöttee koko kasvaa, kumpaaki kompleksisuustyyppiä tarkastellaa suhteessa syöttee kokoo. Tällä kurssilla perehdytää algoritmie aikakompleksisuutee. Selvästikää ei ole mielekästä tutkia algoritmi kuluttamia resursseja jossaki kokreettisessa tietokoeympäristössä, koska tulokset eivät olisi välttämättä siirrettävissä muihi ympäristöihi. Siksi algoritmie aalysoimiseksi o määriteltävä joki yleie, astrakti malli, jossa algoritmi ajatellaa toteutettava. Tässä mallia käytetää hajasaatikoetta (radom-access machie), jota luoehtii samalaisista muistipaikoista koostuva muisti ja prosessori, jolla o käytettävissää rekistereitä. Prosessori voi ladata dataa mielivaltaisista muistipaikoista rekistereihi ja talletaa arvoja takaisi muistii. Rekistereissä voidaa tehdä loogisia ja aritmeettisia operaatioita. Koee ohjelma koostuu käskyjoukosta, joka sisältää em. operaatioita ja suoritusta ohjaavia kotrollikäskyjä. Mallissa käskyt suoritetaa peräkkäi, ts. riakkaie suorittamie ei ole mahdollista.

7 Oikeassa tietokoeessa eri operaatiot (joita voidaa aalysoida myös CPU-syklie tai tarvittava RAM-muisti määrä fuktioia) vaativat hiema erilaise suoritusaja. Erilaiset prosessoriarkkitehtuurit vaikuttavat paljo suoritusaikaa ja voidaa algoritmeja toteuttaa muuteki kui prosessorille, vaikkapa ASIC- tai FPGA-piirille, mutta äistä vaihtoehdoista ei eempää tällä kurssilla. Hajasaatikoemallissa oletamme kuiteki kaikkie perusoperaatioide kestävä joki vakioaja; aioastaa tämä o oleellista algoritmie suorituskyvy periaatteellisessa aalyysissä. Eri rivie suoritusajat voivat olla erisuuret, mutta tiety rivi suoritus vie joka kerta sama verra aikaa ja fuktio kutsumisee kuluva aika erotetaa se suorituksee kuluvasta ajasta. Koko algoritmi eri suorituskerrat eivät vie yhtä kaua aikaa, vaa suoritusaikaa vaikuttavat: Syöttee järjestys. Kute esimerkiksi lisäyslajittelu esimerkistä o ähtävissä, syöttee järjestyksellä o merkitystä algoritmi suoritusajassa. Jos lisäyslajitteluu syötetää jo valmiiksi mootoisesti kasvava sekvessi, sisempää while -silmukkaa ei tarvitse suorittaa, mikä puolestaa opeuttaa ulomma for -silmuka suoritusta huomattavasti. Syöttee koko. Syöttee koko vaikuttaa suoraa algoritmi suoritusaikaa, kute esimerkiksi lisäyslajittelu silmukkaivariati lopetusehdosta o ähtävissä. Koska syöttee koolla o yleisessä tapauksessa eite merkitystä suoritusaikaa, algoritmi suoriutumista mitataa yleesä syöttee koo fuktioa. Kokreettiste tietokoeide käskykaoissa o myös hajasaatikoee perusoperaatioita vastaavie käskyje lisäksi yleesä muitaki käskyjä, jotka voivat muuttaa hiema hajasaatikoeella saatuja aalyysituloksia. Esimerkiksi luvu kaksi korottamie riittävä pieee potessii o tavallisesti vakioaikaie operaatio, mitä se ei ole hajasaatikoeessa ellei koee perusoperaatioide joukossa ole ittisiirtoa. Hajasaatikoeessa ei myöskää oleteta oleva ykyprosessoreissa käytettäviä välimuisteja je. Tästä huolimatta hajasaatimallilla saadut aalyysit eustavat varsi hyvi algoritmie suorituskykyä oikeissa koeissaki... Iteratiiviste algoritmie aalyysi Aalysoidaa yt joitaki verrattai yksikertaisia iteratiivisia algoritmeja. Tutkitaa aluksi tauluko alkioide summa laskevaa ohjelmaa: Syöte: Taulukko A[1,..,], >= 1 Tulostus: Tauluko alkioide summa SUMMA(A) 1. sum = 0. for i = 1 to. sum = sum + A[] 4. retur sum

8 Lasketaa kuki rivi suorituskertoje lukumäärä; o selvää, että kuki rivi suoritusaika o vakio, mutta eri rivit voivat viedä eri ajat. Merkitää siis Syöte: Taulukko A[1,..,], >= 1 Tulostus: Tauluko alkioide summa SUMMA(A) kustaus rivi suorituskerrat 1. sum = 0 c 1 1. for i = 1 to c. sum = sum + A[] c 4. retur sum Esimmäistä riviä suoritetaa kerra ja kahta seuraavaa kertaa, jote algoritmi kokoaissuoritusaika o c1 (c c). Suoritusaika riippuu siis lieaarisesti syötetauluko koosta. Tarkastellaa seuraavaksi aiivia versiota yksikertaisesta vaihtolajittelusta: Syöte: Taulukko A[1,..,], >= 1 Tulostus: Tauluko luvut järjestyksessä A[1] <= <= A[] VAIHTOLAJITTELU(A) 1. for i = 1 to. for j = 1 to. if i<j && A[i]>A[j] 4. x = A[i]; 5. A[i] = A[j]; 6. A[j] = x; 7. retur Lasketaa jällee kuki rivi suorituskertoje lukumäärä; taaski jokaise rivi suoritusaika o vakio, mutta eri rivit voivat viedä eri ajat. Määritellää luku t(i, j) seuraavasti: t(i, j) 1, jos ehto silmukoide sisällä ehto A[i] > A[j] o tosi ja t(i, j) 0 muute.

9 Merkitää kute aiemmi Syöte: Taulukko A[1,..,], >= 1 Tulostus: Tauluko luvut järjestyksessä A[1] <= <= A[] VAIHTOLAJITTELU(A) kustaus suorituskerrat 1. for i = 1 to c 1. for j = 1 to c =. if i<j && A[i]>A[j] c 4. x = A[i]; c 4 5. A[i] = A[j]; c 5 6. A[j] = x; c 6 t(i,j) i,j t(i,j) i,j t(i,j) i,j 7. retur Esimmäistä riviä suoritetaa kertaa ja seuraavaa jokaisella i: arvolla kertaa, jote toise rivi suorituskertoja tulee kappaletta. Riviä suoritetaa myös yhtä mota kertaa, koska vertailu tehdää aia. Se sijaa tauluko alkioide vaihtamie, eli rivit 4 6 suoritetaa aioastaa iflausee ehdo ollessa voimassa. Näi saadaa edellä maiitut suorituskerrat ja algoritmi suoritusaika o c 1 (c c) (c4 c5 c6 ) t(i, j) Summalauseke riippuu luoollisesti tauluko alkuperäisestä järjestyksestä. Jos taulukko o jo alussa järjestyksessä, ei vaihtoja tarvitse tehdä laikaa ja suoritusajaksi tulee c1 (c c) Tätä saotaa parhaaksi tapaukseksi. Jos taas taulukko o kääteisessä järjestyksessä, vaihto tehdää joka kerra ku j o suurempi kui i (alkuosa taulukosta o järjestyksessä) ja tällöi lauseet 4 6 suoritetaa ( -1) ( - )... 1 ( -1)/ kertaa. Tässä tapauksessa algoritmi suoritusaika o c (c 1 (c c c ) (c 4 c (c 5 4 c c )/) (c 6 5 i,j c ) ( -1)/ (c 4 c 5 c 6 )/)

10 Tämä o huooi tapaus. Yleesä aalysoitaessa algoritmia ollaa kiiostueita huooimmasta tapauksesta tai keskimääräisestä tapauksesta, paras tapaus o yleesä harviaie eikä aa totuudemukaista kuvaa algoritmi suorituskyvystä. Keskimääräisessä tapauksessa tutkittavassa algoritmissa vaihto tapahtuu joka toie kerta ja site lauseet 4 6 suoritetaa keskimääri 1 ( -1)/ kertaa ja siksi keskimääräie suoritusaika o c1 (c c) (c4 c5 c6 ) ( -1)/4. (c c (c c c )/4) (c - (c c c )/4) Mitä yhteistä äillä suoritusajoilla o? Kaikki ovat muotoa A B, missä A ja B ovat vakioita, jote suoritusajat riippuvat syötetauluko koo eliöstä ( ). Tällaie algoritmi o selvästi hitaampi kui aiempi summa-algoritmi ja syötetauluko koko alkaa rajoittaa algoritmi suorittamista jo huomattavasti aiemmi kui summa laskemie. Tavallisesti keskitymme aioastaa huooimma tapaukse aalysoitii, koska silloi saamme yläraja algoritmi suoritusajalle. Joskus kiiostaa myös keskimääräie suoritusaika, mutta paras tapaus o yleesä harviaie erikoisuus, jota ei kaata tarkastella. Aettua algoritmia voidaa helposti parataa muuttamalla ulomma silmuka ylärajaa ja sisemmä silmuka alarajaa: Syöte: Taulukko A[1,..,], >= 1 Tulostus: Tauluko luvut järjestyksessä A[1] <= <= A[] VAIHTOLAJITTELU(A) kustaus suorituskerrat 1. for i = 1 to -1 c 1-1. for j = i+1 to c = (-1)/. if A[i] > A[j] c *(-1)/ 4. x = A[i]; c 4 5. A[i] = A[j]; c 5 6. A[j] = x; c 6 7. retur i,j t(i, j) t(i,j) i,j t(i,j) i,j Laskemalla suoritusaika samaa tapaa kui yllä, huomataa että kaikissa tapauksissa suoritusaika o muotoa A B, missä A ja B ovat vakioita. Esimerkiksi paras tapaus o c 1 ( -1) (c c) ( -1)/ (c c)/ (c1 (c c)/) - c1, mikä o oi puolet alkuperäisestä. Samaa tapaa saadaa, että muissaki tapauksissa algoritmi opeutuu puolee alkuperäisestä. Algoritmi o siis selvästi opeampi kui alkuperäie mutta riippuu joka tapauksessa eliöllisestä termistä, jote suoritusaika kasvaa kuiteki samassa suhteessa tauluko kokoo. Näi olle uutta algoritmia ei voi pitää oleaisea parauksea. Ns.

11 asymptoottisessa merkitätavassa samaistetaaki samoi kasvavat suoritusajat keskeää, jolloi algoritmie suoritusaikoje tarkastelua voidaa helpottaa. Tähä perehdytääki seuraavaksi..4. Asymptoottie merkitä ja fuktioide kasvu Kute aiemmi todettii, algoritmi aikakompleksisuudella tarkoitetaa yleesä algoritmi vaatimaa suoritusaikaa suhteessa syöttee kokoo. Suoritusaja tutkimie tarkasti ei siis yleesä ole tarpee, vaa oleellisempaa o ymmärtää kuika syöttee koo kasvu vaikuttaa suoritusaikaa. Ku syöte o tarpeeksi suuri, aioaksi merkitseväksi tekijäksi jää suoritusaja kasvuvauhti. Tällöi voimme tutkia kuika suoritusaika käyttäytyy, ku syöte kasvaa rajatta. Tätä saotaa algoritmi asymptoottiseksi tehokkuudeksi (asymptotic efficiecy) Yleesä algoritmi, joka asymptoottie tehokkuus o parempi, o paras valita kaikkii tilateisii, paitsi hyvi pieille syötteille. Aikakompleksisuude tarkastelussa tarvitaa muutamia fuktioide asymptoottisee kasvuu liittyviä käsitteitä, jotka ovat varsi keskeisessä asemassa tällä kurssilla. Niitä esitellää seuraavaksi. Olkoo g() joki fuktio. Silloi merkiällä ( g( tarkoitetaa fuktioide joukkoa, joka määritellää seuraavasti: ( g( { f ( ) O olemassa sellaiset positiiviset vakiot c c ja, että c g ) f ( ) c g( ),aia ku } (kaava 1.1) 1, 0 1 ( 0 Ku fuktio f () toteuttaa yllä aetu ehdo, merkitää f ( ) g(. Tällöi fuktio g() o asymptoottisesti tarkka raja fuktiolle f (). Joskus äkee (esimerkiksi kirjassa [Cor]) käytettävä myös epätarkkaa merkitää f ( ) g(. Alla oleva kuva havaiollistaa visuaalisesti -merkitää. Tämä s. theta-otaatio määrittelee algoritmi suoritusajalle muuttuja fuktioa asymptoottise tarka raja (asymptotically tight oud).

12 c g() f() c1 g() Kuva 1.1. Fuktio f () kasvua voidaa rajoittaa sekä ylhäältä että alhaalta fuktiolla g (), jote f ( ) g(. Esimerkki 1. Olkoo 1, jote 0 f ( ). Tällöi f ( ) 5, ku 1 f ( ), ku 0. Voidaa siis valita kaavassa 1.1. Edellee, ku g( ), 1 1 c, c 5 ja 0 1, jolloi saadaa ( ) ( f ). Tällöi saotaa myös, että algoritmi suoritusaika kasvaa eliöllisesti. Useimmite algoritmie aalyysissa ollaa kiiostueita arvioimaa sitä, kuika opeasti algoritmi vähitää toimii. Tällöi tarvitsee tarkastella aioastaa asymptoottista ylärajaa (siis suoritukse maksimiaikaa), joka määritellää O-merkiä avulla. Olkoo g() joki fuktio. Silloi merkiällä O ( g( tarkoitetaa fuktioide joukkoa, joka määritellää seuraavasti: O( g( { f ( ) O olemassa sellaiset positiiviset vakiot c ja 0, että 0 f ( ) c g( ),aia ku 0} (kaava 1.) Ku fuktio f () toteuttaa yllä aetu ehdo, merkitää f ( ) g(. Tällöi fuktio g() o asymptoottie yläraja fuktiolle f ().

13 c g() f() 0 Kuva 1.. Fuktio f () kasvua voidaa rajoittaa ylhäältä fuktiolla g () f ( ) g(., jote Esimerkki. Olkoo f ( ) 5. Tällöi f ( ), ku 5. Näi olle kaavassa 1. voidaa valita g( ), c 5 ja 0 5, jolloi saadaa f ( ) ). Fuktio g( ) o siis fuktio f () asymptoottie yläraja. Kuitekaa se ei ole asymptoottisesti tarkka raja, sillä olipa vakio c mikä hyväsä, f ( ) 5 c, ku o riittävä suuri (mieti miksi!). Siis f ( ) ), mutta f ( ) ). Huomaa myös, että mikä tahasa fuktiota g( ) 5 opeammi kasvava fuktio voitaisii valita fuktiolle f () ylärajaksi, esimerkiksi f ( ) ) tai f ( ) ). Toisiaa tarvitaa asymptoottista alarajaa: Olkoo g() joki fuktio. Silloi merkiällä ( g( tarkoitetaa fuktioide joukkoa, joka määritellää seuraavasti: ( g( { f ( ) O olemassa sellaiset positiiviset vakiot c ja 0, että 0 c g( ) f ( ),aia ku 0} (kaava 1.) Ku fuktio f () toteuttaa yllä aetu ehdo, merkitää f ( ) g(. Joskus o hyödyllistä huomioida edellä esitettyje merkitöje trasitiivisuusomiaisuus:

14 1. Jos f ( ) g( ja g( ) h(, ii f ( ) h(,. Jos f ( ) g( ja g( ) h(, ii f ( ) h( ja. Jos f ( ) g( ja g( ) h(, ii f ( ) h(. Näytetää, esimerki vuoksi, että keskimmäie omiaisuus o voimassa. Olkoo f ( ) g( ja g( ) h(. Tällöi o olemassa positiiviset vakiot c 1 ja 1, että 0 f ( ) c1 g( ),aia ku 1. Lisäksi o olemassa positiiviset vakiot c ja, että 0 g( ) c h( ),aia ku. Ku valitaa max{ 1, }, o aia ku : f ( ) c g( ) c ( c h( ( c c ) h( ). Siis f ( ) h( Esitetää lopuksi vielä pari esimerkkiä esitettyje merkitöje käytöstä. Esimerkki. Olkoot a ja positiivisia reaalilukuja ja olkoo että f ( ) )? Ratkaisu. Aia, ku 0 o luoollisesti f ( ) ( a). Pitääkö paikkasa,, ( a). Edellee, ku a ( a) (1 a / ) (1 1). Voidaa siis valita kaavassa 1.1. g ( ), c 1 1, c ja a 0, ja saadaa f ( ) ). Ehto o siis voimassa. 1 Esimerkki 4. Olkoo f ( ) ja h( ). Pitääkö paikkasa, että f ( ) )? Etä h( ) )? Ratkaisu. Aia, ku 0 o 1. Siis f ( ) sitte, että olisi h( ) ). Silloi olisi sellaie vakio c, että riittävä suuri. Mutta tällöi olisi mahdotota, koska c o vakio ja paikkaasa., jote ( ) O( ) f. Oletetaa h( ) c, aia ku o c c, aia ku o riittävä suuri. Tämä o kasvaa rajatta. Site esimerki jälkimmäie väite ei pidä Palataa vielä edellise kappalee esimerkkeihi. Tauluko summa-algoritmi kokoaissuoritusaika oli (c c ), ku tauluko koko oli. Näi olle algoritmi c1 aikakompleksisuusluokka o (). Edellee vaihtolajittelualgoritmie kaikki suoritusajat olivat muotoa A B, ku tauluko koko oli. Site algoritmie aikakompleksisuus o luokkaa ( ). Tästä tarkastelusta huomataa myös, että jos olemme kiiostueita aioastaa algoritmi kompleksisuusluokasta (kute yleesä o asia laita), ei eri rivie suoritusajoilla ole merkitystä, kuha e vai ovat vakioita eivätkä siis riipu syöttee koosta. Tämä vuoksi yleesä tarkastelussa huomioidaa vakiokestoiset operaatiot samaarvoisia, jolloi aalysoiti helpottuu hiema. Myös huomataa, että ku kompleksisuus o polyomista luokkaa, ts. suoritusaika syöttee koo fuktioa o muotoa a k k-1 k a k-1 a1 a 0,

15 aioastaa korkeimmalla termillä o opeimmi kasvavaa merkitystä ja algoritmi aikakompleksisuus o luokkaa ( k ). Sisäkkäisiä silmukoita sisältävät iteratiiviset algoritmit ovat usei tällaisia. Olkoo algoritmi muotoa ALGORITMI() 1. for i1 = 1 to. for i = 1 to _ k sisäkkäistä... silmukkaa k. for ik = 1 to k+1. // Joki vakioaikaie operaatio Tällöi riviä 1 suoritetaa kertaa ja koska riviä suoritetaa jokaisella ulomma silmuka kierroksella kertaa, riviä suoritetaa kaikkiaa kertaa. Kolmatta riviä suoritetaa kertaa. Näi jatkamalla havaitaa, että sisimmä silmuka vakioaikaista operaatiota suoritetaa k... kertaa, mistä seuraa, että algoritmi kompleksisuusluokka o ( k ). Huomaa, että tällaie päättely voitii tehdä, koska silmukkoje suorittamista eivät kahlieet muut ehdot ja jokaista silmukkaa suoritetaa se alkaessa kertaa. Lisäksi kaikki yksittäiset rivit ovat vakioaikaisia. Algoritmise ogelma kompleksisuustyyppiä määriteltäessä käytetää usei termejä "polyomisessa ajassa ratkeava" ja "ekspoetiaalie ogelma". Esimmäie termi tarkoittaa sitä, että ogelmaa o ratkaisualgoritmi joka suoritusaikaa voidaa rajoittaa ylhäältä jollaki polyomifuktiolla, esimerkiksi f ( ). Ekspoetiaalie ogelma taas tarkoittaa sitä, että ogelmaa ei tueta pieempää ylärajaa kui joki ekspoetiaalie fuktio, esimerkiksi f ( ). Ero äide kompleksisuusasteide välillä o merkittävä: esimerkiksi ku taas Tämä ero vuoksi polyomisessa ajassa ratkeavia ogelmia saotaa usei myös käytäössä ratkeaviksi ogelmiksi. Kaattaa kuiteki muistaa, että myös polyomiaikaise algoritmi suoritusaika kasvaa erittäi opeasti, mikäli polyomi korkei potessi o suuri. Iteret-osoitteessa o lista useimmi tavattavista kompleksisuusluokista ja esimerkkejä algoritmisista ogelmista joide ratkaisualgoritmi o aettua luokkaa..5. Rekursiiviste algoritmie aalyysi Usei algoritmit esitetää rekursio avulla. Tällöi tarvitaa uusia tekiikoita aikakompleksisuude määrittämisee; voidaa turvautua iduktiivisee päättelyy, rekursiopuu avulla tarkasteluu tai joissaki tapauksissa voidaa soveltaa eräälaista keittokirjameetelmää, kuha algoritmia vastaava rekursioyhtälö o saatu muodostettua. Palataa esi aiemmi esitettyy Haoi tori-algoritmii:

16 Syöte: Luku N >= 1 ja paaluje umerot A, B ja C (luvut 1,, jossaki järjestyksessä) Tulostus: Siirtojärjestys N:lle kiekolle paalusta A paaluu B Käyttämällä apua paalua C SIIRRÄ(N,A,B,C) 1. if N==1. tulosta A -> B. else 4. SIIRRÄ(N-1,A,C,B) 5. tulosta A -> B 6. SIIRRÄ(N-1,C,B,A) 7. retur Mite voidaa päätellä algoritmi kompleksisuus? Jos algoritmi suoritusaika tuetaa, ku kiekkoja o N-1 kappaletta, voidaa päätellä suoritusaja N:llä kiekolla, koska tällöi tehdää yksi vakioaikaie operaatio (ajatellaa vertailu ja tulostamie yksikertaisuude vuoksi yhdeksi operaatioksi, e vievät yhteesä vakioaja) ja kahdesti suoritus (N-1):llä kiekolla. Sovelletaa yt iduktiivista päättelyä: Merkitää T(N):llä algoritmi vaatimie askelie lukumäärää. Ku N=1, algoritmi tekee vai yhde tulostukse, jote T(1) = 1. Ku N=, tehdää yksi tulostus ja suoritetaa kaksi kertaa algoritmi arvolla N=1, jote T() = 1 + T(1) = Yleisesti millä tahasa N: arvolla tehdää yksi tulostus ja suoritetaa kaksi kertaa algoritmi arvolla N-1, jote T(N) = 1 + T(N-1) (kaava.1) ja saadaa T() = T() + 1 = +1 = 7, T(4) = T()+1 = = 15. Koska suoritusaika hiema eemmä kui kaksikertaistuu N: kasvaessa yhdellä, voidaa arvella luvu T(N): liittyvä joteki lukuu N. Koska T(1) = -1, T() = 4-1, T() = 8-1 ja T(4)=16-1, arvataa että T(N) = N -1. (kaava.) Kaava. pätee, ku N < 5 ja jos oletetaa, että T(N-1) = N-1-1, saadaa kaava.1 avulla T(N) = T(N-1)+1 = ( N-1-1)+1 = N - +1 = N -1 ja iduktiolla päätellää että kaava. o voimassa kaikilla N: arvoilla. Siis aettu Haoi torie ratkaisualgoritmi o luokkaa ( N ). Samaa tuloksee olisi päästy myös tutkimalla puurakeetta, joka muodostuu algoritmi suorituspolusta

17 Seuraavassa o kuvattu Haoi torie rekursiivisesta suorituspolusta muodostuva puu. Puu solmut äyttävät kullaki rekursio tasolla suoritettavie operaatioide lukumäärä. Jokaisella algoritmi kutsulla, alita tasoa lukuu ottamatta, tehdää yksi vakioaikaie operaatio ja kaksi rekursiivista kutsua. Vakioaikaie operaatio koostuu, kute edellä maiittii, yhdestä vertailusta ja tulostuksesta. Jos käytetää N:ää kiekkoa, puuhu muodostuu N tasoa ja algoritmi suorittamie operaatioide lukumäärä saadaa, ku lasketaa puu solmuje määrä. Kuviossa o merkitty äkyvii eri tasoje solmuje lukumäärät ja laskettu e yhtee. Näi saadaa algoritmi kompleksisuusluokaksi ( N ) kute pitääki. Kuva 1. Haoi torie rekursiopuu. Aalysoitaessa rekursiivista algoritmia, se suoritusajalle saadaa usei kaava.1 tapaie esitys, jollaista kutsutaa rekursioyhtälöksi. Rekursioyhtälö voidaa joskus ratkaista arvaamalla ratkaisu ja todistamalla se iduktiotekiikalla oikeaksi. Moii tapauksii voidaa kuiteki soveltaa seuraavaa lausetta, joka todistusta ei tarvitse osata, riittää ku sitä osaa käyttää:

18 Lause M. (Master Theorem) Olkoot a 1 1 kokoaislukuvakioita ja f fuktio. Rekursio T( ) a T( / ) f ( ) samoi kui rekursio T( ) a T( / ) f ( ) ratkaisulle pätee seuraavaa: log a 1) Jos f ( ) O( ) jollaki vakiolla 0, ii T( ) log a log a ) Jos f ( ) ), ii T( ) log a ) lg ) log a ) Jos f ( ) ( ) jollaki vakiolla 0 ja jos a f ( / ) c f ( ) jollaki vakiolla c 1 ja riittävä suurilla luvu arvoilla, ii T( ) f ( HUOM! Merkitä x tarkoittaa suurita kokoaislukua, joka o korkeitaa yhtä suuri kui x. Esimerkiksi Merkitä x tarkoittaa pieitä kokoaislukua, joka o vähitää yhtä suuri kui x. Esimerkiksi.. HUOM! Usei rekursioyhtälössä jätetää kokoaisosa merkitsemättä ja kirjoitetaa T( ) a T( / ) f ( ), jolloi yleesä tarkoitetaa yhtälöä / ) f ( ) T( ) a T(. HUOM! Jotta rekursioyhtälöllä olisi ratkaisu, o luoollisesti T(1) aettava. Tämä vaikuttaa tarkkaa ratkaisuu, mutta ei kuitekaa ratkaisu kompleksisuusluokkaa, jote usei se jätetää eriksee maiitsematta.

19 Esimerkkejä lausee käytöstä. Selvitä lausee M avulla seuraavie rekursioyhtälöide ratkaisufuktioide kompleksisuudet: a) T( ) 4 T( / ) ) T( ) 4 T( / ) c) T( ) 4 T( / ) d) T( ) T( / ) lg Ratkaisu. 1 a) Tässä a 4, ja f ( ). Näi olle log a log 4 ja koska f ( ) O( ), voidaa soveltaa lausee esimmäistä kohtaa (tässä siis 1) ja saadaa T( ) log a ) ) Nyt a 4, kute edellä ja ) f ( ). Siksi tässäki tapauksessa log a log 4 koska f ( ) ( ), saadaa lausee toise kohda mukaa T( ) lg ) 1 c) Tässäki a 4, ja yt f ( ). Taaski log a log 4 ja f ( ) ( ), voidaa lausee kolmaessa kohdassa valita 1. Lisäksi a f ( / ) 4 ( / ) 1/ 1/ f ( ), jote voimme soveltaa lausee kolmatta kohtaa (c=1/) rekursioyhtälö ratkaisuu ja saamme T( ) f ( ). d) Nyt a, ja f ( ) lg. Tällöi log a log 1. Koska lg, o selvää että lausee tapaukset 1 ja eivät sovellu. Kuiteki, olipa 0 kuika piei hyväsä, pätee lg 1, ku o riittävä suuri. Site kolmattakaa tapausta ei voi soveltaa aettuu rekursioyhtälöö. Siis kaikkia rekursioyhtälöitä ei valitettavasti voi ratkaista lausee M avulla. Varsi moii tapauksii se kuiteki soveltuu. Sovelletaa yt lausetta M lomituslajittelu aalyysii. Lomituslajittelu perustuu siihe, että lajiteltava aieisto jaetaa kahtee osaa, jotka lajitellaa eriksee. Tämä jälkee järjestyksessä olevat osat lomitetaa yhtee ii, että alkiot tulevat järjestyksee. Ku algoritmia sovelletaa rekursiivisesti, päädytää lopulta lajittelemaa yhde alkio listoja, mikä o triviaali tehtävä. Lomituslajittelu algoritmia varte tarvitaa esi algoritmi lomittamaa järjestyksessä olevat lista osat: ja

20 Syöte: Taulukko A[1,..,], >= 1, luvut 1 <= p <= q < r <= Tauluko alkioide A[p..q] ja A[q+1,r] oletetaa oleva suuruusjärjestyksessä Tulostus: Tauluko alkiot A[p..r] suuruusjärjestyksessä LOMITA(A,p,q,r) 1. varaa listat L[1,..,q-p+1] ja R[1,..,r-q] // Kopioidaa osalistat. for i=p to q. L[i-p+1] = A[i] 4. for i=q+1 to r 5. R[i-q] = A[i] 6. i = 1 7. j = 1 8. k = p // Lomitetaa vase ja oikea puoli 9. while i <= q-p+1 ad j <= r-q 10. if L[i] <= R[j] 11. A[k] = L[i] 1. i = i+1 1. else 14. A[k] = R[j] 15. j = j k = k+1 // while loppuu 17. for m=i to q-p A[k] = L[m] 19. k = k+1 0. for m=j to r-q 1. A[k] = R[m]. k = k+1. retur O selvää (vai oko?) että yllä oleva algoritmi kompleksisuus o muotoa c (r-p). Nyt voidaa laatia helposti rekursiivie algoritmi LOMITUSLAJITTELU, jolle syötetää taulukko A[1,,] ja jota kutsutaa muodossa LOMITUSLAJITTELU(A,1,), ku halutaa lajitella koko taulukko A. Syöte: Taulukko A[1,..,], >= 1, luvut 1 <= p <= q <= Tulostus: Tauluko alkiot A[p..q] suuruusjärjestyksessä LOMITUSLAJITTELU(A,p,q) 1. if p < q. r = ( p q) /. LOMITUSLAJITTELU(A,p,r) 4. LOMITUSLAJITTELU(A,r+1,q) 5. LOMITA(A,p,r,q) 6. retur Ku kutsutaa lomituslajittelualgoritmia taulukolle, joka pituus o, lajitellaa samalla algoritmilla taulukot, joide pituudet ovat / ja /. Lisäksi tehdää -pituiselle listalle

21 lomitus, joka suoritusaja todettii oleva muotoa c. Näi olle lomituslajittelu suoritusajalle T() saadaa rekursio T( ) T( / ) c Sovelletaa yt lausetta M, jolloi a, ja f ( ) c. Tällöi log a log 1 ja 1 f ( ) c ( ) jote lausee M kohda ojalla T( ) lg ). Siis lomituslajittelu kompleksisuusluokka o lg. Lähteet [Cor] Corme, T.H., Leiserso, C.E., Rivest, R.L., Stei, C. Itroductio to Algorithms, d editio, The MIT Press 001.

811312A Tietorakenteet ja algoritmit II Algoritmien analyysi

811312A 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ätiedot

811312A Tietorakenteet ja algoritmit , Harjoitus 1 ratkaisu

811312A Tietorakenteet ja algoritmit , Harjoitus 1 ratkaisu 83A Tietoraketeet ja algoritmit 06-07, Harjoitus ratkaisu Harjoitukse aiheea o algoritmie oikeellisuus. Tehtävä. Kahvipurkkiogelma. Kahvipurkissa P o valkoisia ja mustia kahvipapuja, yhteesä vähitää kaksi

Lisätiedot

811312A Tietorakenteet ja algoritmit, , Harjoitus 4, Ratkaisu

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

Lisätiedot

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu 111A Tietoraketeet ja algoritmit, 016-017, Harjoitus, Ratkaisu Harjoitukse aiheita ovat algoritmie aikakompleksisuus ja lajittelualgoritmit Tehtävä.1 Selvitä seuraavie rekursioyhtälöide ratkaisuje kompleksisuusluokat

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiika tukikurssi Kurssikerta 1 Iduktiotodistus Iduktiotodistukse logiikka Tutkitaa tapausta, jossa haluamme todistaa joki väittee P() site, että se pätee kaikilla luoollisissa luvuilla. Eli halutaa

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiika tukikurssi Kurssikerta 3 1 Lisää iduktiota Jatketaa iduktio tarkastelua esimerki avulla. Yritetää löytää kaava : esimmäise (positiivise) parittoma luvu summalle eli summalle 1 + 3 + 5 + 7 +...

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

( ) k 1 = a b. b 1) Binomikertoimen määritelmän mukaan yhtälön vasen puoli kertoo kuinka monta erilaista b-osajoukkoa on a-joukolla.

( ) k 1 = a b. b 1) Binomikertoimen määritelmän mukaan yhtälön vasen puoli kertoo kuinka monta erilaista b-osajoukkoa on a-joukolla. Kombiatoriikka, kesä 2010 Harjoitus 2 Ratkaisuehdotuksia (RT) (5 sivua) Käytä tehtävissä 1-3 kombiatorista päättelyä. 1. Osoita, että kaikilla 0 b a pätee ( ) a a ( ) k 1 b b 1 kb Biomikertoime määritelmä

Lisätiedot

Kertaa tarvittaessa induktiota ja rekursiota koskevia tietoja.

Kertaa tarvittaessa induktiota ja rekursiota koskevia tietoja. MATEMATIIKAN JA TILASTOTIETEEN LAITOS Aalyysi I Harjoitus 5. 0. 2009 alkavalle viikolle Ratkaisuehdotuksia ( sivua) (Rami Luisto) Laskuharjoituksista saa pistettä, jos laskettu vähitää 50 tehtävää; 3 pistettä,

Lisätiedot

811312A Tietorakenteet ja algoritmit, 2015-2016, Harjoitus 2, Ratkaisu

811312A Tietorakenteet ja algoritmit, 2015-2016, Harjoitus 2, Ratkaisu 8111A Tietoraketeet ja algoritmit, 15-16, Harjoitus, Ratkaisu Harjoituksessa käsitellää asymptoottista merkitätapaa ja algoritmie aikakompleksisuutta. Tehtävä.1 a Oko f ( O( tai f (, ku 1 f ( f, 4 ( 5

Lisätiedot

RATKAISUT x 2 3 = x 2 + 2x + 1, eli 2x 2 2x 4 = 0, joka on yhtäpitävä yhtälön x 2 x 2 = 0. Toisen asteen yhtälön ratkaisukaavalla saadaan

RATKAISUT x 2 3 = x 2 + 2x + 1, eli 2x 2 2x 4 = 0, joka on yhtäpitävä yhtälön x 2 x 2 = 0. Toisen asteen yhtälön ratkaisukaavalla saadaan RATKAISUT 8 17 8 a) Paraabelie y x ja y x + x + 1 leikkauspisteet saadaa määritettyä, ku esi ratkaistaa yhtälö x x + x + 1, eli x x, joka o yhtäpitävä yhtälö x x. Toise astee yhtälö ratkaisukaavalla saadaa

Lisätiedot

Diskreetin Matematiikan Paja Ratkaisuja viikolle 4. ( ) Jeremias Berg. n(n + 1) 2. k =

Diskreetin Matematiikan Paja Ratkaisuja viikolle 4. ( ) Jeremias Berg. n(n + 1) 2. k = Diskreeti Matematiika Paja Ratkaisuja viikolle 4. (7.4-8.4) Jeremias Berg. Osoita iduktiolla että k = ( + ) Ratkaisu: Kute kaikissa iduktiotodistuksissa meidä täytyy siis osoittaa asiaa. Ns. perustapaus,

Lisätiedot

Tehtäviä neliöiden ei-negatiivisuudesta

Tehtäviä neliöiden ei-negatiivisuudesta Tehtäviä epäyhtälöistä Tehtäviä eliöide ei-egatiivisuudesta. Olkoo a R. Osoita, että 4a 4a. Ratkaisu. 4a 4a a) a 0 a ) 0.. Olkoot a,, R. Osoita, että a a a. Ratkaisu. Kerrotaa molemmat puolet kahdella:

Lisätiedot

MATP153 Approbatur 1B Harjoitus 1, ratkaisut Maanantai

MATP153 Approbatur 1B Harjoitus 1, ratkaisut Maanantai MATP53 Approbatur B Harjoitus, ratkaisut Maaatai..05. (Lämmittelytehtävä.) Oletetaa, että op = 7 tutia työtä. Kuika mota tutia Oili Opiskelija työsketelee itseäisesti kurssilla, joka laajuus o 4 op, ku

Lisätiedot

4.3 Signaalin autokorrelaatio

4.3 Signaalin autokorrelaatio 5 4.3 Sigaali autokorrelaatio Sigaali autokorrelaatio kertoo kuika paljo sigaali eri illä korreloi itsesä kassa (josta imiki). Se o Fourier-muuokse ohella yksi käyttökelpoisimmista sigaalie aalysoitimeetelmistä.

Lisätiedot

3 10 ei ole rationaaliluku.

3 10 ei ole rationaaliluku. Harjoitukset / 011 RATKAISUT Lukuteoria 1. Etsi Eratostheee seulalla samatie kaikki lukua 400 pieemmät alkuluvut. (Tai ohjelmoi tietokoeesi etsimää paljo lisää.) Kirjoita rivii kaikki luvut 1-00. Poista

Lisätiedot

Matematiikan tukikurssi. Kertausta 1. välikokeeseen. Tehtävät

Matematiikan tukikurssi. Kertausta 1. välikokeeseen. Tehtävät Matematiika tukikurssi Kertausta. välikokeesee Tehtävät Algebraa Tämä kappale sisältää rusaasti harjoitustehtäviä. Suurimpaa osaa tehtävistä löytyy ratkaisut lopusta. Syyä rusaasee tehtävämäärää o, että

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiika tukikurssi Kertauslueto. välikokeesee Algebraa Tämäkertaie kurssimoiste sisältää rusaasti harjoitustehtäviä. Syyä tähä o se, että matematiikkaa oppii parhaite itse tekemällä ja laskemalla.

Lisätiedot

Insinöörimatematiikka IA

Insinöörimatematiikka IA Isiöörimatematiikka IA Harjoitustehtäviä. Selvitä oko propositio ( p q r ( p q r kotradiktio. Ratkaisu: Kirjoitetaa totuustaulukko: p q r ( p q r p q r ( p q r ( p q r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Lisätiedot

1 Eksponenttifunktion määritelmä

1 Eksponenttifunktion määritelmä Ekspoettifuktio määritelmä Selvitimme aikaisemmi tällä kurssilla, millaie potessisarja säilyy derivoiissa muuttumattomaa. Se perusteella määritellää: Määritelmä. Ekspoettifuktio exp : R R määritellää lausekkeella

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

Epäyhtälöoppia matematiikkaolympialaisten tehtäviin

Epäyhtälöoppia matematiikkaolympialaisten tehtäviin Epäyhtälöoppia matematiikkaolympialaiste tehtävii Jari Lappalaie ja Ae-Maria Ervall-Hytöe 0 Johdato Epäyhtälöitä reaaliluvuille Cauchy epäyhtälö Kaikille reaaliluvuille a, a,, a ja b, b,, b pätee Cauchy

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

****************************************************************** ****************************************************************** 7 Esim.

****************************************************************** ****************************************************************** 7 Esim. 8.3. Kombiaatiot MÄÄRITELMÄ 6 Merkitä k, joka luetaa yli k:, tarkoittaa lause- ketta k = k! ( k)! 6 3 2 1 6 Esim. 1 3 3! = = = = 3! ( 3)! 3 2 1 3 2 1 3 2 1 Laskimesta löydät äppäime, jolla kertomia voi

Lisätiedot

LIITTEET Liite A Stirlingin kaavan tarkkuudesta...2. Liite B Lagrangen kertoimet...3

LIITTEET Liite A Stirlingin kaavan tarkkuudesta...2. Liite B Lagrangen kertoimet...3 LIITTEET... 2 Liite A Stirligi kaava tarkkuudesta...2 Liite B Lagrage kertoimet... 2 Liitteet Liitteet Liite A Stirligi kaava tarkkuudesta Luoollista logaritmia suureesta! approksimoidaa usei Stirligi

Lisätiedot

2 avulla. Derivaatta on nolla, kun. g( 3) = ( 3) 2 ( 3) 5 ( 3) + 6 ( 3) = 72 > 0. x =

2 avulla. Derivaatta on nolla, kun. g( 3) = ( 3) 2 ( 3) 5 ( 3) + 6 ( 3) = 72 > 0. x = TAMMI PYRAMIDI NUMEERISIA JA ALGEBRALLISIA MENETELMIÄ PARITTOMAT RATKAISUT 7 Tiedosto vai hekilökohtaisee käyttöö. Kaikelaie sisällö kopioiti kielletty. a) g( ) = 5 + 6 Koska g o eljäe astee polyomi, ii

Lisätiedot

Ryhmän osajoukon generoima aliryhmä ja vapaat ryhmät

Ryhmän osajoukon generoima aliryhmä ja vapaat ryhmät Ryhmä osajouko geeroima aliryhmä ja vapaat ryhmät LuK-tutkielma Joose Heioe Matemaattiste tieteide tutkito-ohjelma Oulu yliopisto Kevät 2017 Sisältö Johdato 2 1 Ryhmät ja aliryhmät 2 1.1 Ryhmä.................................

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

Sormenjälkimenetelmät

Sormenjälkimenetelmät Sormejälkimeetelmät Matti Risteli mristeli@iksula.hut.fi Semiaariesitelmä 23.4.2008 T-106.5800 Satuaisalgoritmit Tietotekiika laitos Tekillie korkeakoulu Tiivistelmä Sormejälkimeetelmät ovat satuaisuutta

Lisätiedot

Algoritmit 1. Luento 3 Ti Timo Männikkö

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

Lisätiedot

Tehtävä 1. Voidaanko seuraavat luvut esittää kahden neliön summina? Jos voidaan, niin kuinka monella eri tavalla? (i) n = 145 (ii) n = 770.

Tehtävä 1. Voidaanko seuraavat luvut esittää kahden neliön summina? Jos voidaan, niin kuinka monella eri tavalla? (i) n = 145 (ii) n = 770. JOHDATUS LUKUTEORIAAN (syksy 07) HARJOITUS 0, MALLIRATKAISUT Tehtävä. Voidaako seuraavat luvut esittää kahde eliö summia? Jos voidaa, ii kuika moella eri tavalla? (i) = 45 (ii) = 770. Ratkaisu. (i) Jaetaa

Lisätiedot

Äärettämän sarjan (tai vain sarjan) sanotaan suppenevan eli konvergoivan, jos raja-arvo lims

Äärettämän sarjan (tai vain sarjan) sanotaan suppenevan eli konvergoivan, jos raja-arvo lims 75 4 POTENSSISARJOJA 4.1 ÄÄRETTÖMÄT SARJAT Lukujoo { a k } summaa S a a a a a k 0 1 k k0 saotaa äärettömäksi sarjaksi. Summa o s. osasumma. S a a a a a k 0 1 k0 Äärettämä sarja (tai vai sarja) saotaa suppeeva

Lisätiedot

Otantajakauma. Otantajakauman käyttö päättelyssä. Otantajakauman käyttö päättelyssä

Otantajakauma. Otantajakauman käyttö päättelyssä. Otantajakauman käyttö päättelyssä Otatajakauma kuvaa tarkasteltava parametri jakauma eri otoksista laskettua parametria o joki yleesä tuusluku, esim. keskiarvo, suhteellie osuus, riskisuhde, korrelaatiokerroi, regressiokerroi, je. parametria

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

Algebra I Matematiikan ja tilastotieteen laitos Ratkaisuehdotuksia harjoituksiin 5 (6 sivua)

Algebra I Matematiikan ja tilastotieteen laitos Ratkaisuehdotuksia harjoituksiin 5 (6 sivua) Algebra I Matematiika ja tilastotietee laitos Ratkaisuehdotuksia harjoituksii 5 (6 sivua) 14.2. 17.2.2011 1. Määritellää kuvaus f : S 3 S 3, f(α) = (123) α. Osoita, että f o bijektio. Mikä o se kääteiskuvaukse

Lisätiedot

Noora Nieminen. Hölderin epäyhtälö

Noora Nieminen. Hölderin epäyhtälö Noora Niemie Hölderi epäyhtälö Matematiika aie Turu yliopisto 4. huhtikuuta 2008 Sisältö 1 Johdato 1 2 Cauchy-Schwarzi epäyhtälö 2 2.1 Cauchy-Schwarzi epäyhtälö todistus............. 2 2.2 Aritmeettis-geometrise

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

Solmu 3/2010 1. toteutuu kaikilla u,v I ja λ ]0,1[. Se on aidosti konveksi, jos. f ( λu+(1 λ)v ) < λf(u)+(1 λ)f(v) (2)

Solmu 3/2010 1. toteutuu kaikilla u,v I ja λ ]0,1[. Se on aidosti konveksi, jos. f ( λu+(1 λ)v ) < λf(u)+(1 λ)f(v) (2) Solmu 3/200 Epäyhtälöistä, osa 2 Markku Halmetoja Mätä lukio Välillä I määriteltyä fuktiota saotaa koveksiksi, jos se kuvaaja o alaspäi kupera, eli jos kuvaaja mitkä tahasa kaksi pistettä yhdistävä jaa

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

Algoritmit 2. Luento 8 To Timo Männikkö

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

Lisätiedot

5. Lineaarisen optimoinnin perusprobleemat

5. Lineaarisen optimoinnin perusprobleemat 2 5. Lieaarise optimoii perusprobleemat Optimoitiprobleema o lieaarise optimoii tehtävä, jos kohdefuktio o lieaarie fuktio ja rajoitusehdot ovat lieaarisia yhtälöitä tai lieaarisia epäyhtälöitä. Yleisessä

Lisätiedot

Otantajakauman käyttö päättelyssä

Otantajakauman käyttö päättelyssä Keskiarvo otatajakauma Toisistaa tietämättä kaksi tutkijaa tutkii samaa ilmiötä, jossa perusjoukko koostuu kuudesta tutkittavasta ja tarkoituksea o laskea keskiarvo A: Kokoaistutkimus B: Otatatutkimus

Lisätiedot

Analyysi A. Harjoitustehtäviä lukuun 1 / kevät 2018

Analyysi A. Harjoitustehtäviä lukuun 1 / kevät 2018 Aalyysi A Harjoitustehtäviä lukuu / kevät 208 Ellei toisi maiita, tehtävissä esiityvät muuttujat ja vakiot ovat mielivaltaisia reaalilukuja.. Aa joki ylä- ja alaraja joukoille { x R x 2 + x 6 ja B = {

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

1. (Jatkoa Harjoitus 5A tehtävään 4). Monisteen esimerkin mukaan momenttimenetelmän. n ne(y i Y (n) ) = 2E(Y 1 Y (n) ).

1. (Jatkoa Harjoitus 5A tehtävään 4). Monisteen esimerkin mukaan momenttimenetelmän. n ne(y i Y (n) ) = 2E(Y 1 Y (n) ). HY / Matematiika ja tilastotietee laitos Tilastollie päättely II, kevät 018 Harjoitus 5B Ratkaisuehdotuksia Tehtäväsarja I 1. (Jatkoa Harjoitus 5A tehtävää ). Moistee esimerki 3.3.3. mukaa momettimeetelmä

Lisätiedot

3 x < < 3 x < < x < < x < 9 2.

3 x < < 3 x < < x < < x < 9 2. Matematiika johdatokurssi Kertaustehtävie ratkaisuja 1. Ratkaise epäyhtälöt: a) 3 x < 3, b) 5x + 1. Ratkaisu. a) Ratkaistaa epäyhtälö poistamalla esi itseisarvot: 3 x < 3 3 < 3 x < 3 9 < x < 3 3 < x

Lisätiedot

3 Lukujonot matemaattisena mallina

3 Lukujonot matemaattisena mallina 3 Lukujoot matemaattisea mallia 3. Aritmeettie ja geometrie joo 64. a) Lukujoo o aritmeettie joo, joka yleie jäse o a 3 ( ) 4 34 4 4 b) Lukujoo o geometrie joo, joka yleie jäse o c) Lukujoo o geometrie

Lisätiedot

HY, MTL / Matemaattisten tieteiden kandiohjelma Todennäköisyyslaskenta IIb, syksy 2018 Harjoitus 3 Ratkaisuehdotuksia.

HY, MTL / Matemaattisten tieteiden kandiohjelma Todennäköisyyslaskenta IIb, syksy 2018 Harjoitus 3 Ratkaisuehdotuksia. HY, MTL / Matemaattiste tieteide kadiohjelma Todeäköisyyslasketa IIb, syksy 08 Harjoitus 3 Ratkaisuehdotuksia Tehtäväsarja I Olkoot X ja X riippumattomia satuaismuuttujia, joille ja olkoo X EX, EX, var

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

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

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

Tunnuslukuja 27 III TUNNUSLUKUJA

Tunnuslukuja 27 III TUNNUSLUKUJA Tuuslukuja 27 III TUNNUSLUKUJA Tuuslukuja 28 Tuuslukuja käytetää, ku tilastoaieistoa havaiollistetaa tiivistetysti yksittäisillä luvuilla. Tuusluvut lasketaa muuttujie arvoje perusteella ja e kuvaavat

Lisätiedot

Eräs matematiikassa paljon hyödynnetty summa on ns. luonnollisten lukujen neliöiden summa n.

Eräs matematiikassa paljon hyödynnetty summa on ns. luonnollisten lukujen neliöiden summa n. POHDIN projekti Neliöide summa Lukujoo : esimmäise jäsee summa kirjoitetaa tavallisesti muotoo S ai i 1. Aritmeettisesta lukujoosta ja geometrisesta lukujoosta muodostetut summat voidaa johtaa varsi helposti.

Lisätiedot

811312A Tietorakenteet ja algoritmit, 2014-2015, Harjoitus 7, ratkaisu

811312A Tietorakenteet ja algoritmit, 2014-2015, Harjoitus 7, ratkaisu 832A Tietorakenteet ja algoritmit, 204-205, Harjoitus 7, ratkaisu Hajota ja hallitse-menetelmä: Tehtävä 7.. Muodosta hajota ja hallitse-menetelmää käyttäen algoritmi TULOSTA_PUU_LASKEVA, joka tulostaa

Lisätiedot

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

2.3.1. Aritmeettinen jono

2.3.1. Aritmeettinen jono .3.1. Aritmeettie joo -joo, jossa seuraava termi saadaa edellisestä lisäämällä sama luku a, a + d, a+d, a +3d, Aritmeettisessa joossa kahde peräkkäise termi erotus o aia vakio: Siis a +1 a d (vakio Joo

Lisätiedot

TILASTOT: johdantoa ja käsitteitä

TILASTOT: johdantoa ja käsitteitä TILASTOT: johdatoa ja käsitteitä TOD.NÄK JA TILASTOT, MAA10 Tilastotietee tehtävää o esittää ja tulkita tutkimuskohteesee liittyvää havaitoaieistoa eli tilastoaieistoa. Tutkitaa valittua joukkoa ja se

Lisätiedot

S Laskennallinen systeemibiologia

S Laskennallinen systeemibiologia S-4250 Laskeallie systeemibiologia Harjoitus Mittaustuloksea o saatu havaitoparia (x, y ),, (x, y ) Muuttuja y käyttäytymistä voidaa selittää muuttuja x avulla esimerkiksi yksikertaise lieaarise riippuvuude

Lisätiedot

Algoritmit 1. Luento 12 Ti Timo Männikkö

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

Harjoitustehtävien ratkaisuja

Harjoitustehtävien ratkaisuja 3. Mallitamie lukujooje avulla Lukujoo määritelmä harjoituksia Harjoitustehtävie ratkaisuja 3. Laske lukujoo viisi esimmäistä jäsetä, ku a) a 6 ja b) a 6 ja 3 8 c) a ja 3 a) 6,, 8, 4, 30. b) 8,, 6, 0,

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

Algoritmit 1. Luento 12 Ke Timo Männikkö

Algoritmit 1. Luento 12 Ke Timo Männikkö Algoritmit 1 Luento 12 Ke 15.2.2017 Timo Männikkö Luento 12 Pikalajittelu Pikalajittelun vaativuus Osittamisen tasapainoisuus Lajittelumenetelmien vaativuus Laskentalajittelu Lokerolajittelu Kantalukulajittelu

Lisätiedot

Lasketaan esimerkkinä seuraava tehtävä. Monisteen sivulla 14 on vastaavanlainen. x 1

Lasketaan esimerkkinä seuraava tehtävä. Monisteen sivulla 14 on vastaavanlainen. x 1 Kertausta Luku o viimeistä pkälää (iduktio) lukuu ottamatta kertausta koulukurssi asioista (tai asioista joide pitäisi kuulua koulukurssii) Tämä luku kädää siksi lueoilla läpi opeasti Jos asiat eivät ole

Lisätiedot

1. osa, ks. Solmu 2/ Kahden positiivisen luvun harmoninen, geometrinen, aritmeettinen ja + 1 u v 2 1

1. osa, ks. Solmu 2/ Kahden positiivisen luvun harmoninen, geometrinen, aritmeettinen ja + 1 u v 2 1 Epäyhtälötehtävie ratkaisuja. osa, ks. Solmu 2/200. Kahde positiivise luvu harmoie, geometrie, aritmeettie ja kotraharmoie keskiarvo määritellää yhtälöillä H = 2 +, G = uv, A = u + v 2 u v ja C = u2 +

Lisätiedot

10 Kertolaskusääntö. Kahta tapahtumaa tai satunnaisilmiötä sanotaan riippumattomiksi, jos toisen tulos ei millään tavalla vaikuta toiseen.

10 Kertolaskusääntö. Kahta tapahtumaa tai satunnaisilmiötä sanotaan riippumattomiksi, jos toisen tulos ei millään tavalla vaikuta toiseen. 10 Kertolaskusäätö Kahta tapahtumaa tai satuaisilmiötä saotaa riippumattomiksi, jos toise tulos ei millää tavalla vaikuta toisee. Esim. 1 A = (Heitetää oppaa kerra) ja B = (vedetää yksi kortti pakasta).

Lisätiedot

3.2 Polynomifunktion kulku. Lokaaliset ääriarvot

3.2 Polynomifunktion kulku. Lokaaliset ääriarvot 3. Polyomifuktio kulku. Lokaaliset ääriarvot Tähäastiste opitoje perusteella osataa piirtää esiasteise polyomifuktio kuvaaja, suora, ku se yhtälö o aettu. Osataa myös pääpiirtei hahmotella toise astee

Lisätiedot

2 u = 0. j=1. x 2 j=1. Siis funktio v saavuttaa suurimman arvonsa jossakin alueen Ω pisteessä x. Pisteessä x = x on 2 v. (x ) 0.

2 u = 0. j=1. x 2 j=1. Siis funktio v saavuttaa suurimman arvonsa jossakin alueen Ω pisteessä x. Pisteessä x = x on 2 v. (x ) 0. 0. Maksimiperiaate Laplace-yhtälölle 0.. Maksimiperiaate. Alueessa Ω R määritelty kaksi kertaa erivoituva fuktio u o harmoie, jos u = j= = 0. 2 u x 2 j Lause 0.. Olkoot Ω R rajoitettu alue ja u C(Ω) C

Lisätiedot

Tilastollinen todennäköisyys

Tilastollinen todennäköisyys Tilastollie todeäköisyys TOD.NÄK JA TILASTOT, MAA10 Klassisessa todeäköisyydessä oli ehdot: äärellisyys ja symmetrisyys. Tämä tilae o usei mahdoto ts. alkeistapauksia o usei ääretö määrä tai e eivät ole

Lisätiedot

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista 811312A Tietorakenteet ja algoritmit 2016-2017 III Lajittelualgoritmeista Sisältö 1. Johdanto 2. Pikalajittelu 3. Kekolajittelu 4. Lajittelualgoritmien suorituskyvyn rajoista 811312A TRA, Lajittelualgoritmeista

Lisätiedot

MATEMATIIKAN JA TILASTOTIETEEN LAITOS

MATEMATIIKAN JA TILASTOTIETEEN LAITOS f ( ) JYVÄSKYLÄN YLIOPISTO Harjoituste 3 ratkaisut MATEMATIIKAN JA TILASTOTIETEEN LAITOS Topologiset vektoriavaruudet 3.1. Jokaie kompakti joukko K R määrää fuktioavaruudessa E = C(R ) = {f : R R f o jatkuva}

Lisätiedot

= true C = true) θ i2. = true C = false) Näiden arvot löydetään kuten edellä Kun verkko on opetettu, niin havainto [x 1

= true C = true) θ i2. = true C = false) Näiden arvot löydetään kuten edellä Kun verkko on opetettu, niin havainto [x 1 35 Naiivi Bayes Luokkamuuttua C o Bayes-verko uuri a attribuutit X i ovat se lehtiä Naiivi oletus o, että attribuutit ovat ehdollisesti riippumattomia toisistaa aettua luokka Ku käytössä o Boole muuttuat,

Lisätiedot

3 x < < 3 x < < x < < x < 9 2.

3 x < < 3 x < < x < < x < 9 2. Matematiika johdatokurssi Kertaustehtävie ratkaisuja. Ratkaise epäyhtälöt: a) 3 x < 3, b) 5x +. Ratkaisu. a) Ratkaistaa epäyhtälö poistamalla esi itseisarvot: 3 x < 3 3 < 3 x < 3 9 < x < 3 3 < x < 9. Itse

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

EX1 EX 2 EX =

EX1 EX 2 EX = HY, MTL / Matemaattiste tieteide kadiohjelma Todeäköisyyslasketa IIb, syksy Harjoitus Ratkaisuehdotuksia Tehtäväsarja I. Olkoot X ja X riippumattomia satuaismuuttujia, joille ja olkoo X EX, EX, var X,

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

SMG-4200 Sähkömagneettisten järjestelmien lämmönsiirto Ehdotukset harjoituksen 6 ratkaisuiksi

SMG-4200 Sähkömagneettisten järjestelmien lämmönsiirto Ehdotukset harjoituksen 6 ratkaisuiksi SMG-400 Sähkömageettiste järjestelmie lämmösiirto Ehdotukset harjoitukse 6 ratkaisuiksi Tarkastellaa suljetu järjestelmä tehotasaaioa joka o P + P P = P i g out st Oletetaa että verkotetussa alueessa jossa

Lisätiedot

Ruletti ja Martingaalistrategia

Ruletti ja Martingaalistrategia POHDIN projekti Ruletti ja Martigaalistrategia Ruletti o uhkapeli, jossa pelaaja pyrkii veikkaamaa kuula pysähtymiskohda pyörivältä kehältä. Euroopassa käytettävässä ruletissa o käytössä 37 umeroa (0-36)

Lisätiedot

Algoritmit 1. Luento 1 Ti Timo Männikkö

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

Lisätiedot

Pseudoalkuluvuista ja alkulukutestauksesta

Pseudoalkuluvuista ja alkulukutestauksesta TAMPEREEN YLIOPISTO Pro gradu -tutkielma Mia Salmi Pseudoalkuluvuista ja alkulukutestauksesta Luootieteide tiedekuta Matematiikka Kesäkuu 2017 Tamperee yliopisto Luootieteide tiedekuta SALMI, MINNA: Pseudoalkuluvuista

Lisätiedot

811120P Diskreetit rakenteet

811120P 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ätiedot

Luento 7 Luotettavuus Koherentit järjestelmät

Luento 7 Luotettavuus Koherentit järjestelmät Lueto 7 Luotettavuus Koheretit järjestelmät Ja-Erik Holmberg Systeemiaalyysi laboratorio Aalto-yliopisto perustieteide korkeakoulu PL 00, 00076 Aalto ja-erik.holmberg@riskpilot.fi Määritelmä Tarkasteltava

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

Luento 6 Luotettavuus Koherentit järjestelmät

Luento 6 Luotettavuus Koherentit järjestelmät Lueto 6 Luotettavuus Koheretit järjestelmät Ja-Erik Holmberg Systeemiaalyysi laboratorio PL 00, 00076 Aalto ja-erik.holmberg@riskpilot.fi ja-erik.holmberg@aalto.fi Määritelmä Tarkasteltava yksikö luotettavuus

Lisätiedot

2.5. Eksponenttifunktio ja eksponenttiyhtälöt

2.5. Eksponenttifunktio ja eksponenttiyhtälöt Eksoettifuktio ja -htälöt Eksoettifuktio ja eksoettihtälöt Ku otessi käsitettä laajeetaa sallimalla eksoetille muitaki arvoja kui kokoaislukuja, tämä taahtuu ii, että ii saotut otessikaavat ovat voimassa,

Lisätiedot

Tekijä Pitkä Matematiikka 11 ratkaisut luku 3

Tekijä Pitkä Matematiikka 11 ratkaisut luku 3 83 Tekijä Pitkä matematiikka 7..07 a) Osoitetaa sijoittamalla, että yhtälö toteutuu, ku x =. + 6= 0 6 6= 0 0= 0 tosi Luku x = toteuttaa yhtälö x + x 6= 0. b) Osoitetaa ratkaisemalla yhtälö. x + x 6= 0

Lisätiedot

Algoritmit 2. Luento 14 Ke Timo Männikkö

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

Lisätiedot

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

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

Lisätiedot

Algoritmit 1. Luento 11 Ti Timo Männikkö

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

Lisätiedot

9 Lukumäärien laskemisesta

9 Lukumäärien laskemisesta 9 Luumäärie lasemisesta 9 Biomiertoimet ja osajouoje luumäärä Määritelmä 9 Oletetaa, että, N Biomierroi ilmaisee, uia mota -alioista osajouoa o sellaisella jouolla, jossa o aliota Meritä luetaa yli Lasimesta

Lisätiedot

Kombinatoriikka. Iiro Honkala 2015

Kombinatoriikka. Iiro Honkala 2015 Kombiatoriikka Iiro Hokala 2015 Sisällysluettelo 1. Haoi torit 1 2. Lokeroperiaate 3 3. Tuloperiaate 3 4. Permutaatioista ja kombiaatioista 4 5. Toistokombiaatioista 5 6. Biomikertoimista 5 7. Multiomikertoimista

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

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

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

Lisätiedot

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

3.9. Mallintaminen lukujonojen avulla harjoituksia

3.9. Mallintaminen lukujonojen avulla harjoituksia 3.9 Mallitamie lukujooje avulla harjoituksia 3.9. Mallitamie lukujooje avulla harjoituksia Lukujoo määritelmä harjoituksia 3. Laske lukujoo viisi esimmäistä jäsetä, ku a) a 6 ja b) a 6 ja 3 8 c) a ja 3

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

Mat Lineaarinen ohjelmointi

Mat Lineaarinen ohjelmointi Mat-2.340 Lieaarie ohjelmoiti 20.9.2007 Lueto 2 Lieaarialgebraa ja geometriaa (kirja.5, 2.) S ysteemiaalyysi Tekillie korkeakoulu Lieaarie ohjelmoiti - Syksy 2007 / Lieaarialgebraa Notaatiota Kääteismatriisi

Lisätiedot

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 12 (opetusmoniste, kappaleet )

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 12 (opetusmoniste, kappaleet ) T-79.144 Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 12 (opetusmoniste, kappaleet 9.1 9.5) 30.11. 3.12.2004 1. Osoita lauselogiikan avulla oheisten ehtolausekkeiden ekvivalenssi. (a)!(a

Lisätiedot

Algoritmit 1. Luento 10 Ke Timo Männikkö

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

Lisätiedot