Algoritminen matematiikka

Koko: px
Aloita esitys sivulta:

Download "Algoritminen matematiikka"

Transkriptio

1 Algoritminen matematiikka Luentomoniste Turun yliopisto Matematiikan laitos Turku 2011

2 i Alkusanat Kurssin tarkoituksena on algoritmisen ajattelun omaksuminen ja kehittäminen. Tavanomaisesti matematiikassa kysytään Onko jokin väittämä tosi? tai Onko jokin olemassa? mutta tällä kurssilla tarkastellaan lähinnä kysymystä Miten tämä jokin voidaan laskea ja kuinka nopeasti?. Tietotekniikan myötä algoritmisesta matematiikasta on tullut hyvin tärkeä osa matematiikkaa. Laskentaa, ja osin jopa todistamista, suoritetaan tietokoneilla. Monilla soveltavilla matematiikan aloilla, kuten esimerkiksi kryptograssa, algoritminen ajattelu on välttämätöntä. Kurssilla keskitytään tavanomaisten aritmeettisten ja lukuteoreettisten ongelmien laskennallisen kompleksisuuden arviointiin, ja erityisesti siihen miten nämä probleemat tulee nähdä algoritmisesta näkökulmasta ts. mitä voidaan laskea nopeasti, siis käytännössä, ja mitä ei voida (nykytiedon perusteella). Kurssin esitiedoiksi tarvitaan Algebran peruskurssi I:n tai Kryptograan matemaattiset perusteet kurssien antamia lukuteorian perustietoja. Tämä moniste perustuu suurelta osin Turun yliopiston matematiikan laitoksen luentomonisteeseen vuodelta Tämän lisäksi lähteenä on käytetty seuraavia lähteitä: 1. G. Brassard, P. Bratley: Fundamentals of Algorithmics, Prentice Hall, T. Cormen, C. Leiserson, R. Rivest, C. Stein: Introduction to Algorithms, MIT Press, 2001 (2nd ed.). 3. J. von zur Gathen, J. Gerhard: Modern Computer Algebra, Cambridge University Press, 2003 (2nd ed.).

3 1 1 Johdanto 1.1 Algoritmien tutkimus Algoritmi on konstruktiivisen ja diskreetin matematiikan keskeisimpiä käsitteitä. Implisiittisesti algoritmit ovat olleet osa matematiikkaa kautta sen koko historian. Vanhin ja ehkä tunnetuin algoritmi Eukleideen algoritmi on yli 2000 vuotta vanha. Sen laskennallisen kompleksisuuden arviointi vuodelta 1845 (Lame) puolestaan on yksi vanhimmista konkreettisista algoritmiteorian tuloksista. Varsinaisesti algoritmien tutkimus käynnistyi 1930luvulla teoreettisena Laskettavuuden teorian (ala I, alla) tutkimuksella. Käytännön läheisempää tutkimus oli 1950luvulla jolloin keskityttiin Algoritmien suunnitteluun ja analysointiin (ala II). Viime aikoina, 1970luvulta lähtien Kompleksisuusteorian tutkimus (ala II) on ollut keskeisessä asemassa. Kompleksisuusteoriassa tutkitaan esimerkiksi, mitkä probleemat ovat käytännössä algoritmisesti ratkaistavissa polynomiajassa toimivalla algoritmilla tai onko probleemalle olemassa nopeaa todennäköisyysalgoritmilla. Yllä mainituista kolmesta algoritmitutkimuksen alasta käytetään yleensä alla esitetyn mukaisia nimityksiä, niinikään alla esitetään alojen tutkimusten tarjoama keskeinen anti. I: Laskettavuuden teoria; Algoritmisesti ratkeamattomat probleemat, Turingin koneet III: Algoritmien suunnittelu ja analysointi; Monet tärkeät nopeat käytännön algoritmit II: Kompleksisuusteoria; Käytännössä mahdottomat probleemat (nykytiedon mukaan); P? = N P -probleema; todennäköisyysalgoritmit Laskettavuuden teoria mullisti matemaattisen ajattelun, kun K. Gödel vuonna 1936 osoitti, että on olemassa algoritmisesti ratkeamattomia probleemoja. Nimittäin vielä vuosisadan vaihteen matemaatikot, kuten Hilbert,

4 1.1 Algoritmien tutkimus 2 ajattelivat, että kaikki mielekkäästi määritellyt probleemat ovat ainakin periaatteessa (vaikkakaan ei välttämättä käytännössä) algoritmisesti ratkaistavissa. Kompleksisuusteoria puolestaan on osoittanut, että monet käytännössä tärkeät probleemat, kuten esimerkiksi lukujärjestyksen laatiminen, ovat käytännössä mahdottomia ratkaista (ts. niiden ratkaiseminen vaatii liikaa resursseja), vaikkakin matemaattisesti niiden ratkaiseminen voi olla triviaalia (esim. käydään läpi kaikki vaihtoehdot). Tässä on syytä korostaa, että käytännössä mahdoton tarkoittaa: käytännössä mahdoton nykytiedon mukaan. Se, ovatko kyseessä olevat probleemat todella käytännössä mahdottomia, on yksi modernin matematiikan suurista avoimista kysymyksistä, ns. P? = N P -probleema. Tämän kurssin tarkoituksena on toimia johdatuksena algoritmiseen ajatteluun. Tähän pyritään tarkastelemalla konkreettisten, lähinnä aritmeettisten probleemojen laskennallista vaikeutta. Tarkasteltaviin ongelmiin pyritään etsimään tehokkaita algoritmeja. Siten yllä olevan luokittelun valossa kurssi kuuluu lähinnä alueelle III. Mainittakoon lopuksi, että termi algoritmi juontaa juurensa persialaisesta matemaatikosta Mohammed al-khowârizmî 800-luvulta. Hän kehitti algoritmiset säännöt lukujen aritmeettisten operaatioiden laskemiseksi: samat, jotka ovat yhä käytössä kouluopetuksessa.

5 3 2 Algoritmien peruskäsitteitä 2.1 Esimerkki Tarkastellaan kahden positiivisen kokonaisluvun tulon laskemista. Aikojen kuluessa on kehitetty useita erilaisia menetelmiä tämän ongelman ratkaisemiseksi. Mielivaltaisen suurten lukujen tulo opitaan laskemaan jo koulun alaluokilla. Klassinen koulualgoritmi palauttaa pidempien lukujen tulon laskemisen 1-numeroisten lukujen tuloihin, jotka puolestaan muistetaan ulkoa opituista kertotauluista. Ns. arabialaisessa kertoalgoritmissa käytetään apuna laatikkoa, jonka sivujen pituudet ovat samat kuin kerrottavien lukujen pituudet. Kerrottavat luvut asetetaan laatikon sivuille, ja laatikkoon kirjataan kaikkien luvuissa esiintyvien numeroiden tulot oheisen kuvan osoittamalla tavalla. Lukujen tulo saadaan puuttuville sivuille laskemalla diagonaalien summat. Kaksi edellä mainittua menetelmää muistuttavat kovasti toisiaan, mutta venäläisessä kertoalgoritmissa asia ratkaistaan toisin. Siinä toista kerrottavista luvuista toistuvasti puolitetaan (pyöristämällä alaspäin) ja toista tuplataan, kunnes puolitettava luku on ykkönen. Lukujen tulo saadaan ynnäämällä ne tuplatut luvut, joita vastaava puolitettu luku on pariton. Mikä yllä esitetyistä menetelmistä on paras? Jotta tähän voitaisiin vastata, tarvitaan jokin hyvyyden mittari. Tällä kurssilla eri laskentamenetelmiä vertaillaan niiden tehokkuuden, siis nopeuden, perusteella. Osoittautuu, että tässä mielessä kaikki edellä esitetyt algoritmit ovat asymptoottisesti yhtä hyviä. a) b) c) Kuva 1: a) Klassinen, b) arabialainen ja c) venäläinen kertolaskualgoritmi. Esitetään vielä yksi kertolaskualgoritmi. Siinä kerrottavien lukujen a ja b pituus n pitää olla jokin kakkosen potenssi: n = 2 m (jos näin ei ole, lukujen eteen voidaan lisätä tarvittava määrä nollia). Olkoon a = a 1 10 n/2 + a 0 ja b = b 1 10 n/2 + b 0, missä 0 a 0, a 1, b 0, b 1 < 10 n/2. Nyt ab = a 1 b 1 10 n + (a 0 b 1 + a 1 b 0 ) 10 n/2 + a 0 b 0,

6 2.2 Algoritmi ja algoritminen probleema 4 joten kahden luvun tulo saadaan laskemalla neljä puolta lyhyempien lukujen tuloa (ja lisäksi muutamia yhteenlaskuja ja kymmenellä kertomisia). Nämä pienemmät tulot voidaan edelleen laskea samalla menetelmällä. Näin saadaan rekursiivinen kertolaskualgoritmi, jossa 2 i -numeroisten lukujen tulo saadaan laskemalla (2 i ) 2 1-numeroisten lukujen tuloa. Osoittautuu, ettei tämäkään rekursiivinen algoritmi ole sen tehokkaampi kuin aiemmin mainitut menetelmät. Mutta kuten myöhemmin nähdään, ideaa voidaan parannella niin, että tulon laskeminen palautuukin kolmen (eikä neljän) puolta lyhyemmän luvun tuloon. Tuloksena on merkittävästi nopeampi algoritmi, etenkin jos tarkasteltavat luvut ovat suuria. 2.2 Algoritmi ja algoritminen probleema Algoritminen probleema koostuu syötteistä I ja kuhunkin syötteeseen liittyvästä (usein yksikäsitteisestä) tulosteesta. Probleema voidaan siis ajatella funktiona I O, missä O on kaikkien mahdollisten tulosteiden joukko. Algoritmi on puolestaan menetelmä, jolla tarkasteltava probleema voidaan mekaanisesti ratkaista. Voidaan siis sanoa, että algoritmi on metodi yllä mainitun funktion I O laskemiseksi. Jos tehtävänä on ratkaista probleema jollakin tietyllä syötteellä, puhutaan probleeman instanssista. Esimerkiksi kahden positiivisen kokonaisluvun kertolasku on algoritminen probleema, ja se voidaan ratkaista millä tahansa alun esimerkissä mainitulla algoritmilla. Ongelman syötteet ovat siis kokonaisluku pareja ja parin (123, 45) tulon laskeminen on yksi tämän probleeman instansseista. Yleensä algoritmilta vaaditaan seuraavia ominaisuuksia. (i) Algoritmin suoritus koostuu joukosta peräkkäin suoritettavia yksinkertaisia operaatioita, ns. alkeisoperaatioita. (ii) Algoritmin ohjeita sovelletaan deterministisesti, ts. algoritmin suoritus etenee samalla syötteellä aina tarkalleen samalla tavalla. (iii) Algoritmin ohjeet ovat universaalisia; ts. algoritmi ratkaisee ongelman kaikilla mahdollisilla syötteillä. (iv) Algoritmin ohjeet ovat terminoivia; ts. kullakin syötteellä tarvitaan vain äärellinen määrä alkeisoperaatioita. Tosin käyttökelpoisia käytännön laskentamenetelmiä voidaan saada, vaikka kohdasta (ii) tingittäisiinkin, esim. myöhemmin käsiteltävät todennäköisyys algoritmit. Algoritmiset probleemat, joiden vastaus on aina joko kyllä tai ei (tai 1/0) ovat algoritmien teorian kannalta erityisen tärkeitä. Tällaisia probleemoja kutsutaan päätäntäongelmiksi tai vaihtoehtoisesti ratkeavuusongelmiksi. Esimerkiksi probleema, jossa kysytään, onko syötteenä saatu luku alkuluku vai ei, on päätäntäongelma.

7 2.3 Syöte ja alkeisoperaatiot Syöte ja alkeisoperaatiot Algoritmien tehokkuutta mitataan sen syötteen s koon, merk. s l, funktiona. Syötteen koko voidaan tapauksesta riippuen määritellä hieman eri tavoin, mutta intuitiivisesti se yleensä ilmoittaa sen, paljonko tilaa (tai tietokoneen muistia) tarvitaan syötteen esittämiseen. Esimerkiksi kokonaislukusyötteen kooksi on luonnollista määritellä luvun pituus. Mutta esimerkiksi n nmatriisin kooksi ajatellaan yleensä n (eikä n 2 ). Saatuaan syötteen s algoritmi suorittaa alkeisoperaatioita niin kauan, kunnes tuloste saadaan. Se, mitä alkeisoperaatioilla tarkoitetaan, vaihtelee tarkasteltavan probleeman mukaan. Esimerkiksi kertoalgoritmeissa 1-numeroisten lukujen tulon (ja summan) laskeminen ajatellaan alkeisoperaatioksi. Joissakin lajittelualgoritmeissa kahden luvun suuruuden vertailu katsotaan alkeisoperaatioksi. Sen sijaan algoritmin ohjauskäskyjä ei ole tapana laskea alkeisoperaatioiksi. Ideana on, että yhden alkeisoperaation suorittaminen onnistuu aina vakioajassa ja että algoritmin suoritusaika on suoraan verrannollinen suoritettujen alkeisoperaatioiden määrään. 2.4 Algoritmin kompleksisuus Tarkasteltava ongelma voidaan (ainakin useimmiten) ratkaista useilla erilaisilla algoritmeilla. Tällöin on luonnollista kysyä: Mikä ongelman ratkaisevisista algoritmeista on paras? Tällä kurssilla algoritmeja vertaillaan lähinnä niiden nopeuden perusteella. Nopeus puolestaan mitataan laskemalla, kuinka monta alkeisoperaatiota algoritmin suorittaminen vaatii. Olkoon T A,s algoritmin A suorittamien alkeioperaatioiden määrä syötteellä s. Syötteen s koko s on luonnollinen luku, ja algoritmin A kompleksisuus määritellään funktiona T A : N N, T A (n) = max s l =n {T A,s}. T A (n) siis kertoo, kuinka nopeasti tuloste varmasti saadaan kaikilla n-kokoisilla syötteillä. Toisinaan tätä kutsutaan pahimman tapauksen kompleksisuudeksi. Usein parempi mittari algoritmin tehokkuudelle olisi keskimääräinen kompleksisuus. Se on kuitenkin lähes aina paljon vaikeampi laskea. Yllä tarkasteltiin algoritmissa tarvittavien laskuaskelien määrää, siis aikakompleksisuutta. Yhtä hyvin voitaisiin tarkastella vaikka algoritmin vaatimien muistipaikkojen määrää, eli tilakompleksisuutta. Tällä kurssilla kompleksisuudella tarkoitetaan aina aikakompleksisuutta.

8 2.4 Algoritmin kompleksisuus 6 Yllä kompleksisuuskäsitteet määriteltiin algoritmeille. Käsitteet voidaan laajentaa koskemaan myös tarkasteltavaa algoritmista probleemaa. Probleeman AP kompleksisuus on sen parhaan ratkaisualgoritmin kompleksisuus. Tässä paras tarkoittaa asymptoottisesti nopeiten toimivaa algoritmia. Algoritmin kompleksisuuden analysointi tarkoittaa sen kompleksisuuden (tai oikeastaan sen kertaluvun, suuruusluokan) määräämistä. Tämä on useimmiten mahdollista suorittaa tekemällä esim. sopivia arviointeja. Sen sijaan algoritmisen probleeman AP kompleksisuuden (kertaluvun) määrääminen on usein ylivoimaisen vaikeaa. Mikä tahansa AP:n ratkaiseva algoritmi antaa ylärajan AP:n kompleksisuudelle, mutta hyvien alarajojen määrääminen on yleisesti algoritmien teorian vaikeimpia asioita. Pitäisi nimittäin osoittaa, että mikään algoritmi ei ratkaise AP:ta annettua funktiota nopeammin. Esimerkki 2.1. Tämän luvun alussa tarkasteltiin kokonaislukujen kertolaskun laskevia algoritmeja. Voidaan osoittaa, että esitetyt algoritmit toimivat ajassa O(n 2 ) (ordo-merkintä), mikä tarkoittaa, että on olemassa positiivinen luku α ja luonnollinen luku n 0 joille tiedetään, että kaikille n n 0 T A (n) αn 2. Tästä seuraa, että algoritmisen probleeman kompleksisuus on myöso(n 2 ). Toisaalta, myöhemmin tällä kurssilla osoittautuu, että kertolasku-probleeman algoritminen kompleksisuus on O(n(log n) 2+ε ), koska on olemassa algoritmi, joka toimii ajassa O(n(log n) 2+ε ). Todettakoon vielä, että paras tunnettu kertolaskualgoritmi toimii ajassa O(n log n log log n) ajassa (Schönhage and Strassen 1971, Knuth 1998). Algoritmit ja algoritmiset probleemat jaetaan tavallisesti kahteen luokkaan, missä rajan määrää polynomiaikaisuus. Algoritmia A kutsutaan toteutettavaksi (feasible), jos on olemassa sellainen polynomi P (n), että T A (n) P (n) jostakin rajasta n n 0 lähtien. Muussa tapauksessa algoritmia sanotaan eitoteutettavaksi (infeasible). Algoritmista probleemaa AP kutsutaan ratkaistavaksi (tractable), jos AP:lle tunnetaan toteuttava ratkaisu; muuten AP:ta sanotaan eiratkaistavaksi (intractable). Usein ajatellaan, että ratkaistavat probleemat ovat helppoja ja siten käytännössä ratkeavia. Kirjaimellisesti tämä ei tietysti pidä paikkaansa, mutta luokittelu on teoreettisesti perusteltua, ja itse asiassa yleensä polynomiaikaiset algoritmit toimivat alhaista astetta olevassa polynomiajassa. Toisaalta eiratkaistavien probleemien vähänkin suuremmat instanssit ovat varmasti käytännössä mahdottomia ratkaista ainakin tällä hetkellä.

9 2.5 Funktion kertaluku Funktion kertaluku Esimerkki 2.2. Alla on taulukoitu algoritmin vaatima aika, kun oletetaan yhden alkeisoperaation suorittamisen kestävän yhden nanosekunnin (10 9 s) verran. n = 10 n = 20 n = 30 n = 50 n = 100 n = 1000 n 0,01 µs 0,02 µs 0,03 µs 0,05 µs 0,10 µs 1,00 µs n log 2 n 0,03 µs 0,09 µs 0,15 µs 0,28 µs 0,66 µs 9,97 µs n 2 0,10 µs 0,40 µs 0,90 µs 2,50 µs 10 µs 1000 µs n 5 0,10 ms 3,20 ms 24,3 ms 0,31 s 10,0 s 11,6 vrk 2 n 1,0 µs 1,0 ms 1,07 s 13,0 vrk 3000 mki mki 3 n 59,0 µs 3,5 s 2,4 vrk v mki... Nähdään, että jos kompleksisuus on eksponentiaalinen (kaksi viimeistä riviä), kasvaa algoritmin suoritusaika vähänkin isommilla instasseilla käsittämättömän suureksi (yksikkö mki tarkoittaa maailmankaikkeuden ikää). Jos kompleksisuus on polynomiaalinen, ei vastaavaa ilmiötä esiinny. Tarkastellaan vielä teknologian kehittymisen tuomia mahdollisuuksia. Seuraavasta taulukosta nähdään tietokoneiden nopeutumisen vaikutukset suurimpaan ongelmakokoon, joka ratkeaa jossakin annetussa ajassa (esim yhdessä tunnissa). kompl. nykykoneet 100 nykykone 10 6 nykykone n N N N 1 n log 2 n N 2 = N N 2 n 2 N 3 10 N N 3 n 5 N 4 2,5 N 4 16 N 4 2 n N 5 N 5 + 6,6 N ,9 3 n N 6 N 6 + 4,2 N ,6 Kahden viimeisen sarakkeen luvut kertovat sen ongelmakoon, joka ratkeaa samassa ajassa, kun käytössä on sata/miljoona kertaa tehokkaampi tietokone. Taas ero polynomiaikaisten ja eksponentiaalisten algoritmien välillä on räikeä. Eri algoritmeja verratessa olennaisinta on, kuinka kompleksisuus muuttuu, kun ongelmakoko kasvaa yhä suuremmaksi. Sitä varten otetaan käyttöön seuraavat merkinnät. Olkoot f, g : N R +. Määritellään f(n) = O(g(n)), joss α > 0, n 0 n n 0 : f(n) α g(n), f(n) = Ω(g(n)), joss β > 0, n 0 n n 0 : f(n) β g(n), f(n) = Θ(g(n)), joss α, β > 0, n 0 n n 0 : β g(n) f(n) α g(n), f(n) = o(g(n)), joss lim n f(n) g(n) = 0, f(n) g(n), joss lim n f(n) g(n) = 1.

10 2.5 Funktion kertaluku 8 Tarkkaan ottaen esimerkiksi O ( g(n) ) on luokka funktioita, ja merkintä f(n) = O ( g(n) ) Tarkoittaa, että f(n) kuuluu luokkaan O ( g(n) ). Esimerkki 2.3. Seuraavat väitteet ovat suhteellisen helppoja todistaa: a 0 + a 1 n a k n k = Θ(n k ), missä a k > 0 n a = o(n b ), kun a, b R ja 0 < a < b log c n = Θ(log d n) (c, d > 1) log c n = o(n a ) (c > 1, a > 0) Tässä monisteessa sovitaan, että jos logaritmien kantalukua ei mainita, tarkoitetaan aina 2-kantaista logaritmia: log n = log 2 n. Yllä olevasta seuraa mm., että log c n = Θ(log n) kaikilla kantaluvuilla c. Esimerkki 2.4. Esitetään tyypillinen menetelmä summalausekkeen asymptoottisen kertaluvun määräämiseksi. Osoitetaan, että S(n) = n i k = Θ(n k+1 ). i=1 Tämä voidaan todistaa näyttämällä, että S(n) = O(n k+1 ) ja että S(n) = Ω(n k+1 ). Koska i k < n k, kun 1 i n, niin S(n) n n k = n n k = n k+1. i=1 Siis S(n) = O(n k+1 ). Ω-suuntaan todistus on lähes yhtä helppo. Nyt arvioimalla 0 i k kun i n 2 ja ( n 2 )k i k kun i n 2 saadaan n S(n) ( n 2 )k n 2 (n 2 )k = 1 2 k+1 nk+1. i= n 2 Näin ollen myös S(n) = Ω(n k+1 ).

11 2.5 Funktion kertaluku 9 Jos F on luokka funktioita N R +, niin luokka O(F) on luonnollista määritellä ehdosta O(F) = O(f). f F Vastaavasti funktioille määritellyt operaatiot voidaan laajentaa joukoille luonnollisella tavalla; esimerkiksi g + F = {g} + F = {g + f} f F g(f) = g f. ja f F Tällöin yhdistämällä asymptoottisia luokkia O, Ω ja Θ sekä funktioiden operaatioita, kuten + ja voidaan määritellä uusia funktioluokkia. Esimerkki 2.5. Voidaan osoittaa, että ( O f(n) + O ( g(n) )) = O ( f(n) + g(n) ) = O ( max{f(n), g(n)} ) ; ( ) n 1 + O(1) = 2 O(n) = O(α n ). Mainittakoon, että niiden päätösongelmien joukkoa, joiden kompleksisuuden ylärajana on luokkaan 2 O(n) kuuluva funktio, merkitään EX P, siis eksponentiaalisessa ajassa ratkeavat ongelmat. Polynomiajassa ratkeavien (kompleksisuuden ylärajana jokin polynomi) päätösongelmien joukkoa merkitään P:llä. Tällä kurssilla luokkia O ( f(n) ) jne. ajatellaan algoritmisina kompleksisuusluokkina, joten f(n) on tavallisesti varsin siististi käyttäytyvä; esimerkiksi muotoa α 1 n k, n log n, log log n, a n, n log n. Tällä kurssilla käsitellään algoritmien kompleksisuuksia, joten yleensä tarkasteltavien funktioiden arvot kasvavat kun syötteen koko kasvaa. Siksi tarkasteltavat funktiot ovat eivähenevä tai ainakin lopulta eivähenevä, siis eivähenevä jostakin n:n arvosta alkaen. Määritelmä 2.1. Olkoon f : N R + lopulta eivähenevä ja b 2 kokonaisluku. Sanotaan, että f on b-sileä, jos f(b n) = O ( f(n) ). Usein algoritmien kompleksisuuden arviointi on helpompaa, jos syötteen pituus on jotakin sopivaa muotoa. Jos esimerkiksi rekursiivinen algoritmi jakaa n-pituisen syötteen aina n 2 - ja n 2 pituisiin osiin, ovat kompleksisuustarkastelut luultavasti helpompia, jos n on jokin kakkosen potenssi. (Silloinhan osat ovat aina yhtä suuret ja myös osien koot ovat kakkosen potensseja) Osoitetaan seuraavaksi, että yleensä voidaan olettaa, että syötteen pituus on sopivaa muotoa. Määritellään ensin ehdolliset kompleksisuusluokat.

12 2.6 Algoritmien kuvauksesta 10 Määritelmä 2.2. Funktio f kuuluu luokkaan O ( g(n) ; P (n) ), jos n 0, α > 0 : ( P (n) on tosi n n 0 ) = f(n) α g(n). Lemma 2.1. Olkoon p 2 kokonaisluku ja g(n) p-sileä sekä f(n) lopulta eivähenevä. Silloin f(n) = O ( g(n) ; n on p:n potenssi ) = f(n) = O ( g(n) ). Todistus. Olkoon n = p m + n, missä 0 n < (p 1)p m. Silloin f(n) a f ( p m + (p 1)p m) = f(p m+1 ) b α 1 g(p m+1 ) c α 1 α 2 g(p m ) d α g(n). Kun oletetaan, että argumentti on riittävän suuri, seuraavat arviot ad siitä, että a) f on lopulta eivähenevä; b) f(n) = O ( g(n) ), kun n on p:n potenssi; c) g on p-sileä; ja d) g on lopulta ei-vähenevä. Yllä olevissa tarkasteluissa, erikoisesti edellisessä lemmassa, O voidaan korvata symbolilla Ω tai Θ. 2.6 Algoritmien kuvauksesta Tässä monisteessa osa algoritmeista kuvataan pelkästään sanallisesti vain oleellisimat seikat mainiten. Joissakin tapauksissa taas annetaan tarkempi kuvaus, joka on helpompi muuntaa vaikka tietokoneohjelmaksi. Koska algoritmin tulee ratkaista ongelma kaiken kokoisilla syötteillä, tarvitaan joitakin lyhennysmerkintöjä. Alla on mainittu käytetyn pseudokoodin yleisimmät käskyt. Toistorakenteet: for i = 1 to n do... repeat... until lopetetaan while jatketaan do... Haaraumat: if... then (... else... ) Aliprosessien kutsut (mukaanlukien rekursiot)

13 2.7 Esimerkkejä 11 Lopetuskäskyt: return (vastaus) quit Käskyjen merkitykset lienevät ilmeisiä. Merkintä x α tarkoittaa, että muuttujan x arvoksi asetetaan α. Lisäksi yleensä ajatellaan, että syötteen pituus, jota merkitään useimmiten parametrillä n, on tiedossa. Esimerkiksi alla on alun esimerkissä mainitun venäläisen kertoalgoritmin kuvaus. Algoritmi 2.1. Venäläinen kertoalgoritmi. syöte: kokonaisluvut a, b > 0 tuloste: tulo ab x 0 while a > 0 do if a on pariton then x x + b a a 2, b 2b return x 2.7 Esimerkkejä Kerrataan vielä määritelmiä ja termejä muutaman esimerkin kautta. Esimerkki 2.6. Tarkastellaan probleemaa Prime(a), joka päättää, onko syötteenä saatava positiivinen kokonaisluku a alkuluku vai ei. Tällä probleemalla on triviaali ratkaisu: for i = 2 to a do testaa jakaako i luvun a Jaollisuustestit voidaan tehdä tavallisella jakoalgoritmilla. Jos luvun a pituus binäärilukuna on n (siis 2 n 1 a < 2 n ), niin tavanomaisen jakoalgoritmin kompleksisuus on O(n 2 ). Testijakojen tekeminen on siis nopeaa. Testejä pitää kuitenkin tehdä O( a) = O(2 n/2 ) kertaa, joten algoritmin kompleksisuus on eksponentiaalinen. Yleisemminkin, jos syötteenä on npituinen kokonaisluku a ja jotain operaatiota täytyy toistaa k a kertaa, on algoritmin kompleksisuus aina eksponentiaalinen: a = 2 n/k. Suurilla n:n arvoilla tällaiset algoritmit ovat k käyttökelvottomia. Mainittakoon, että Primeprobleema on yksi tutkituimpia matemaattisia ongelmia. Sille löydettiin polynomiaikainen algoritmi vasta vuonna Primeprobleemaa käsitellään tarkemmin myöhemmin tällä kurssilla.

14 2.7 Esimerkkejä 12 Esimerkki 2.7. Tarkastellaan probleemaa Fibonacci(n), jossa tehtävänä on laskea Fibonaccin luku F n. Fibonaccin luvuthan määritellään ehdoista F 0 = 0, F 1 = 1,. F n+2 = F n+1 + F n, kun n 0 Esitetään neljä menetelmää probleeman ratkaisemiseksi. A) Lasketaan F n kaavasta F n = a α n + b β n missä α = 1 2 (1+ 5) ja β = 1 2 (1 5) sekä a ja b R ovat vakioita (ja voidaan laskea rekursion alkuarvoista). Kaava voidaan todistaa vaikka induktiolla. B) Lasketaan F n rekursiivisesti algoritmilla Fibo(n): if n = 0 tai n = 1 then return F 0 = 0 tai F 1 = 1 else x Fibo(n 2), y Fibo(n 1) return F n = x + y C) Lasketaan F n seuraavasti: if n = 0 tai n = 1 then return F 0 = 0 tai F 1 = 1 else x 0 ja y 1 for i = 2 to n 1 do s x + y, x y, y s return F n = x + y D) Määritellään E = ( ), lasketaan matriisi En+1 ja tulostetaan sen paikassa (1, 1) oleva alkio. Selvästi algoritmit B ja C toimivat oikein. Algoritmin D:n oikeellisuus seuraa kaavasta E n+1 = F n F n+1, F n+1 F n+2 mikä nähdään oikeaksi induktiolla. Arvioidaan seuraavaksi tarvittavien aritmeettisten operaatioiden määrää yllä olevissa algoritmeissa. Algoritmi A vaatii, ainakin tavanomaisesti toteutettuna, Θ(n) aritmeettista operaatiota reaaliluvuilla. Siis vaikka tulos on kokonaisluku, laskut suoritetaan reaaliluvuilla. Siksi laskun tulos on aina vain likiarvo ja vasta virhetarkastelun jälkeen voidaan olla varmoja tuloksen oikeellisuudesta. Algoritmi ei ole algoritmisesti selkeä.

15 2.7 Esimerkkejä 13 joten Merkitään algoritmin B kompleksisuutta T :llä. Silloin T (0) = T (1) = 0 ja T (n) = T (n 1) + T (n 2) + 1, T (n) F n 1 ( n 2). Näin ollen T (n) = Ω(α n ), missä α = 1 2 ( 5 + 1) > 1, ja algoritmin kompleksisuus on eksponentiaalinen. Algoritmi C puolestaan suorittaa kussakin for silmukassa vain yhden aritmeettisen operaation, joten sen kompleksisuus on Θ(n). On syytä huomata, että vaikka tässä laskettaisiin kaikki toiminnot, kuten esimerkiksi testaus n? = 0, asetukset x y, indeksimuuttujan i kasvattaminen jne., niin kompleksisuus säilyisi luokassa Θ(n). Algoritmissa D ongelma ratkeaa laskemalla matriisin E potensseja. Myöhemmin tullaan näyttämään, että luvun a potenssin a n laskeminen onnistuu Θ( n l ):lla kertolaskulla. Aivan samoin matriisin n:s potenssi voidaan laskea käyttäen Θ( n l ) matriisien kertolaskua. Yksi 2 2matriisien tulo vaatii vakiomäärän (12 kpl) aritmeettisia operaatioita, joten tämän algoritmin kompleksisuus on Θ( n l ) = Θ(log n) aritmeettista operaatiota. Yllä laskettiin eri algoritmien vaatimia aritmeettisia operaatioita n:n funktiona, missä on siis luku n, jota vastaava luku F n pitää laskea. Syötteen koko on siis tässä tapauksessa luvun n pituus, joka on siis log n. Algoritmi D oli niistä (asymptoottisesti) paras, se vaati vain lineaarisen määrän operaatioita syötteen n pituuden log n suhteen. Nämä ovat kuitenkin minkä tahansa pituisten lukujen aritmeettisia operaatioita. Nimittäin, ns. bittioperaatiota, eli 1numeroisten lukujen aritmeettisia operaatioita, tarkastellessa huomataan, että itse asiassa mikään algoritmi ei voi toimia polynomiajassa. Tämä johtuu siitä, että Fibonaccin luvut ovat eksponentiaalisen pitkiä luvun n pituuden suhteen. Näin ollen jo pelkkä vastauksen tulostaminen vie eksponentiaalisen ajan. Esimerkki 2.8. Tarkastellaan niin sanottua Collatzin probleemaa. Kutakin luonnollista lukua n kohden määritellään jono (a j ) j=0 ehdosta n jos j = 0 a j = a j 1 /2 jos a j 1 on parillinen. 3a j jos a j 1 on pariton Olkoon f funktio, joka määritellään ehdosta Onko f algoritmisesti laskettavissa? f(n) = min{j a j = 1}.

16 2.7 Esimerkkejä 14 Jonon (a j ) määrittelyn perusteella on helppoa laatia ratkaisumenetelmä, joka saatuaan syötteen n laskee peräkkäin lukuja a j ja tulostaa ensimmäisen j:n, jolle a j = 1. Menetelmää voi kutsua algoritmiksi, jos kyseinen j on aina olemassa. Mutta ei tiedetä, onko kaikilla n:n arvoilla olemassa tällainen j. Algoritmin määritelmän kohdan (iv) nojalla ei tiedetä, onko f hyvin määritelty algoritminen probleema, tai sen laskeva algoritmi määritelmän mukainen algoritmi. Jos algoritmin määritelmästä unohdetaan kohta (iv), saadaan ns. puolialgoritmi. Edellä siis kuvattiin puolialgoritmi funktion f laskemiseksi. Kysymys terminoiko annettu puolialgoritmi annetulla syötteellä on yleisesti erittäin vaikea kysymys. Esimerkki 2.9. Olkoon ρ [0, 1] reaaliluku. Liitetään lukuun ρ algoritminen probleema P ρ, missä tehtävänä on syötteellä n laskea ρ:n n:s desimaali. Algoritmisena probleema P ρ on hyvin määritelty. Mutta onko sillä ratkaisua; ts. onko olemassa algoritmia, joka ratkaisee P ρ :n? Vastaus riippuu luvun ρ valinnasta. Esimerkiksi tapauksissa ρ = 1 2 tai ρ = 2 3 vaadittu algoritmi on helppo antaa. Näin on yleisemminkin aina, kun ρ Q, vaikka perustelu onkin hieman hankalampi. Mutta suurimmalle osalle ρ:n valintoja vastaus on kielteinen, sillä välin [0, 1] reaalilukujen kardinaliteetti on ylinumeroituva; mutta algoritmeja on vain numeroituva määrä. Jälkimmäinen väite seuraa siitä, että algoritmi koostuu aina äärellisestä määrästä äärellisiä ohjeita. Siispä algoritmeilla on aina äärellinen deskriptio esimerkiksi suomen kielen lauseina. Kaikki äärelliset lauseet voidaan asettaa jonoon vaikka pituuden mukaan järjestettynä, samanpituiset aakkosjärjestykseen. Yllä oleva osoittaa, että valtaosa reaaliluvuista on algoritmisen matematiikan saavuttamattomissa.

17 15 3 Aritmeettisia peruslaskutoimituksia Tässä luvussa tarkasteltavat probleemat ovat hyvin tuttuja kokonaislukujen aritmeettisia laskutoimituksia ja niiden laskennallista kompleksisuuden määrääminen. Nähdään, että jotkut probleemat voidaan ratkaista eitriviaalilla metodilla yllättävän nopeasti. Pohditaan aluksi, missä muodossa algoritmit saavat kokonaislukusyötteensä. Tietokoneissa, joissa on l-bittinen prosessori, esitetään kokonaisluku a vektorina [b, a 0, a 1,..., a n 1 ], missä n 1 a = ( 1) s a i (2 l ) i, i=0 0 a i < 2 l kaikille i = 0,..., n 1 ja a n 1 0, ja b ilmoittaa luvun merkin ja pituuden: b = s 2 l 1 + n (s {0, 1}). Luvut siis esitetään 2 l -kantaisessa järjestelmässä, ja b kertoo luvun pituuden ja merkin. Lukuja b ja a i kutsutaan tällä kurssilla numeroiksi vaikka ne itse asiassa ovat lukuja. Luvut a i kuitenkin vastaavat 2 l -kantaisen esityksen bittejä eli 1-numeroisia lukuja. Huomaa, että kokonaislukujen esittämiseen on olemassa myös muita tapoja, esim. binäärikoodatuilla desimaaleilla tai kakkosen komplementti esityksellä. Algoritmien kannalta ei ole olennaista, missä kannassa luvut esitetään. Vaikka algoritmit onkin yleensä tarkoitus toteuttaa tietokoneilla ja siten 2 l kantainen esitys olisi luonnollinen, voi olla helpompi ajatella normaalia 10 kantaista esitystä. Merkitään luvun a esitystä kantaluvun k suhteen a = (a n 1,..., a 1, a 0 ) k. Nyt siis a = n 1 i=0 a ik i, missä siis 0 a i < k. Määritellään, että luvun a pituus a l = n. (Kuten yllä todettiin, a:n esittämiseen tarvitaan itse asiassa n + 1 numeroa {0, 1,..., k 1}.) Näin ollen a l = log k a + 1. Algoritmien kompleksisuutta arvioitaessa riittää muistaa, että a l = O(log a). Alkeisoperaatioiksi on luonnollista määritellä 1-pituisilla luvuilla suoritettavat operaatiot: esim. yhteenlasku, kertolasku, vertailu ym. Näitä operaatioita kutsutaan usein bittioperaatioiksi riippumatta siitä, missä järjestelmässä luvut on annettu. Joskus algoritmien kompleksisuutta määrättäessä lasketaan aritmeettisten operaatioiden määrää. Tällä tarkoitetaan mielivaltaisen pitkien lukujen yhteen-, vähennys-, kerto- ja jakolaskujen määrää.

18 3.1 Kahden luvun vertailu Kahden luvun vertailu Kahden luvun vertailu on hyvin määritelty algoritminen probleema. Syötteenä saadaan luvut a ja b, ja tuloste on joko 0 tai 1 sen mukaan, onko a b vai a > b. Merkitään tätä probleemaa C(a, b):llä. C(a, b) on helppo ratkaista. Algoritmi 3.1. Algoritmi kahden luonnollisen luvun vertailemiseksi. syöte: luvut a, b tuloste: 0 jos a b, muuten 1 if a l < b l tai a l > b l then return 0 tai 1 else for i = a l 1 downto 0 do if a i < b i tai a i > b i then return 0 tai 1 return 0 (sillä a = b) Algoritmin kompleksisuutta arvioitaessa on siis laskettava vertailujen x < y määrä, missä x ja y ovat 1numeroisia lukuja. Jos a ja b ovat (korkeintaan) npituisia lukuja, niin selvästi 2n vertailua riittää aina. Näin ollen algoritmi toimii ajassa O(n). Pahimmassa tapauksessa (jos a ja b poikkeavat vain vähiten merkitsevässä numerossa) algoritmi myös vaatii mainitut 2n + 2 vertailua, joten se toimii ajassa Ω(n). Siis algoritmi toimii ajassa Θ(n). Yllä oleva algoritmi osoittaa, että probleema C(a, b) kuuluu luokkaan O(n). Mutta kuuluuko se luokkaan Θ(n); ts. vaatiiko jokainen sen ratkaiseva algoritmi ajan Ω(n)? Tämä on ilmeistä, sillä jos vertailuja tehdään vähemmän kuin n kappaletta (saati sitten vähemmän kuin O(n) kpl), jää väkisinkin jokin pari a i0, b i0 vertailematta. Tällaisella algoritmilla ei probleemaa voi ratkaista syötteellä, joissa a i = b i aina kun i i 0. Näin on perusteltu seuraava lause. Lause 3.1. Probleema C(a, b) on luokassa Θ(n). 3.2 Yhteen- ja vähennyslasku Olkoot a ja b einegatiivisia kokonaislukuja, ja olkoon niistä suuremman pituus n (käytetyssä kkantaisessa järjestelmässä). Merkitään A(a, b):llä probleemaa, jossa pitää laskea summa a + b, ja S(a, b):lla probleemaa, jossa pitää laskea erotus a b. Aivan kuten edellä vertailu-probleemassa on nytkin selvää, että probleemoja ei voida ratkaista alle lineaarisessa ajassa, joten ne ovat luokassa Ω(n).

19 3.3 Kertolasku 17 Toisaalta kumpikin probleema ratkeaa ajassa O(n) tutulla kouluaritmetiikalla. Yhteenlaskun suorittamiseen riittää 2n 1 alkeisoperaatiota, kun on otettu huomioon muistinumeroilla operointi. (Itse asiassa tietokoneen prosessorissa muistinumeroiden käsittely on yhdistetty alkeisyhteenlaskuun, jolloin voidaan sanoa, että n alkeisoperaatiota riittää.) Vähennyslaskun kompleksisuutta tarkasteltaessa muistinumerot aiheuttavat hiukan enemmän huolta, mutta siinäkin saadaan tarvittavien operaatioiden ylärajaksi cn, missä vakion c arvo riippuu alkeisvähennyslaskun tarkasta määritelmästä. Lause 3.2. Probleemat A(a, b) ja S(a, b) ovat luokassa Θ(n). 3.3 Kertolasku Merkitään kertolaskuprobleemaa M(a, b):llä. Oletetaan, että n-pituiset luvut a = (a n 1... a 1 a 0 ) k ja b = (b n 1... b 1 b 0 ) k ovat positiivisia. Koulussa opittu kertoalgoritmi toimii seuraavasti. Algoritmi 3.2. Koulualgoritmi kertolaskuun syöte: luvut a ja b tuloste: tulo ab t 0 for i = 0 to n 1 do x b i a t t + k i x return t Jokainen kertolasku b i a vaatii n alkeisoperaatiota (oletetaan, että muistinumeroilla operointi sisältyy alkeiskertolaskuun), ja summien t+k i x laskeminen vie korkeintaan 2n alkeisoperaatiota. Siis kullakin i:n arvolla suoritetaan maksimissaaan 3n operaatiota, joten algoritmin kompleksisuudelle saadaan yläraja 3n 2 = O(n 2 ). Taas on helppo nähdä, että kertolasku vaatii ainakin lineaarisen ajan, eli M(a, b) kuuluu luokkaan Ω(n). Edellinen algoritmi puolestaan osoitti, että M(a, b) kuuluu luokkaan O(n 2 ). Ongelman tarkkaa kompleksisuutta ei itse asiassa tiedetä, mutta myöhemmin näytetään, että koulualgoritmin antamaa ylärajaa voidaan parantaa. Todetaan vielä, että koulualgoritmin kompleksisuus on luokkaa O(mn), jos kerrottavista luvuista toinen on m ja toinen npituinen. Erityisesti, jos toinen luvuista on 1-numeroinen, on kompleksisuus luokkaa O(n).

20 3.4 Jakolasku Jakolasku Jakolaskuprobleemassa D(a, b) syötteenä on positiiviset kokonaisluvut a ja b ja tavoitteena on laskea pari (q, r), joka määräytyy yksikäsitteisesti ehdosta a = q b + r, missä 0 r < b. Oletetaan, että b on npituinen ja a (korkeintaan) 2npituinen luku. Tavanomainen koulussa opittu menetelmä johtaa jälleen kompleksisuutta O(n 2 ) olevaan algoritmiin: Jokainen q:n numero löytyy kokeilemalla (vakiomäärä kertolaskuja, joissa kerrottavat ovat 1- ja npituisia) ja vaatii O(n) operaatiota. Väite seuraa, koska q:n pituus on kertalukua O(n). Jos jakaja b on 1-pituinen luku, niin q:n numeroidenn etsimisessä lasketaankin kahden 1-numeroisen tuloja, jolloin jokainen numero löytyy vakioajassa. Siksi, aivan kuten kertolaskukin, ratkeaa jakolasku tässä tapauksessa ajassa O(n). Jakolaskun nopeuttaminen on hivenen hankalampaa kuin kertolaskun, ja sitä ei tällä kurssilla käsitellä. Voidaan kuitenkin osoittaa, että (tietyin lievin luonnollisin ehdoin) jakolasku voidaan suorittaa kertaluvultaan samassa ajassa kuin kertolasku. Polynomien aritmetiikkaa käsittelevässä luvussa näytetään, että polynomien jakolasku onnistuu samassa ajassa kuin polynomien kertolasku. 3.5 Binääriesityksen laskeminen Joissakin algoritmeissa on hyödyllistä tuntea luvun binääriesitys. Oletetaan taas, että a on k-kantaisessa järjestelmässä annettu npituinen luku. Probleemassa Bin(a) tehtävänä on laskea a:n binääriesitys; siis sellaiset bitit α i {0, 1}, että a = α i 2 i. Bin(a) voidaan ratkaista seuraavalla algoritmilla. Algoritmi 3.3. Algoritmi luvun binääriesityksen laskemiseksi. syöte: luku a = (a n 1 a 1 a 0 ) k tuloste: α = (α 0, α 1,... ) 2 : a = α i 2 i i 0 while a 0 do if a on pariton then α i 1 else α i 0 a a 2 i i + 1 return a = (α i 1 α 0 ) 2

3. Kongruenssit. 3.1 Jakojäännös ja kongruenssi

3. Kongruenssit. 3.1 Jakojäännös ja kongruenssi 3. Kongruenssit 3.1 Jakojäännös ja kongruenssi Tässä kappaleessa esitellään kokonaislukujen modulaarinen aritmetiikka (ns. kellotauluaritmetiikka), jossa luvut tyypillisesti korvataan niillä jakojäännöksillä,

Lisätiedot

Matematiikan mestariluokka, syksy 2009 7

Matematiikan mestariluokka, syksy 2009 7 Matematiikan mestariluokka, syksy 2009 7 2 Alkuluvuista 2.1 Alkuluvut Määritelmä 2.1 Positiivinen luku a 2 on alkuluku, jos sen ainoat positiiviset tekijät ovat 1 ja a. Jos a 2 ei ole alkuluku, se on yhdistetty

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

Matematiikan ja tilastotieteen laitos Algebra I - Kesä 2009 Ratkaisuehdoituksia harjoituksiin 8 -Tehtävät 3-6 4 sivua Heikki Koivupalo ja Rami Luisto

Matematiikan ja tilastotieteen laitos Algebra I - Kesä 2009 Ratkaisuehdoituksia harjoituksiin 8 -Tehtävät 3-6 4 sivua Heikki Koivupalo ja Rami Luisto Matematiikan ja tilastotieteen laitos Algebra I - Kesä 2009 Ratkaisuehdoituksia harjoituksiin 8 -Tehtävät 3-6 4 sivua Heikki Koivupalo ja Rami Luisto 3. Oletetaan, että kunnan K karakteristika on 3. Tutki,

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

Teema 4. Homomorfismeista Ihanne ja tekijärengas. Teema 4 1 / 32

Teema 4. Homomorfismeista Ihanne ja tekijärengas. Teema 4 1 / 32 1 / 32 Esimerkki 4A.1 Esimerkki 4A.2 Esimerkki 4B.1 Esimerkki 4B.2 Esimerkki 4B.3 Esimerkki 4C.1 Esimerkki 4C.2 Esimerkki 4C.3 2 / 32 Esimerkki 4A.1 Esimerkki 4A.1 Esimerkki 4A.2 Esimerkki 4B.1 Esimerkki

Lisätiedot

LUKUTEORIA A. Harjoitustehtäviä, kevät 2013. (c) Osoita, että jos. niin. a c ja b c ja a b, niin. niin. (e) Osoita, että

LUKUTEORIA A. Harjoitustehtäviä, kevät 2013. (c) Osoita, että jos. niin. a c ja b c ja a b, niin. niin. (e) Osoita, että LUKUTEORIA A Harjoitustehtäviä, kevät 2013 1. Olkoot a, b, c Z, p P ja k, n Z +. (a) Osoita, että jos niin Osoita, että jos niin (c) Osoita, että jos niin (d) Osoita, että (e) Osoita, että a bc ja a c,

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

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 1 1 Matemaattisesta päättelystä Matemaattisen analyysin kurssin (kuten minkä tahansa matematiikan kurssin) seuraamista helpottaa huomattavasti, jos opiskelija ymmärtää

Lisätiedot

rm + sn = d. Siispä Proposition 9.5(4) nojalla e d.

rm + sn = d. Siispä Proposition 9.5(4) nojalla e d. 9. Renkaat Z ja Z/qZ Tarkastelemme tässä luvussa jaollisuutta kokonaislukujen renkaassa Z ja todistamme tuloksia, joita käytetään jäännösluokkarenkaan Z/qZ ominaisuuksien tarkastelussa. Jos a, b, c Z ovat

Lisätiedot

kaikille a R. 1 (R, +) on kommutatiivinen ryhmä, 2 a(b + c) = ab + ac ja (b + c)a = ba + ca kaikilla a, b, c R, ja

kaikille a R. 1 (R, +) on kommutatiivinen ryhmä, 2 a(b + c) = ab + ac ja (b + c)a = ba + ca kaikilla a, b, c R, ja Renkaat Tarkastelemme seuraavaksi rakenteita, joissa on määritelty kaksi binääristä assosiatiivista laskutoimitusta, joista toinen on kommutatiivinen. Vaadimme muuten samat ominaisuudet kuin kokonaisluvuilta,

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

Nimittäin, koska s k x a r mod (p 1), saadaan Fermat n pienen lauseen avulla

Nimittäin, koska s k x a r mod (p 1), saadaan Fermat n pienen lauseen avulla 6. Digitaalinen allekirjoitus Digitaalinen allekirjoitus palvelee samaa tarkoitusta kuin perinteinen käsin kirjotettu allekirjoitus, t.s. Liisa allekirjoittaessaan Pentille lähettämän viestin, hän antaa

Lisätiedot

Liite 2. Ryhmien ja kuntien perusteet

Liite 2. Ryhmien ja kuntien perusteet Liite 2. Ryhmien ja kuntien perusteet 1. Ryhmät 1.1 Johdanto Erilaisissa matematiikan probleemoissa törmätään usein muotoa a + x = b tai a x = b oleviin yhtälöihin, joissa tuntematon muuttuja on x. Lukujoukkoja

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

k=1 b kx k K-kertoimisia polynomeja, P (X)+Q(X) = (a k + b k )X k n+m a i b j X k. i+j=k k=0

k=1 b kx k K-kertoimisia polynomeja, P (X)+Q(X) = (a k + b k )X k n+m a i b j X k. i+j=k k=0 1. Polynomit Tässä luvussa tarkastelemme polynomien muodostamia renkaita polynomien ollisuutta käsitteleviä perustuloksia. Teemme luvun alkuun kaksi sopimusta: Tässä luvussa X on muodollinen symboli, jota

Lisätiedot

2.2 Neliöjuuri ja sitä koskevat laskusäännöt

2.2 Neliöjuuri ja sitä koskevat laskusäännöt . Neliöjuuri ja sitä koskevat laskusäännöt MÄÄRITELMÄ 3: Lukua b sanotaan luvun a neliöjuureksi, merkitään a b, jos b täyttää kaksi ehtoa: 1o b > 0 o b a Esim.1 Määritä a) 64 b) 0 c) 36 a) Luvun 64 neliöjuuri

Lisätiedot

Äärellisesti generoitujen Abelin ryhmien peruslause

Äärellisesti generoitujen Abelin ryhmien peruslause Tero Harju (2008/2010) Äärellisesti generoitujen Abelin ryhmien peruslause Merkintä X on joukon koko ( eli #X). Vapaat Abelin ryhmät Tässä kappaleessa käytetään Abelin ryhmille additiivista merkintää.

Lisätiedot

LUKUTEORIAN ALKEET HELI TUOMINEN

LUKUTEORIAN ALKEET HELI TUOMINEN LUKUTEORIAN ALKEET HELI TUOMINEN Sisältö 1. Lukujärjestelmät 2 1.1. Kymmenjärjestelmä 2 1.2. Muita lukujärjestelmiä 2 1.3. Yksikäsitteisyyslause 4 2. Alkulukuteoriaa 6 2.1. Jaollisuus 6 2.2. Suurin yhteinen

Lisätiedot

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan

Lisätiedot

H = : a, b C M. joten jokainen A H {0} on kääntyvä matriisi. Itse asiassa kaikki nollasta poikkeavat alkiot ovat yksiköitä, koska. a b.

H = : a, b C M. joten jokainen A H {0} on kääntyvä matriisi. Itse asiassa kaikki nollasta poikkeavat alkiot ovat yksiköitä, koska. a b. 10. Kunnat ja kokonaisalueet Määritelmä 10.1. Olkoon K rengas, jossa on ainakin kaksi alkiota. Jos kaikki renkaan K nollasta poikkeavat alkiot ovat yksiköitä, niin K on jakorengas. Kommutatiivinen jakorengas

Lisätiedot

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten, Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten, että se pystyy suorittamaan kaikki mahdolliset algoritmit?

Lisätiedot

Esimerkki A1. Jaetaan ryhmä G = Z 17 H = 4 = {1, 4, 4 2 = 16 = 1, 4 3 = 4 = 13, 4 4 = 16 = 1}.

Esimerkki A1. Jaetaan ryhmä G = Z 17 H = 4 = {1, 4, 4 2 = 16 = 1, 4 3 = 4 = 13, 4 4 = 16 = 1}. Jaetaan ryhmä G = Z 17 n H = 4 sivuluokkiin. Ratkaisu: Koska 17 on alkuluku, #G = 16, alkiona jäännösluokat a, a = 1, 2,..., 16. Määrätään ensin n H alkiot: H = 4 = {1, 4, 4 2 = 16 = 1, 4 3 = 4 = 13, 4

Lisätiedot

ALKULUKUJA JA MELKEIN ALKULUKUJA

ALKULUKUJA JA MELKEIN ALKULUKUJA ALKULUKUJA JA MELKEIN ALKULUKUJA MINNA TUONONEN Versio: 12. heinäkuuta 2011. 1 2 MINNA TUONONEN Sisältö 1. Johdanto 3 2. Tutkielmassa tarvittavia määritelmiä ja apulauseita 4 3. Mersennen alkuluvut ja

Lisätiedot

2.3 Juurien laatu. Juurien ja kertoimien väliset yhtälöt. Jako tekijöihin. b b 4ac = 2

2.3 Juurien laatu. Juurien ja kertoimien väliset yhtälöt. Jako tekijöihin. b b 4ac = 2 .3 Juurien laatu. Juurien ja kertoimien väliset yhtälöt. Jako tekijöihin. Toisen asteen yhtälön a + b + c 0 ratkaisukaavassa neliöjuuren alla olevaa lauseketta b b 4ac + a b b 4ac a D b 4 ac sanotaan yhtälön

Lisätiedot

Jarkko Peltomäki. Aliryhmän sentralisaattori ja normalisaattori

Jarkko Peltomäki. Aliryhmän sentralisaattori ja normalisaattori Jarkko Peltomäki Aliryhmän sentralisaattori ja normalisaattori Matematiikan aine Turun yliopisto Syyskuu 2009 Sisältö 1 Johdanto 2 2 Määritelmiä ja perusominaisuuksia 3 2.1 Aliryhmän sentralisaattori ja

Lisätiedot

Merkitse kertolasku 3 3 3 3 potenssin avulla ja laske sen arvo.

Merkitse kertolasku 3 3 3 3 potenssin avulla ja laske sen arvo. 13 Luvun potenssi Kertolasku, jonka kaikki tekijät ovat samoja, voidaan merkitä lyhyemmin potenssin avulla. Potenssimerkinnässä eksponentti ilmaisee, kuinka monta kertaa kantaluku esiintyy tulossa. Potenssin

Lisätiedot

Neljän alkion kunta, solitaire-peli ja

Neljän alkion kunta, solitaire-peli ja Neljän alkion kunta, solitaire-peli ja taikaneliöt Kalle Ranto ja Petri Rosendahl Matematiikan laitos, Turun yliopisto Nykyisissä tietoliikennesovelluksissa käytetään paljon tekniikoita, jotka perustuvat

Lisätiedot

+ 3 2 5 } {{ } + 2 2 2 5 2. 2 kertaa jotain

+ 3 2 5 } {{ } + 2 2 2 5 2. 2 kertaa jotain Jaollisuustestejä (matematiikan mestariluokka, 7.11.2009, ohjattujen harjoitusten lopputuloslappu) Huom! Nämä eivät tietenkään ole ainoita jaollisuussääntöjä; ovatpahan vain hyödyllisiä ja ainakin osittain

Lisätiedot

Alkulukujen teoriaa ja Goldbachin otaksuma

Alkulukujen teoriaa ja Goldbachin otaksuma TAMPEREEN YLIOPISTO Pro gradu -tutkielma Teemu Lehtonen Alkulukujen teoriaa ja Goldbachin otaksuma Matematiikan, tilastotieteen ja losoan laitos Matematiikka Maaliskuu 2004 Sisältö 1 Johdanto 2 2 Alkuluvuista

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

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

3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö

3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö 3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö Yhtälön (tai funktion) y = a + b + c, missä a 0, kuvaaja ei ole suora, mutta ei ole yhtälökään ensimmäistä astetta. Funktioiden

Lisätiedot

jakokulmassa x 4 x 8 x 3x

jakokulmassa x 4 x 8 x 3x Laudatur MAA ratkaisut kertausarjoituksiin. Polynomifunktion nollakodat 6 + 7. Suoritetaan jakolasku jakokulmassa 5 4 + + 4 8 6 6 5 4 + 0 + 0 + 0 + 0+ 6 5 ± 5 5 4 ± 4 4 ± 4 4 ± 4 8 8 ± 8 6 6 + ± 6 Vastaus:

Lisätiedot

5. Julkisen avaimen salaus

5. Julkisen avaimen salaus Osa3: Matematiikkaa julkisen avaimen salausten taustalla 5. Julkisen avaimen salaus Public key cryptography 5. 1 Julkisen avaimen salausmenetelmät - Diffien ja Hellmannin periaate v. 1977 - RSA:n perusteet

Lisätiedot

w + x + y + z =4, wx + wy + wz + xy + xz + yz =2, wxy + wxz + wyz + xyz = 4, wxyz = 1.

w + x + y + z =4, wx + wy + wz + xy + xz + yz =2, wxy + wxz + wyz + xyz = 4, wxyz = 1. Kotitehtävät, tammikuu 2011 Vaikeampi sarja 1. Ratkaise yhtälöryhmä w + x + y + z =4, wx + wy + wz + xy + xz + yz =2, wxy + wxz + wyz + xyz = 4, wxyz = 1. Ratkaisu. Yhtälöryhmän ratkaisut (w, x, y, z)

Lisätiedot

renkaissa. 0 R x + x =(0 R +1 R )x =1 R x = x

renkaissa. 0 R x + x =(0 R +1 R )x =1 R x = x 8. Renkaat Tarkastelemme seuraavaksi rakenteita, joissa on määritelty kaksi assosiatiivista laskutoimitusta, joista toinen on kommutatiivinen. Vaadimme näiltä kahdella laskutoimituksella varustetuilta

Lisätiedot

1 Aritmeettiset ja geometriset jonot

1 Aritmeettiset ja geometriset jonot 1 Aritmeettiset ja geometriset jonot Johdatus Johdatteleva esimerkki 1 Kasvutulille talletetaan vuoden jokaisen kuukauden alussa tammikuusta alkaen 100 euroa. Tilin nettokorkokanta on 6%. Korko lisätään

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

Tutkimusmenetelmät-kurssi, s-2004

Tutkimusmenetelmät-kurssi, s-2004 Algoritmitutkimuksen menetelmistä Tutkimusmenetelmät-kurssi, s-2004 Pekka Kilpeläinen Kuopion yliopisto Tietojenkäsittelytieteen laitos Algoritmitutkimuksen menetelmistä p.1/20 Sisällys Tänään Tietojenkäsittelytiede

Lisätiedot

7. Laskutoimitukset eri lukujärjestelmissä 1 / 31

7. Laskutoimitukset eri lukujärjestelmissä 1 / 31 7. Laskutoimitukset eri lukujärjestelmissä 1 / 31 Johdanto Lukujen esitykset eri lukujärjestelmissä Muunnokset lukujärjestelmien välillä Laskutoimitukset eri lukujärjestelmissä. 2 / 31 7.1. Muunnokset

Lisätiedot

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä 3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä Lineaarinen m:n yhtälön yhtälöryhmä, jossa on n tuntematonta x 1,, x n on joukko yhtälöitä, jotka ovat muotoa a 11 x 1 + + a 1n x n = b 1 a 21

Lisätiedot

LAUSEKKEET JA NIIDEN MUUNTAMINEN

LAUSEKKEET JA NIIDEN MUUNTAMINEN LAUSEKKEET JA NIIDEN MUUNTAMINEN 1 LUKULAUSEKKEITA Ratkaise seuraava tehtävä: Retkeilijät ajoivat kahden tunnin ajan polkupyörällä maantietä pitkin 16 km/h nopeudella, ja sitten vielä kävelivät metsäpolkua

Lisätiedot

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö Algoritmit 1 Luento 10 Ke 11.2.2015 Timo Männikkö Luento 10 Algoritminen ongelman ratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Väliinsijoituslajittelu Valintalajittelu

Lisätiedot

Osa 1: Todennäköisyys ja sen laskusäännöt. Klassinen todennäköisyys ja kombinatoriikka

Osa 1: Todennäköisyys ja sen laskusäännöt. Klassinen todennäköisyys ja kombinatoriikka Ilkka Mellin Todennäköisyyslaskenta Osa 1: Todennäköisyys ja sen laskusäännöt Klassinen todennäköisyys ja kombinatoriikka TKK (c) Ilkka Mellin (2007) 1 Klassinen todennäköisyys ja kombinatoriikka >> Klassinen

Lisätiedot

n! k!(n k)! n = Binomikerroin voidaan laskea pelkästään yhteenlaskun avulla käyttäen allaolevia ns. palautuskaavoja.

n! k!(n k)! n = Binomikerroin voidaan laskea pelkästään yhteenlaskun avulla käyttäen allaolevia ns. palautuskaavoja. IsoInt Tietokoneiden muisti koostuu yksittäisistä muistisanoista, jotka nykyaikaisissa koneissa ovat 64 bitin pituisia. Muistisanan koko asettaa teknisen rajoituksen sille, kuinka suuria lukuja tietokone

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.2.2011 1 / 37 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

MAT-41150 Algebra I (s) periodilla IV 2012 Esko Turunen

MAT-41150 Algebra I (s) periodilla IV 2012 Esko Turunen MAT-41150 Algebra I (s) periodilla IV 2012 Esko Turunen Tehtävä 1. Onko joukon X potenssijoukon P(X) laskutoimitus distributiivinen laskutoimituksen suhteen? Onko laskutoimitus distributiivinen laskutoimituksen

Lisätiedot

Karteesinen tulo. Olkoot A = {1, 2, 3, 5} ja B = {a, b, c}. Näiden karteesista tuloa A B voidaan havainnollistaa kuvalla 1 / 21

Karteesinen tulo. Olkoot A = {1, 2, 3, 5} ja B = {a, b, c}. Näiden karteesista tuloa A B voidaan havainnollistaa kuvalla 1 / 21 säilyy Olkoot A = {1, 2, 3, 5} ja B = {a, b, c}. Näiden karteesista tuloa A B voidaan havainnollistaa kuvalla c b a 1 2 3 5 1 / 21 säilyy Esimerkkirelaatio R = {(1, b), (3, a), (5, a), (5, c)} c b a 1

Lisätiedot

Laskennan vaativuus ja NP-täydelliset ongelmat

Laskennan vaativuus ja NP-täydelliset ongelmat Laskennan vaativuus ja NP-täydelliset ongelmat TRAK-vierailuluento 13.4.2010 Petteri Kaski Tietojenkäsittelytieteen laitos Tietojenkäsittelytiede Tietojenkäsittelytiede tutkii 1. mitä tehtäviä voidaan

Lisätiedot

LUKU II HOMOLOGIA-ALGEBRAA. 1. Joukko-oppia

LUKU II HOMOLOGIA-ALGEBRAA. 1. Joukko-oppia LUKU II HOMOLOGIA-ALGEBRAA 1. Joukko-oppia Matematiikalle on tyypillistä erilaisten objektien tarkastelu. Tarkastelu kohdistuu objektien tai näiden muodostamien joukkojen välisiin suhteisiin, mutta objektien

Lisätiedot

Huom! (5 4 ) Luetaan viisi potenssiin neljä tai viisi neljänteen. 7.1 Potenssin määritelmä

Huom! (5 4 ) Luetaan viisi potenssiin neljä tai viisi neljänteen. 7.1 Potenssin määritelmä 61 7.1 Potenssin määritelmä Potenssi on lyhennetty merkintä tulolle, jossa kantaluku kerrotaan itsellään niin monta kertaa kuin eksponentti ilmaisee. - luvun toinen potenssi on nimeltään luvun neliö o

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 3.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 1 / 36 Esimerkki: asunnon välityspalkkio Kirjoitetaan ohjelma, joka laskee kiinteistönvälittäjän asunnon

Lisätiedot

PERUSKOULUSTA PITKÄLLE

PERUSKOULUSTA PITKÄLLE Raimo Seppänen Tytti Kiiski PERUSKOULUSTA PITKÄLLE KERTAUSTA JA TÄYDENNYSTÄ LUKION PITKÄLLE MATEMATIIKALLE JA MATEMATIIKKAA VAATIVAAN AMMATILLISEEN KOULUTUKSEEN MFKA-KUSTANNUS OY HELSINKI 2007 SISÄLLYS

Lisätiedot

Muita vaativuusluokkia

Muita vaativuusluokkia Muita vaativuusluokkia Käydään lyhyesti läpi tärkeimpiä vaativuusluokkiin liittyviä tuloksia. Monet tunnetuista tuloksista ovat vaikeita todistaa, ja monet kysymykset ovat vielä auki. Lause (Ladner 1975):

Lisätiedot

PERUSASIOITA ALGEBRASTA

PERUSASIOITA ALGEBRASTA PERUSASIOITA ALGEBRASTA Matti Lehtinen Tässä luetellut lauseet ja käsitteet kattavat suunnilleen sen mitä algebrallisissa kilpatehtävissä edellytetään. Ns. algebrallisia struktuureja jotka ovat nykyaikaisen

Lisätiedot

FUNKTIONAALIANALYYSIN PERUSKURSSI 1. 0. Johdanto

FUNKTIONAALIANALYYSIN PERUSKURSSI 1. 0. Johdanto FUNKTIONAALIANALYYSIN PERUSKURSSI 1. Johdanto Funktionaalianalyysissa tutkitaan muun muassa ääretönulotteisten vektoriavaruuksien, ja erityisesti täydellisten normiavaruuksien eli Banach avaruuksien ominaisuuksia.

Lisätiedot

ALKULUVUISTA (mod 6)

ALKULUVUISTA (mod 6) Oulun Yliopisto Kandidaatintutkielma ALKULUVUISTA (mod 6) Marko Moilanen Opiskelijanro: 1681871 17. joulukuuta 2014 Sisältö 1 Johdanto 2 1.1 Tutkielman sisältö........................ 2 1.2 Alkulukujen

Lisätiedot

x > y : y < x x y : x < y tai x = y x y : x > y tai x = y.

x > y : y < x x y : x < y tai x = y x y : x > y tai x = y. ANALYYSIN TEORIA A Kaikki lauseet eivät ole muotoiltu samalla tavalla kuin luennolla. Ilmoita virheistä yms osoitteeseen mikko.kangasmaki@uta. (jos et ole varma, onko kyseessä virhe, niin ilmoita mieluummin).

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Lukion. Calculus. Funktiot ja yhtälöt. Paavo Jäppinen Alpo Kupiainen Matti Räsänen Otava PIKATESTIN JA KERTAUSKOKEIDEN TEHTÄVÄT RATKAISUINEEN

Lukion. Calculus. Funktiot ja yhtälöt. Paavo Jäppinen Alpo Kupiainen Matti Räsänen Otava PIKATESTIN JA KERTAUSKOKEIDEN TEHTÄVÄT RATKAISUINEEN Calculus Lukion MAA Funktiot ja yhtälöt Paavo Jäppinen Alpo Kupiainen Matti Räsänen Otava PIKATESTIN JA KERTAUSKOKEIDEN TEHTÄVÄT RATKAISUINEEN Funktiot ja yhtälöt (MAA) Pikatesti ja kertauskokeet Pikatesti

Lisätiedot

Luvuilla laskeminen. Esim. 1 Laske 6 21 7

Luvuilla laskeminen. Esim. 1 Laske 6 21 7 Luvuilla laskeminen TI-84 Plus käyttää laskujen suorittamiseen ns. yhtälönkäsittelyjärjestelmää (EOS TM, Equation Operating System), jonka avulla lausekkeiden syöttö tapahtuu matemaattisessa kirjoitusjärjestyksessä.

Lisätiedot

2 Yhtälöitä ja epäyhtälöitä

2 Yhtälöitä ja epäyhtälöitä 2 Yhtälöitä ja epäyhtälöitä 2.1 Ensimmäisen asteen yhtälö ja epäyhtälö Muuttujan x ensimmäisen asteen yhtälöksi sanotaan yhtälöä, joka voidaan kirjoittaa muotoon ax + b = 0, missä vakiot a ja b ovat reaalilukuja

Lisätiedot

Laskentaa kirjaimilla

Laskentaa kirjaimilla MAB1 Polynomit Laskentaa kirjaimilla Tähän asti olemme laskeneet luvuilla, jotka on esitetty numeroiden avulla. Matematiikan säännöt, laskentamenetelmät, kaavat samoin kuin fysiikan ja itse asiassa kaikkien

Lisätiedot

Ilkka Mellin Todennäköisyyslaskenta Liite 1: Joukko-oppi

Ilkka Mellin Todennäköisyyslaskenta Liite 1: Joukko-oppi Ilkka Mellin Todennäköisyyslaskenta Liite 1: Joukko-oppi TKK (c) Ilkka Mellin (2007) 1 Joukko-oppi >> Joukko-opin peruskäsitteet Joukko-opin perusoperaatiot Joukko-opin laskusäännöt Funktiot Tulojoukot

Lisätiedot

MAY1 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty 12.4.2016 Julkaiseminen sallittu vain koulun suljetussa verkossa.

MAY1 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty 12.4.2016 Julkaiseminen sallittu vain koulun suljetussa verkossa. KERTAUS Lukujono KERTAUSTEHTÄVIÄ K1. Ratkaisussa annetaan esimerkit mahdollisista säännöistä. a) Jatketaan lukujonoa: 2, 4, 6, 8, 10, 12, 14, 16, Rekursiivinen sääntö on, että lukujonon ensimmäinen jäsen

Lisätiedot

Pyramidi 9 Trigonometriset funktiot ja lukujonot 15.4.2011 HK1-1. Dsin3 x. 3cos3x. Dsinx. u( x) sinx ja u ( x) cosx. Dsin. Dsin

Pyramidi 9 Trigonometriset funktiot ja lukujonot 15.4.2011 HK1-1. Dsin3 x. 3cos3x. Dsinx. u( x) sinx ja u ( x) cosx. Dsin. Dsin Pyramidi 9 Trigonometriset funktiot ja lukujonot 5.4.0 HK- a) Dsin3 us ( ) cos3 3 us( ) s( ) 3cos3 s( ) 3 ja s( ) 3 u( ) sin ja u( ) cos b) Dsin 3 3 Dsin us ( ) s( ) sin ja s( ) cos 3 u( ) ja u( ) 3 3sin

Lisätiedot

2. Polynomien jakamisesta tekijöihin

2. Polynomien jakamisesta tekijöihin Imaginaariluvut mielikuvitustako Koska yhtälön x 2 x 1=0 diskriminantti on negatiivinen, ei yhtälöllä ole reaalilukuratkaisua Tästä taas seuraa, että yhtälöä vastaava paraabeli y=x 2 x 1 ei leikkaa y-akselia

Lisätiedot

110. 111. 112. 113. 114. 4. Matriisit ja vektorit. 4.1. Matriisin käsite. 4.2. Matriisialgebra. Olkoon A = , B = Laske A + B, 5 14 9, 1 3 3

110. 111. 112. 113. 114. 4. Matriisit ja vektorit. 4.1. Matriisin käsite. 4.2. Matriisialgebra. Olkoon A = , B = Laske A + B, 5 14 9, 1 3 3 4 Matriisit ja vektorit 4 Matriisin käsite 42 Matriisialgebra 0 2 2 0, B = 2 2 4 6 2 Laske A + B, 2 A + B, AB ja BA A + B = 2 4 6 5, 2 A + B = 5 9 6 5 4 9, 4 7 6 AB = 0 0 0 6 0 0 0, B 22 2 2 0 0 0 6 5

Lisätiedot

RSA Julkisen avaimen salakirjoitusmenetelmä

RSA Julkisen avaimen salakirjoitusmenetelmä RSA Julkisen avaimen salakirjoitusmenetelmä Perusteet, algoritmit, hyökkäykset Matti K. Sinisalo, FL Alkuluvut Alkuluvuilla tarkoitetaan lukua 1 suurempia kokonaislukuja, jotka eivät ole tasan jaollisia

Lisätiedot

Matematiikka vuosiluokat 7 9

Matematiikka vuosiluokat 7 9 Matematiikka vuosiluokat 7 9 Matematiikan opetuksen ydintehtävänä on tarjota oppilaille mahdollisuus hankkia sellaiset matemaattiset taidot, jotka antavat valmiuksia selviytyä jokapäiväisissä toiminnoissa

Lisätiedot

KOMPLEKSILUVUT C. Rationaaliluvut Q. Irrationaaliluvut

KOMPLEKSILUVUT C. Rationaaliluvut Q. Irrationaaliluvut KOMPLEKSILUVUT C Luonnolliset luvut N Kokonaisluvut Z Rationaaliluvut Q Reaaliluvut R Kompleksi luvut C Negat kokonaisluvut Murtoluvut Irrationaaliluvut Imaginaariluvut Erilaisten yhtälöiden ratkaiseminen

Lisätiedot

Parinmuodostuksesta tietojenkäsittelytieteen silmin. Petteri Kaski Tietojenkäsittelytieteen laitos Aalto-yliopisto

Parinmuodostuksesta tietojenkäsittelytieteen silmin. Petteri Kaski Tietojenkäsittelytieteen laitos Aalto-yliopisto Parinmuodostuksesta tietojenkäsittelytieteen silmin Petteri Kaski Tietojenkäsittelytieteen laitos Aalto-yliopisto Suomalainen Tiedeakatemia Nuorten Akatemiaklubi 18.10.2010 Sisältö Mitä tietojenkäsittelytieteessä

Lisätiedot

Lyhyt johdatus alkeelliseen lukuteoriaan. Esa V. Vesalainen

Lyhyt johdatus alkeelliseen lukuteoriaan. Esa V. Vesalainen yhyt johdatus alkeelliseen lukuteoriaan Esa V. Vesalainen Sisällysluettelo 1 Aritmetiikan peruslause 0 Jakoyhtälö.................................. 0 Jaollisuus.................................. 0 Alkuluvut..................................

Lisätiedot

SALAUSMENETELMÄT 801346A, 4 op

SALAUSMENETELMÄT 801346A, 4 op Luentorunko ja harjoitustehtävät SALAUSMENETELMÄT 801346A, 4 op Pohjautuu Leena Leinosen, Marko Rinta-ahon, Tapani Matala-ahon ja Keijo Väänäsen luentoihin Sisältö 1 Johdanto 2 2 Lukuteoriaa 4 2.1 Jakoyhtälö

Lisätiedot

1.4 Funktion jatkuvuus

1.4 Funktion jatkuvuus 1.4 Funktion jatkuvuus Kun arkikielessä puhutaan jonkin asian jatkuvuudesta, mielletään asiassa olevan jonkinlaista yhtäjaksoisuutta, katkeamattomuutta. Tässä ei kuitenkaan käsitellä työasioita eikä ihmissuhteita,

Lisätiedot

Talousmatematiikan perusteet ORMS.1030

Talousmatematiikan perusteet ORMS.1030 kevät 2014 Talousmatematiikan perusteet Matti Laaksonen, (Matemaattiset tieteet / Vaasan yliopisto) Vastaanotto to 11-12 huone D110/Tervahovi Sähköposti: matti.laaksonen@uva.fi Opettajan kotisivu: http://lipas.uwasa.fi/

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 27.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 27.1.2010 1 / 37 If-käsky toistokäskyn sisällä def main(): HELLERAJA = 25.0 print "Anna lampotiloja, lopeta -300:lla."

Lisätiedot

Luentorunko ja harjoitustehtävät. SALAUSMENETELMÄT (801346A) 4 op, 2 ov

Luentorunko ja harjoitustehtävät. SALAUSMENETELMÄT (801346A) 4 op, 2 ov Luentorunko ja harjoitustehtävät SALAUSMENETELMÄT (801346A) 4 op, 2 ov Keijo Väänänen I JOHDANTO Salakirjoitukset kurssilla tarkastelemme menetelmiä, jotka mahdollistavat tiedon siirtämisen tai tallentamisen

Lisätiedot

811312A Tietorakenteet ja algoritmit 2015-2016. V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit

811312A Tietorakenteet ja algoritmit 2015-2016. V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit 811312A Tietorakenteet ja algoritmit 2015-2016 V Verkkojen algoritmeja Osa 2 : Kruskalin ja Dijkstran algoritmit Sisältö 1. Johdanto 2. Leveyshaku 3. Syvyyshaku 4. Kruskalin algoritmi 5. Dijkstran algoritmi

Lisätiedot

Lukujen uusi maailma: p-adiset luvut

Lukujen uusi maailma: p-adiset luvut Solmu 3/2008 1 Lukujen uusi maailma: p-adiset luvut Tauno Metsänkylä Matematiikan laitos, Turun yliopisto Kun kokonaislukujen 0,1,2,... joukkoa laajennetaan vaiheittain ottamalla mukaan negatiiviset kokonaisluvut,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

Matematiikka B2 - Avoin yliopisto

Matematiikka B2 - Avoin yliopisto 6. elokuuta 2012 Opetusjärjestelyt Luennot 9:15-11:30 Harjoitukset 12:30-15:00 Tentti Kurssin sisältö (1/2) Matriisit Laskutoimitukset Lineaariset yhtälöryhmät Gaussin eliminointi Lineaarinen riippumattomuus

Lisätiedot

Talousmatematiikan perusteet ORMS.1030

Talousmatematiikan perusteet ORMS.1030 orms.1030 Vaasan avoin yliopisto / kevät 2013 1 Talousmatematiikan perusteet Matti Laaksonen Matemaattiset tieteet Vaasan yliopisto Vastaanotto to 11-12 huone D110/Tervahovi Sähköposti: matti.laaksonen@uva.fi

Lisätiedot

Desimaaliluvut, mitä ne oikeastaan ovat?

Desimaaliluvut, mitä ne oikeastaan ovat? Desimaaliluvut, mitä ne oikeastaan ovat? Matti Lehtinen Desimaaliluvut ovat niin jokapäiväisiä ja niillä laskemiseen niin totuttu, ettei yleensä tule miettineeksi, mitä ne oikeastaan ovat. Joskus kauan

Lisätiedot

Jatkuvat satunnaismuuttujat

Jatkuvat satunnaismuuttujat Jatkuvat satunnaismuuttujat Satunnaismuuttuja on jatkuva jos se voi ainakin periaatteessa saada kaikkia mahdollisia reaalilukuarvoja ainakin tietyltä väliltä. Täytyy ymmärtää, että tällä ei ole mitään

Lisätiedot

1 2 x2 + 1 dx. (2p) x + 2dx. Kummankin integraalin laskeminen oikein (vastaukset 12 ja 20 ) antaa erikseen (2p) (integraalifunktiot

1 2 x2 + 1 dx. (2p) x + 2dx. Kummankin integraalin laskeminen oikein (vastaukset 12 ja 20 ) antaa erikseen (2p) (integraalifunktiot Helsingin yliopisto, Itä-Suomen yliopisto, Jyväskylän yliopisto, Oulun yliopisto, Tampereen yliopisto ja Turun yliopisto Matematiikan valintakoe (Ratkaisut ja pisteytys) 500 Kustakin tehtävästä saa maksimissaan

Lisätiedot

Talousmatematiikan perusteet ORMS.1030

Talousmatematiikan perusteet ORMS.1030 orms.1030 Vaasan yliopisto / kevät 2015 Talousmatematiikan perusteet Matti Laaksonen Matemaattiset tieteet, Vaasan yliopisto Vastaanotto to 11-12 huone D110/Tervahovi Sähköposti: matti.laaksonen@uva.fi

Lisätiedot

5.2 Ensimmäisen asteen yhtälö

5.2 Ensimmäisen asteen yhtälö 5. Ensimmäisen asteen ytälö 5. Ensimmäisen asteen yhtälö Aloitetaan antamalla nimi yhtälön osille. Nyt annettavat nimet eivät riipu yhtälön tyypistä tai asteesta. Tarkastellaan seuraavaa yhtälöä. Emme

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 16.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 16.9.2015 1 / 26 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään Ohjelmointi Ohjelmoinnissa koneelle annetaan tarkkoja käskyjä siitä, mitä koneen tulisi tehdä. Ohjelmointikieliä on olemassa useita satoja. Ohjelmoinnissa on oleellista asioiden hyvä suunnittelu etukäteen.

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

a b c d + + + + + + + + +

a b c d + + + + + + + + + 28. 10. 2010!"$#&%(')'+*(#-,.*/1032/465$*784 /(9:*;9."$ *;5> *@9 a b c d 1. + + + 2. 3. 4. 5. 6. + + + + + + + + + + P1. Valitaan kannaksi sivu, jonka pituus on 4. Koska toinen jäljelle jäävistä sivuista

Lisätiedot

Esimerkki kaikkialla jatkuvasta muttei missään derivoituvasta funktiosta

Esimerkki kaikkialla jatkuvasta muttei missään derivoituvasta funktiosta Esimerkki kaikkialla jatkuvasta muttei missään derivoituvasta funktiosta Seminaariaine Miikka Rytty Matemaattisten tieteiden laitos Oulun yliopisto 2004 Matemaattista ja historiallista taustaa Tämän kappaleen

Lisätiedot

KESKEISET SISÄLLÖT Keskeiset sisällöt voivat vaihdella eri vuositasoilla opetusjärjestelyjen mukaan.

KESKEISET SISÄLLÖT Keskeiset sisällöt voivat vaihdella eri vuositasoilla opetusjärjestelyjen mukaan. VUOSILUOKAT 6 9 Vuosiluokkien 6 9 matematiikan opetuksen ydintehtävänä on syventää matemaattisten käsitteiden ymmärtämistä ja tarjota riittävät perusvalmiudet. Perusvalmiuksiin kuuluvat arkipäivän matemaattisten

Lisätiedot

MATEMATIIKKA MATEMATIIKAN PITKÄ OPPIMÄÄRÄ. Oppimäärän vaihtaminen

MATEMATIIKKA MATEMATIIKAN PITKÄ OPPIMÄÄRÄ. Oppimäärän vaihtaminen MATEMATIIKKA Oppimäärän vaihtaminen Opiskelijan siirtyessä matematiikan pitkästä oppimäärästä lyhyempään hänen suorittamansa pitkän oppimäärän opinnot luetaan hyväksi lyhyemmässä oppimäärässä siinä määrin

Lisätiedot

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin? Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin? 2013-2014 Lasse Lensu 2 Algoritmit ovat deterministisiä toimintaohjeita

Lisätiedot

1 Raja-arvo. 1.1 Raja-arvon määritelmä. Raja-arvo 1

1 Raja-arvo. 1.1 Raja-arvon määritelmä. Raja-arvo 1 Raja-arvo Raja-arvo Raja-arvo kuvaa funktion f arvon f() kättätmistä, kun vaihtelee. Joillakin funktioilla f() muuttuu vain vähän, kun muuttuu vähän. Toisilla funktioilla taas f() hppää tai vaihtelee arvaamattomasti,

Lisätiedot