3. Algoritmien oikeellisuus
|
|
- Raili Hovinen
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 3. Algoritmien oikeellisuus (Harel luku 5) Opettakaa minulle, missä olen mennyt harhaan [Job 6:24] Kuinka varmistua siitä, että algoritmi toimii oikein? Ohjelmointia harjoittaneet tietävät, että oikein toimivien ohjelmien aikaansaaminen on haastavaa. Miljoonavahinkoja aiheuttaneista ja jopa ihmishenkiä vaatineista ohjelmistovirheistä kerrotaan tosia tarinoita. 44
2 Tietokoneohjelmien oikeellisuutta pyritään normaalisti osoittamaan testaamalla eli kokeilemalla toimintaa edustavalla ja kattavalla joukolla syötteitä. Mahdollisia syötteitä usein ääretön määrä testaamalla ei voi saada oikeellisuudesta varmuutta. Meidän pitää voida varmistua siitä, että esittämämme yleinen ratkaisumenetelmä, algoritmi, toimii oikein. Algoritmeja (ja kriittisiä ohjelmia) voidaan verifioida eli todistaa oikeaksi. Ohjelmien verifiointia käsitellään perusteellisemmin kurssilla Algoritmien oikeellisuus ja johtaminen. 45
3 Mitä verifioinnissa on osoitettava? Algoritmin pitää olla ongelman määrityksen mukainen ratkaisu: Sen on tuotettava kaikilla sallituilla syötteillä haluttu, spesifikaation mukainen tulos. Algoritmi on virheellinen, jos jollain sallitulla syötteellä saadaan väärä vastaus tai suoritus voi joutua virheelliseen tai määrittelemättömään tilanteeseen (nollalla jako, yritys edetä puussa lehtisolmun lapseen, viittaus taulukon ulkopuolelle ym.) tai suoritus on päättymätön, ns. ikuinen silmukka. 46
4 Osittainen ja täysi oikeellisuus Algoritmi tai ohjelma on osittain oikeellinen, jos se tuottaa sallituista syötteistä oikean tuloksen aina, mikäli suoritus päättyy. Osittain oikeellinen algoritmi siis ei anna väärää vastausta, mutta voi joutua joskus ikuiseen silmukkaan. Sanomme, että algoritmi/ohjelma terminoi, jos sen suoritus päättyy millä tahansa ongelman määrityksen mukaisella syötteellä. Osittain oikeellinen ja lisäksi terminoiva algoritmi/ohjelma on täysin oikeellinen Ks. Harel, kuva
5 Osittaisen oikeellisuuden osoittaminen Osittaisen oikeellisuuden osoittamisessa näytetään, että algoritmin suorituksessa ei tapahdu vääriä asioita: algoritmi ei tuota vääriä tuloksia ja muuttujilla ei ole virhetilanteeseen johtavia arvoja (esim. nolla jakajana tai indeksi taulukon rajojen ulkopuolella) Argumentointi tapahtuu liittämällä algoritmissa sopiviin varmistuskohtiin (checkpoint) väittämiä (assertion). Väittämillä ilmaistaan asiantila, jonka halutaan osoittaa olevan k.o. kohdassa voimassa. Yleensä väittämissä käytetään algoritmin muuttujia: Esim. taulukon alkiot 1,..., I on järjestetty. 48
6 Algoritmin alkuväittämä (initial assertion) on yleensä sallitut syötteet kuvaava ehto. Vastaavasti loppuväittämä (final assertion) kuvaa sen, että tulosteen ja syötteen suhde on ongelman ratkaisulta haluttu. Harel, kuva 5.5 Osittainen oikeellisuus perustellaan osoittamalla, että algoritmiin sijoitetut väittämät ovat invariantteja eli tosia aina kun suoritus saavuttaa niiden sijainnin. Invarianttien verifiointi tapahtuu osoittamalla, että mikään siirtymä suorituksessa uuteen varmistuskohtaan ei tee siihen liittyvää väittämää epätodeksi. Ns. Floydin menetelmä (Robert Floyd 1967) 49
7 Esim. Merkkijonon peilikuva Toteutettava merkkijonon kääntävä funktio reverse, jolla reverse( c 1... c n ) = c n... c 1. Esim. reverse( kalakauppias ) = saippuakalak Merkitään tyhjää merkkijonoa symbolilla λ. Oletetaan merkkijonojen käsittelyyn funktiot head( c 1... c n ) = c 1 ja tail( c 1... c n ) = c 2... c n. Esim. head( kalakauppias ) = k ja tail( kalakauppias ) = alakauppias. Merkitään lisäksi merkkijonojen katenointia (Java-tyyliin) plus-merkillä: kala + kauppias = kalakauppias. 50
8 Funktio reverse(s) voidaan nyt toteuttaa allaolevalla algoritmilla (Harel kuva 5.6): X:= S; Y:= λ; while X λ do Y:= head(x) + Y; X:= tail(x); od; output Y; Intuitiivinen idea: Jonon S alusta siirretään yksitellen merkkejä alunperin tyhjän jonon Y alkuun; Y kasvaa oikealta vasemmalle Osoitetaan ensin algoritmin osittainen oikeellisuus. Lisätään algoritmiin (kommentteina) kolme väittämää (Harel kuva 5.7): 51
9 // I: S on merkkijono X:= S; Y:= λ; while X λ do// II: S = reverse(y) + X Y:= head(x) + Y; X:= tail(x); od; // III: Y = reverse(s) output Y; Väittämä II kuuluu suorituksessa siihen kohtaan jossa silmukkaehtoa testataan. Huom: väittämät I ja III muodostavat reverse-ongelman spesifikaation. Osoitetaan väittämien invarianssi tarkistamalla kaikki mahdolliset varmistuskohtien väliset siirtymät (I III, I II, II II ja II III) 52
10 Mahdolliset suoritukset ovat I III ja I II [II II ] III (Harel kuva 5.8); siten yksittäisten siirtymien verifiointi osoittaa, että algoritmin lopussa sen loppuväittämä on tosi. Huom: varmistuskohdat valittu siten, että niiden välisiin siirtymiin ei sisälly silmukoiden toistoja Hahmotellaan siirtymiin liittyvien väittämien invarianssitodistus: I III: while-silmukkaa ei suoriteta lainkaan, joten X=S=λ, ja siis pisteessä III Y=λ=reverse(S) I II: väite II pätee, koska X=S ja Y=λ=reverse(Y) 53
11 II II: Merkitään muuttujien arvoja ennen silmukan rungon suoritusta X 1 ja Y 1 sekä sen jälkeen X 2 ja Y 2. Ennen siirtymää siis S = reverse(y 1 ) + X 1. Jos S = c 1... c n, arvot ovat siis siirtymän alkuehdon mukaan jollain 1 k n seuraavat: Y 1 {}}{ X {}} 1 { c k 1... c 1 c k... c n Silmukan rungon suorituksen ansiosta Y 2 = head(x 1 ) + Y 1 ja X 2 = tail(x 1 ). Siirtymän jälkiehdon II, S = reverse(y 2 ) + X 2, nähdään siis olevan voimassa: Y 2 {}}{ X {}} 2 { c k... c 1 c k+1... c n Siirtymä II III tapahtuu kun X=λ, jolloin siis S=reverse(Y) eli Y=reverse(S). Olemme osoittaneet algoritmin osittaisen oikeellisuuden. 54
12 Terminoinnin osoittaminen Algoritmin terminointi voidaan osoittaa valitsemalla sopiva suorituksen edetessä pienenevä suure, ns. konvergentti, joka kuitenkaan ei voi pienetä loputtomasti. Kuten väittämät, konvergentti riippuu usein algoritmin muuttujista tai tietorakenteista. Esim. käsittelemättömien tietueiden lkm, lajittelualgoritmissa väärässä kohtaa jonoa olevien alkioiden lkm tms. Jatketaan reverse-algoritmin parissa osoittamalla sen terminointi. 55
13 Reverse-algoritmin suoritus voi olla päättymätön vain jos varmistuskohta II ohitetaan äärettömän monesti. Osoitetaan tämä mahdottomaksi valitsemalla konvergentti, joka pienenee jokaisella II-kohdan ohituksella. Merkkijonon X pituus selvästi pienenee jokaisessa silmukan toistossa. Toisaalta silmukan suoritus päättyy, kun X:n pituus = 0. algoritmi terminoi. Olemme osoittaneet algoritmin täyden oikeellisuuden. 56
14 Automaattinen verifiointi? Algoritmien huolellinen verifiointi käsin on selvästikin työlästä. Missä määrin tietokone voi auttaa verifioinnissa? Voiko algoritmien verifioimisen suorittaa algoritmisesti? Harel, kuva
15 Valitettavasti verifioinnin täydellinen automatisointi ei ole mahdollista. Varmistuskohtien valinta siten, että jokainen toistorakenteen suoritus kulkee jonkin varmistuskohdan kautta voidaan automatisoida. Väittämien ja konvergenttien valintaa ja niihin liittyviä todistuksia ei voida suorittaa algoritmisesti; sivuamme tätä myöhemmin. Ohjelmien oikeaksitodistamista tukevia todistusjärjestelmiä tutkitaan ja kehitetään. Ne toimivat vuorovaikutuksessa käyttäjän kanssa ja pystyvät huolehtimaan suurelta osin väittämien verifiointiin tarvittavasta työläästä kaavamanipuloinnista. Huom: väittämiä voi käyttää myös ohjelmien testauksen apuna: Esim. C-kielen assert-makro, joka tuottaa virheilmoituksen jos sen argumenttina oleva ehto on suorituksessa epätosi. 58
16 Rekursiivisen algoritmin verifiointi Esim. Hanoin tornit Moves(N,X,Y,Z): // X on lähtö-, Y kohde- ja Z apupylväs if N=1 then output siirrä + X + + Y; else Moves(N-1, X, Z, Y); output siirrä + X + + Y; Moves(N-1, Z, Y, X); fi; Rekursiivisten algoritmien verifiointi voi olla suhteellisen helppoa. 59
17 Terminointi: Palautetaan mieliin Moves-proseduurin (binäärinen) kutsupuu. Suoritus on päättymätön vain jos kutsupuu on ääretön. Parametri N pienenee jokaisessa rekursiivisessa kutsussa yhdellä Moves(N, X, Y, Z)-suorituksen kutsupuun syvyys on N, kun N on positiivinen kokonaisluku. Algoritmi siis terminoi. 60
18 Osittainen oikeellisuus voidaan osoittaa induktiolla. Osoitetaan, että kaikilla N 1 pätee P (N): Kutsun Moves(N, X, Y, Z) suoritus tuottaa jonon sallittuja siirtoja, joilla (sallitussa tilanteessa) N pienintä kiekkoa voidaan siirtää sauvasta X (mikäli ne ovat siinä) sauvaan Y eikä muihin kiekkoihin kosketa. Tapaus N = 1 on selvä: siirrä X Y on sallittu yhden kiekon siirto maalipylvääseen, joka koskee ainoastaan pienimpään kiekkoon. Induktioaskel N > 1: ks. Harel kuva 5.10 selityksineen. Terminointi + osittainen oikeellisuus täysi oikeellisuus. Huom: usein algoritmin verifiointi jo rinnan sen suunnittelun kanssa on hyödyllistä. (ns. as-you-go verification; esimerkkejä mahdollisesti harjoitustehtävinä.) 61
19 Logiikka ja laskenta (VAROITUS: Loput tästä luvusta ovat luennoijan omia päähänpinttymiä... ) Logiikka on jo Aristoteleen ajoista (300-luvulta e.a.a.) ollut oppi oikeasta päättelystä : menetelmä jolla kaikkien tunnustamista tosiasioista lähtien voidaan epäilijä vakuuttaa johtopäätöksestä tekemällä sarja vain sellaisia päättelyaskelia jotka kaikki myöntävät muodollisesti oikeiksi luvulle tultaessa kaivattiin matematiikalle varmaa perustaa. Päätettiin formalisoida looginen päättely. Päättely (argumentointi) alun perin kielellinen toimitus, ja siksi matemaattinen logiikkakin kielen huomioiva matematiikan haara. 62
20 Ongelma: Miten formalisoida päättelyaskel jonka kaikki myöntävät muodollisesti oikeaksi? Ratkaisu: Formalisoidaan (mekaanisen) laskettavuuden käsite eli algoritmit 1930-luvulla siis ennen tietokoneita annettiin matemaattinen vastine ikivanhalle intuitiiviselle käsitteelle. Lisätietoja, tuloksia ja tekniikoita Matematiikan laitoksen kurssilla Matemaattinen logiikka. Oma mielipide: logiikka nykyäänkin tärkeää tietojenkäsittelyssä, erityisesti tietokantateoriassa, tekoälyssä, ohjelmointikielten teoriassa ja ohjelmien oikeellisuustarkasteluissa. 63
21 Logiikka Loogisen objektikielen merkitysoppi (semantiikka) kertoo miten väitelauseiden totuus määritellään. Tarski: perusväitteiden yhdistelyoperaatiot (... ja..., kaikilla...,... ) puretaan induktiivisella määritelmällä metakieleen jossa perusväitteiden totuus nähdään helposti. Yks vain nainen maailmassa on kirjoitetaan tavallisella (ensimmäisen kertaluvun predikaatti)logiikalla x.nainen(x) y.nainen(y) y = x joka kääntyy metakielelle on alkio x joka on nainen ja jokaisella alkiolla y pätee, että jos y on nainen, niin y on sama alkio kuin x. Sitten vain katsotaan ulos ikkunasta! 64
22 (Logiikka, jatkoa) Mekaaniset päättelysäännöt premissi 1... premissi k [sivuehdot] johtopäätös valitaan totuuden säilyttäviksi: jos premissit ovat tosia [ja sivuehdot voimassa] niin johtopäätöskin on tosi. Olkoon jo todistettu jos φ niin ψ. Siitä voidaan päätellä jos on jokin x jolla φ niin ψ mikäli ei aiemmin oletettu että väitteiden φ ja ψ alkiot x olisivat samat: φ ψ [x ei ψ:ssä] ( xφ) ψ Päättelystä enemmän Matematiikan laitoksen kurssilla Logiikka I. Entä sääntöjoukon täydellisyys eli voidaanko kaikki tosiasiat myös todistaa? 1KL: kyllä. 65
23 (Logiikka, jatkoa) Maailma kuvataan teorialla: joukolla tosina pidettyjä loogisia lauseita eli aksioomia. Kysymykseen onko Ψ totta? vastataan 1. kääntämällä kysymys loogiseksi kaavaksi ψ, 2. yrittämällä todistaa käännös teoriasta, 3. ja vastaamalla kyllä jos todistus löytyy. Tarpeeksi vahvoissa logiikoissa (kuten 1KL) ei mikään todistuksenetsintäalgoritmi voi aina tietää milloin etsintä on tuomittu epäonnistumaan ja voidaan vastata ei. Täydellisillä teorioilla ei ole tätä epätietoisuusongelmaa. 66
24 Laskenta Lähtötiedot (kuten luvut) kirjoitetaan sovitulla syötesyntaksilla (kuten numerojonoina). [käännös logiikkaan] Laskulaite tekee toimiessaan yksikäsitteisesti määriteltyjä perusaskeleita. [päättelysäännöt] Perusaskelperhe on universaali jos niitä yhdistelemällä voi toteuttaa minkä tahansa laskentaprosessin. [sääntöjen täydellisyys] Vaaditun kuvauksen toteuttavien perusaskeljonojen (ääretön) perhe kuvataan (äärellisellä) ohjelmalla. [teoria] Annetuilla syötteiden kuvauksilla suoritetaan (ainoa) mahdollinen perusaskelten jono. [todistetaan teoriasta] Jos jono aina päättyy, on kyseessä algoritmi. [teorian täydellisyys] 67
25 (Laskenta, jatkoa) Jonon päättyessä luetaan vastaus ja käännetään sen syntaksi takaisin merkitykseensä. [on/ei] Logiikka kuvailee epäsuorasti miten maailman asiat ovat. Laskenta neuvoo miten tästä kuvauksesta voidaan selvittää se. algoritmi = logiikka + kontrolli Logiikkaa pidetään ohjelmointia deklaratiivisempana koska siinä esitetään vain mitä muttei miten. Deklaratiivisiin ohjelmointikieliin on lisätty piirteitä tietämyksen esittämisestä: esim. oliokielissä voidaan ilmaista suoraan määritelmät muotoa X on sellainen Y jolla... 68
26 3 tietä loogisesti perusteltuihin algoritmeihin 1. tie: väittämät Kalvoilla ohjelmoija liitti sopivia väittämiä ohjelmansa suorituspolkujen kannalta strategisiin kohtiin. Kalvoilla ohjelmoija liitti sopivia konvergentteja ohjelmansa silmukoihin takaamaan niistä poistumisen. Väittämä- ja konvergentti nuolet ovat väitelauseita muotoa jos ennen... niin jälkeen.... Esimerkiksi nuolessa II II puhuttiin muuttujien (X, Y ) arvoista ennen (X 1, Y 1 ) ja jälkeen (X 2, Y 2 ) tarkasteltavaa laskentapolun pätkää. Nämä väitelauseet voidaan muotoilla tavallisessa logiikassa ja (yrittää) todistaa formaalisti, tai varmistua niiden totuudesta semanttisin järkeilyin. 69
27 Näin toiminee jokainen ohjelmoija ellei muualla niin kommentoidessaan koodiaan. Algoritmeja voi suunnitella ja ohjelmia kirjoittaa myös toisin päin : ensin annetut alku- ja loppuväittämät, sitten niiden väliin sopiva puolivälin väittämä, ja induktiivisesti samoin alku- ja loppupuoliskon hajoita ja hallitse! Itse laskentaoperaatiot kirjoitetaan toteuttamaan ohjelman tilan muutos kahden peräkkäisen väittämän välillä. Silmukoihin ja rekursioon liitetään vastaavat pysähtymiskonvergentit. Lisätietoa kurssilla Algoritmien oikeellisuus ja johtaminen. 70
28 Kalvon 28 lomituslajitteluun voitaisiin päästä seuraavasti: Alku: syötteenä on järjestämätön lista. Loppu: tuloksena on sama lista järjestettynä. Alku: syötteenä on järjestämätön lista. Väli: syöte on jaettu kahteen järjestettyyn noin yhtä pitkään listaan. Loppu: tuloksena on sama lista järjestettynä. Alku: syötteenä on järjestämätön lista. Alkuväli: syöte on jaettu kahteen noin yhtä pitkään listaan. Väli: syöte on jaettu kahteen järjestettyyn noin yhtä pitkään listaan. Loppuväli: listat on lomitettu. Loppu: tuloksena on sama lista järjestettynä. 71
29 Alku: syötteenä on järjestämätön lista. Jaa syöte kahteen noin yhtä pitkään listaan. Alkuväli: syöte on jaettu kahteen noin yhtä pitkään listaan. Järjestä kumpikin lista rekursiivisesti. Väli: syöte on jaettu kahteen järjestettyyn noin yhtä pitkään listaan. Lomita järjestetut listat keskenään. Loppuväli: järjestetyt listat on lomitettu keskenään. Palauta lopputuloksena lomituksen tulos. Loppu: tuloksena on sama lista järjestettynä. Tämän tien (pää)ongelmana on, että laskentapolut jäävät loogisen tarkastelun ulkopuolelle. 72
30 2. tie: laskentapolkujen logiikka Edellinen ongelma voidaan ratkaista määrittelemällä logiikka ei vain alkioille vaan myös poluille. Tai kielellisesti, ottamalla logiikkaan aikaa koskevia sanoja kuten seuraavassa silmänräpäyksessä ( ), aina tästä eteenpäin ( ),... (Aikalogiikasta lisää Harel sivut ) Silloin se, että väittämän II totuus säilyy, voidaan kirjoittaa vaikkapa (II II) eli jokaisella suoritusaskeleella pätee, että jos II on nyt totta, niin se on totta myös tätä seuraavalla askeleella. 73
31 Silloin kalvojen esimerkkialgoritmin osittaisen oikeellisuuden teoria voisi olla vaikka: edellinen väittämän II säilyvyys ja alustuksen aksiooma I II. Niistä voidaan (yrittää) todistaa aikalogiikan omilla päättelysäännöillä tai nähdä semanttisesti osittainen oikeellisuus I (X = λ III) eli jos lähtöväittämä I taataan, niin toisesta askeleesta alkaen pätee, että jos silmukkaehto joskus laukeaa, niin sen jälkeen III pätee. Menestyksekäs äärellisissä järjestelmissä: mikroprosessoreissa, protokollissa,... Lisää kurssilla Automaattinen verifiointi. Tämän tien (pää)ongelmana on että deklaratiivinen ohjelmoija ei halua kirjoittaa (juuri) mitään laskentapoluista. 74
32 3. tie: loogiset ohjelmointikielet Tällä tiellä edellinen ongelma ratkaistaan määrittelemällä algoritmien kuvausnotaation ohjelmointikielen semantiikka laitetason sijasta päättelysääntöjen tapaan. Yksinkertaisen perusaskeleen idea pois: Logiikkaohjelmointikielissä kuten Prolog (Harel, sivut 70 71) askeleeksi tulee suoraan (rajoitettu) todistusaskel: a 1... a m b 1... b n a 1 b 1... b n a 2... a m Funktionaalisissa kielissä kuten Lisp (Harel, sivut 68 70) askeleeksi tulee monimutkaisemman lausekkeen sievennys: if true then e 1 else e 2 e 1 Lisätietoja kurssilla Symbolinen ohjelmointi. 75
33 Tavoitteena on helpottaa loogisesti oikeiden ohjelmien laadintaa ja todistamista lyhentämällä välimatkaa ohjelmakoodin ja ajattelun välillä. Kalvon 52 esimerkkialgoritmi voitaisiin tällä tiellä johtaa seuraavasti (vain intuitio): Annetun merkkijonon S käännös reverse(s) voitaisiin laskea kutsulla rev(s, λ) jos meillä olisi apufunktio rev(x, Y ) = reverse(x) + Y. Johdetaan apufunktio induktiolla sen ensimmäisen (merkkijono)parametrin X suhteen. Ei-rekursiivisessa perustapauksessa X = λ vastaus on Y. 76
34 Rekursiivisessa tapauksessa X λ on olemassa lyhyempi jono tail(x) ja merkki head(x). Meillä on siis lupa käyttää lauseketta rev(tail(x), head(x) + Y ) koska se on määritelty induktiivisesti. Se on myös oikea valinta, sillä sen arvo on induktiivisesti reverse(tail(x)) + head(x) + Y. Koska head(x) on merkki, tämä on eli haettu reverse(head(x) + tail(x)) + Y reverse(x) + Y. 77
35 Yhteenvetona algoritmiksi saadaan siis function reverse(s)=rev(s,λ) missä function rev(x,y )= if X = λ then Y else rev(tail(x),head(x)+y ) end if. Algoritmin tekeminen ja oikeaksi todistaminen kulkivat siis käsi kädessä. Ohjelmoijan vastuulle jäi etenemisstrategian valinta. Tulos on (syntaktisin muutoksin) valmis ohjelma funktionaalisella kielellä. 78
36 Lähestymme konstruktiivista matematiikkaa, jossa olemassaoloväitteen on olemassa sellainen x jolla P (x) saa todistaa vain näyttämällä jonkin sellaisen sopivan x. (Ei siis esimerkiksi ristiriidalla jos sellaista x ei olisi, niin siitä seuraisi 0 = 1.) Väitteen jokaisella x on olemassa jokin y jolla Q(x, y) todistus on silloin sellainen funktio f joka poimii kullekin x jonkin sopivan y = f(x) jolla Q(x, f(x)). Myös tämä f on näytettävä lausekkeena (eikä vain parijoukkona) eli annettava sille algoritmi! Silloin ongelman spesifikaatiota vastaavan olemassaoloväitteen todistus on sen mukainen algoritmi. 79
Algoritmisen tietojenkäsittelyn perusteet (2 ov)
581378-4 Algoritmisen tietojenkäsittelyn perusteet (2 ov) Luentorunko, syyslukukausi 2000 Matti Nykänen Helsingin yliopisto Tietojenkäsittelytieteen laitos (Perustuu Pekka Kilpeläisen luentoihin syyslukukaudella
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,
4.3. Matemaattinen induktio
4.3. Matemaattinen induktio Matemaattinen induktio: Deduktion laji Soveltuu, kun ominaisuus on osoitettava olevan voimassa luonnollisilla luvuilla. Suppea muoto P(n) : Ominaisuus, joka joka riippuu luvusta
Todistusmenetelmiä Miksi pitää todistaa?
Todistusmenetelmiä Miksi pitää todistaa? LUKUTEORIA JA TO- DISTAMINEN, MAA11 Todistus on looginen päättelyketju, jossa oletuksista, määritelmistä, aksioomeista sekä aiemmin todistetuista tuloksista lähtien
Tietojenkäsittelyteorian alkeet, osa 2
TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 12. syyskuuta 2016 Sisällys vs Ovat eri asioita! Älä sekoita niitä. Funktiot Funktio f luokasta A luokkaan B, merkitään
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
b) Määritä myös seuraavat joukot ja anna kussakin tapauksessa lyhyt sanallinen perustelu.
Johdatus yliopistomatematiikkaan Helsingin yliopisto, matematiikan ja tilastotieteen laitos Kurssikoe 23.10.2017 Ohjeita: Vastaa kaikkiin tehtäviin. Ratkaisut voi kirjoittaa samalle konseptiarkille, jos
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ää pysähtymisaiheisia ongelmia
Lisää pysähtymisaiheisia ongelmia Lause: Pysähtymättömyysongelma H missä H = { w111x w validi koodi, M w ei pysähdy syötteellä x } ei ole rekursiivisesti lueteltava. Todistus: Pysähtymisongelman komplementti
Vaihtoehtoinen tapa määritellä funktioita f : N R on
Rekursio Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on käyttää rekursiota: 1 (Alkuarvot) Ilmoitetaan funktion arvot
Rekursio. Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on
Rekursio Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on käyttää rekursiota: Rekursio Funktio f : N R määritellään yleensä
Propositiot: Propositiot ovat väitelauseita. Totuusfunktiot antavat niille totuusarvon T tai E.
Propositiot: Propositiot ovat väitelauseita. Totuusfunktiot antavat niille totuusarvon T tai E. Perusaksioomat: Laki 1: Kukin totuusfunktio antaa kullekin propositiolle totuusarvoksi joko toden T tai epätoden
Insinöörimatematiikka A
Insinöörimatematiikka A Demonstraatio 3, 3.9.04 Tehtävissä 4 tulee käyttää Gentzenin järjestelmää kaavojen johtamiseen. Johda kaava φ (φ ) tyhjästä oletusjoukosta. ) φ ) φ φ 3) φ 4) φ (E ) (E ) (I, ) (I,
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,
Insinöörimatematiikka A
Insinöörimatematiikka A Mika Hirvensalo mikhirve@utu.fi Matematiikan ja tilastotieteen laitos Turun yliopisto 2018 Mika Hirvensalo mikhirve@utu.fi Luentoruudut 3 1 of 23 Kertausta Määritelmä Predikaattilogiikan
TIEA341 Funktio-ohjelmointi 1, kevät 2008
TIEA341 Funktio-ohjelmointi 1, kevät 2008 Luento 10 Todistamisesta Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 21. tammikuuta 2008 Samuuden todistaminen usein onnistuu ihan laskemalla
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
Jokaisen parittoman kokonaisluvun toinen potenssi on pariton.
3 Todistustekniikkaa 3.1 Väitteen kumoaminen vastaesimerkillä Monissa tilanteissa kohdataan väitteitä, jotka koskevat esimerkiksi kaikkia kokonaislukuja, kaikkia reaalilukuja tai kaikkia joukkoja. Esimerkkejä
Johdatus lukuteoriaan Harjoitus 11 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma
Johdatus lukuteoriaan Harjoitus syksy 008 Eemeli Blåsten Ratkaisuehdotelma Tehtävä Todista ketjumurtoluvun peräkkäisille konvergenteille kaava ( ) n induktiolla käyttämällä jonojen ( ) ja ( ) rekursiokaavaa.
DFA:n käyttäytyminen ja säännölliset kielet
säännölliset kielet TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 9. marraskuuta 2015 Sisällys toiminta formaalisti Olkoon M = (Q, Σ, δ, q 0, F) deterministinen
Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.
Tehtävä. Tämä tehtävä on aineistotehtävä, jossa esitetään ensin tehtävän teoria. Sen jälkeen esitetään neljä kysymystä, joissa tätä teoriaa pitää soveltaa. Mitään aikaisempaa tehtävän aihepiirin tuntemusta
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
Täydentäviä muistiinpanoja laskennan rajoista
Täydentäviä muistiinpanoja laskennan rajoista Antti-Juhani Kaijanaho 10. joulukuuta 2015 1 Diagonaalikieli Diagonaalikieli on D = { k {0, 1} k L(M k ) }. Lause 1. Päätösongelma Onko k {0, 1} sellaisen
Diskreetin matematiikan perusteet Laskuharjoitus 1 / vko 8
Diskreetin matematiikan perusteet Laskuharjoitus 1 / vko 8 Tuntitehtävät 1-2 lasketaan alkuviikon harjoituksissa ja tuntitehtävät 5- loppuviikon harjoituksissa. Kotitehtävät 3-4 tarkastetaan loppuviikon
Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen.
Lause: Tyhjyysongelma ei ole osittain ratkeava; ts. kieli ei ole rekursiivisesti lueteltava. L e = { w { 0, 1 } L(M w ) = } Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia,
ITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat
815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/
1. Osoita, että joukon X osajoukoille A ja B on voimassa toinen ns. de Morganin laki (A B) = A B.
HY / Avoin yliopisto Johdatus yliopistomatematiikkaan, kesä 2015 Harjoitus 3 Ratkaisuehdotuksia Tehtäväsarja I Seuraavissa tehtävissä harjoitellaan muun muassa kahden joukon osoittamista samaksi sekä joukon
1. Universaaleja laskennan malleja
1. Universaaleja laskennan malleja Laskenta datan käsittely annettuja sääntöjä täsmällisesti seuraamalla kahden kokonaisluvun kertolasku tietokoneella, tai kynällä ja paperilla: selvästi laskentaa entä
Approbatur 3, demo 1, ratkaisut A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat.
Approbatur 3, demo 1, ratkaisut 1.1. A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat. Käydään kaikki vaihtoehdot läpi. Jos A on rehti, niin B on retku, koska muuten
Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma
Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten Ratkaisuehdotelma Tehtävä 1 1. Etsi lukujen 4655 ja 12075 suurin yhteinen tekijä ja lausu se kyseisten lukujen lineaarikombinaationa ilman laskimen
11. Javan toistorakenteet 11.1
11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin
Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:
Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen: S A S B Samaan jäsennyspuuhun päästään myös johdolla S AB Ab ab: S A S B Yhteen jäsennyspuuhun liittyy aina tasan yksi vasen
on rekursiivisesti numeroituva, mutta ei rekursiivinen.
6.5 Turingin koneiden pysähtymisongelma Lause 6.9 Kieli H = { M pysähtyy syötteellä w} on rekursiivisesti numeroituva, mutta ei rekursiivinen. Todistus. Todetaan ensin, että kieli H on rekursiivisesti
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
Laskennan teoria
581336-0 Laskennan teoria luennot syyslukukaudella 2003 Jyrki Kivinen tietojenkäsittelytieteen laudatur-kurssi, 3 ov pakollinen tietojenkäsittelytieteen suuntautumisvaihtoehdossa esitiedot käytännössä
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
815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset
815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/
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
Matematiikassa väitelauseet ovat usein muotoa: jos P on totta, niin Q on totta.
Väitelause Matematiikassa väitelauseet ovat usein muotoa: jos P on totta, niin Q on totta. Tässä P:tä kutsutaan oletukseksi ja Q:ta väitteeksi. Jos yllä oleva väitelause on totta, sanotaan, että P:stä
Ohjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 2: SICP kohdat 22.2.3 Riku Saikkonen 2. 11. 2010 Sisältö 1 Linkitetyt listat 2 Listaoperaatioita 3 Listarakenteet 4 Gambit-C:n Scheme-debuggeri Linkitetyt
Predikaattilogiikkaa
Predikaattilogiikkaa UKUTEORIA JA TO- DISTAMINEN, MAA11 Kertausta ogiikan tehtävä: ogiikka tutkii ajattelun ja päättelyn sääntöjä ja muodollisten päättelyiden oikeellisuutta, ja pyrkii erottamaan oikeat
13. Loogiset operaatiot 13.1
13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.
Miten osoitetaan joukot samoiksi?
Miten osoitetaan joukot samoiksi? Määritelmä 1 Joukot A ja B ovat samat, jos A B ja B A. Tällöin merkitään A = B. Kun todistetaan, että A = B, on päättelyssä kaksi vaihetta: (i) osoitetaan, että A B, ts.
ICS-C2000 Tietojenkäsittelyteoria Kevät 2016
ICS-C2000 Tietojenkäsittelyteoria Kevät 206 Kierros 0, 2. 24. maaliskuuta Huom! Perjantaina 25. maaliskuuta ei ole laskareita (pitkäperjantai), käykää vapaasti valitsemassanne ryhmässä aiemmin viikolla.
Matematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 4 Jatkuvuus Jatkuvan funktion määritelmä Tarkastellaan funktiota f x) jossakin tietyssä pisteessä x 0. Tämä funktio on tässä pisteessä joko jatkuva tai epäjatkuva. Jatkuvuuden
TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016
TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 8. syyskuuta 2016 Sisällys a https://tim.jyu.fi/view/kurssit/tie/ tiea241/2016/videoiden%20hakemisto Matemaattisen
Tietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin
Matematiikan johdantokurssi, syksy 2016 Harjoitus 11, ratkaisuista
Matematiikan johdantokurssi, syksy 06 Harjoitus, ratkaisuista. Valitse seuraaville säännöille mahdollisimman laajat lähtöjoukot ja sopivat maalijoukot niin, että syntyy kahden muuttujan funktiot (ks. monisteen
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
Luonnollisen päättelyn luotettavuus
Luonnollisen päättelyn luotettavuus Luotettavuuden todistamiseksi määrittelemme täsmällisesti, milloin merkkijono on deduktio. Tässä ei ole sisällytetty päättelysääntöihin iteraatiosääntöä, koska sitä
TIEA341 Funktio-ohjelmointi 1, kevät 2008
TIEA34 Funktio-ohjelmointi, kevät 2008 Luento 3 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 2. tammikuuta 2008 Ydin-Haskell: Syntaksi Lausekkeita (e) ovat: nimettömät funktiot: \x
2 Sanoja järjestävän funktion ohjelmoiminen
1 Tämän dokumentin tarkoitus Tämä dokumentti ei kuulu millään tavoin tenttialueeseen, enkä ota vastuuta sen lukemisen aiheuttamista vahingoista. Tässä dokumentissa esitetään esimerkin kautta, miten matematiikan
TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut
TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut Pisteytys on ilmoitettu välikoevaihtoehdon mukaan (joko tehtävät 1, 2 ja 3 välikokeen 1 uusintana tai tehtävät 4, 5 ja 6 välikokeen 2 uusintana).
LOGIIKKA johdantoa
LOGIIKKA johdantoa LUKUTEORIA JA TO- DISTAMINEN, MAA11 Logiikan tehtävä: Logiikka tutkii ajattelun ja päättelyn sääntöjä ja muodollisten päättelyiden oikeellisuutta, ja pyrkii erottamaan oikeat päättelyt
Matemaattisten työvälineiden täydentäviä muistiinpanoja
Matemaattisten työvälineiden täydentäviä muistiinpanoja Antti-Juhani Kaijanaho 7 maaliskuuta 0 Deduktiivinen ja induktiivinen päättely Deduktiivisessa päättelyssä johtopäätös seuraa aukottomasti premisseistä
T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )
T-79144 Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet 11-22) 26 29102004 1 Ilmaise seuraavat lauseet predikaattilogiikalla: a) Jokin porteista on viallinen
Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä
Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.
Taulumenetelmä modaalilogiikalle K
/ Kevät 2004 ML-6 1 Taulumenetelmä modaalilogiikalle On vaikeaa löytää Hilbert-tyylisiä todistuksia: Käytössä Modus Ponens -sääntö: jotta voidaan johtaa Q, täytyy johtaa P ja P Q. Mutta mikä on sopiva
missä on myös käytetty monisteen kaavaa 12. Pistä perustelut kohdilleen!
Matematiikan johdantokurssi Kertausharjoitustehtävien ratkaisuja/vastauksia/vihjeitä. Osoita todeksi logiikan lauseille seuraava: P Q (P Q). Ratkaisuohje. Väite tarkoittaa, että johdetut lauseet P Q ja
Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi
Imperatiivisen ohjelmoinnin peruskäsitteet muuttuja muuttujissa oleva data voi olla yksinkertaista eli primitiivistä (esim. luvut ja merkit) tai rakenteista jolloin puhutaan tietorakenteista. puhuttaessa
Matematiikan tukikurssi, kurssikerta 5
Matematiikan tukikurssi, kurssikerta 5 1 Jonoista Matematiikassa jono (x n ) on yksinkertaisesti järjestetty, päättymätön sarja numeroita Esimerkiksi (1,, 3, 4, 5 ) on jono Jonon i:ttä jäsentä merkitään
Johdatus matematiikkaan
Johdatus matematiikkaan Luento 4 Mikko Salo 4.9.2017 Sisältö 1. Rationaali ja irrationaaliluvut 2. Induktiotodistus Rationaaliluvut Määritelmä Reaaliluku x on rationaaliluku, jos x = m n kokonaisluvuille
Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna
Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna. q 0 x solmuina laskennan mahdolliset tilanteet juurena alkutilanne lehtinä tilanteet joista ei siirtymää,
IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit
IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,
Luonnollisten lukujen ja kokonaislukujen määritteleminen
Luonnollisten lukujen ja kokonaislukujen määritteleminen LuK-tutkielma Jussi Piippo Matemaattisten tieteiden yksikkö Oulun yliopisto Kevät 2017 Sisältö 1 Johdanto 2 2 Esitietoja 3 2.1 Joukko-opin perusaksioomat...................
FI3 Tiedon ja todellisuuden filosofia LOGIIKKA. 1.1 Logiikan ymmärtämiseksi on tärkeää osata erottaa muoto ja sisältö toisistaan:
LOGIIKKA 1 Mitä logiikka on? päättelyn tiede o oppi muodollisesti pätevästä päättelystä 1.1 Logiikan ymmärtämiseksi on tärkeää osata erottaa muoto ja sisältö toisistaan: sisältö, merkitys: onko jokin premissi
ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014
18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,
Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat
Sisällys 12. Javan toistorakenteet Ylstä toistorakentsta. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirhtä. Silmukan rajat asetettu kierroksen
Sekalaiset tehtävät, 11. syyskuuta 2005, sivu 1 / 13. Tehtäviä
Sekalaiset tehtävät, 11. syyskuuta 005, sivu 1 / 13 Tehtäviä Tehtävä 1. Johda toiseen asteen yhtälön ax + bx + c = 0, a 0 ratkaisukaava. Tehtävä. Määrittele joukon A R pienin yläraja sup A ja suurin alaraja
Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.
Sisällys 3. Pseudokoodi Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: Valinta if- ja if--rakenteilla. oisto while-, do-while- ja for-rakenteilla. 3.1 3.2 Johdanto
Johdatus diskreettiin matematiikkaan Harjoitus 5, Ratkaise rekursioyhtälö
Johdatus diskreettiin matematiikkaan Harjoitus 5, 14.10.2015 1. Ratkaise rekursioyhtälö x n+4 2x n+2 + x n 16( 1) n, n N, alkuarvoilla x 1 2, x 2 14, x 3 18 ja x 4 42. Ratkaisu. Vastaavan homogeenisen
MS-A0402 Diskreetin matematiikan perusteet
MS-A0402 Diskreetin matematiikan perusteet Osa 1: Joukko-oppi ja logiikka Riikka Kangaslampi 2017 Matematiikan ja systeemianalyysin laitos Aalto-yliopisto Kiitokset Nämä luentokalvot perustuvat Gustaf
Matematiikan tukikurssi, kurssikerta 2
Matematiikan tukikurssi kurssikerta 1 Relaatioista Oletetaan kaksi alkiota a ja b. Näistä kumpikin kuuluu johonkin tiettyyn joukkoon mahdollisesti ne kuuluvat eri joukkoihin; merkitään a A ja b B. Voidaan
Esitetään tehtävälle kaksi hieman erilaista ratkaisua. Ratkaisutapa 1. Lähdetään sieventämään epäyhtälön vasenta puolta:
MATP00 Johdatus matematiikkaan Ylimääräisten tehtävien ratkaisuehdotuksia. Osoita, että 00 002 < 000 000. Esitetään tehtävälle kaksi hieman erilaista ratkaisua. Ratkaisutapa. Lähdetään sieventämään epäyhtälön
Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)
Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,
Johdatus diskreettiin matematiikkaan (syksy 2009) Harjoitus 3, ratkaisuja Janne Korhonen
Johdatus diskreettiin matematiikkaan (syksy 009) Harjoitus 3, ratkaisuja Janne Korhonen 1. Väite: Funktio f : [, ) [1, ), missä on bijektio. f(x) = x + 4x + 5, Todistus: Luentomateriaalissa todistettujen
Tietotekniikan valintakoe
Jyväskylän yliopisto Tietotekniikan laitos Tietotekniikan valintakoe 2..22 Vastaa kahteen seuraavista kolmesta tehtävästä. Kukin tehtävä arvostellaan kokonaislukuasteikolla - 25. Jos vastaat useampaan
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print
Rekursiiviset palautukset [HMU 9.3.1]
Rekursiiviset palautukset [HMU 9.3.1] Yleisesti sanomme, että ongelma P voidaan palauttaa ongelmaan Q, jos mistä tahansa ongelmalle Q annetusta ratkaisualgoritmista voidaan jotenkin muodostaa ongelmalle
4 Matemaattinen induktio
4 Matemaattinen induktio Joidenkin väitteiden todistamiseksi pitää näyttää, että kaikilla luonnollisilla luvuilla on jokin ominaisuus P. Esimerkkejä tällaisista väitteistä ovat vaikkapa seuraavat: kaikilla
1 Määrittelyjä ja aputuloksia
1 Määrittelyjä ja aputuloksia 1.1 Supremum ja infimum Aluksi kerrataan pienimmän ylärajan (supremum) ja suurimman alarajan (infimum) perusominaisuuksia ja esitetään muutamia myöhemmissä todistuksissa tarvittavia
2.1. Tehtävänä on osoittaa induktiolla, että kaikille n N pätee n = 1 n(n + 1). (1)
Approbatur 3, demo, ratkaisut Sovitaan, että 0 ei ole luonnollinen luku. Tällöin oletusta n 0 ei tarvitse toistaa alla olevissa ratkaisuissa. Se, pidetäänkö nollaa luonnollisena lukuna vai ei, vaihtelee
FORMAALI SYSTEEMI (in Nutshell): aakkosto: alkeismerkkien joukko kieliopin määräämä syntaksi: sallittujen merkkijonojen rakenne, formaali kuvaus
FORMAALI SYSTEEMI (in Nutshell): Formaali kieli: aakkosto: alkeismerkkien joukko kieliopin määräämä syntaksi: sallittujen merkkijonojen rakenne, formaali kuvaus esim. SSM:n tai EBNF:n avulla Semantiikka:
Johdatus matemaattiseen päättelyyn
Johdatus matemaattiseen päättelyyn Maarit Järvenpää Oulun yliopisto Matemaattisten tieteiden laitos Syyslukukausi 2015 1 Merkintöjä 2 Todistamisesta 2 3 Joukko-oppia Tässä luvussa tarkastellaan joukko-opin
Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9
Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9 Tuntitehtävät 9-10 lasketaan alkuviikon harjoituksissa ja tuntitehtävät 13-14 loppuviikon harjoituksissa. Kotitehtävät 11-12 tarkastetaan loppuviikon
Injektio (1/3) Funktio f on injektio, joss. f (x 1 ) = f (x 2 ) x 1 = x 2 x 1, x 2 D(f )
Injektio (1/3) Määritelmä Funktio f on injektio, joss f (x 1 ) = f (x 2 ) x 1 = x 2 x 1, x 2 D(f ) Seurauksia: Jatkuva injektio on siis aina joko aidosti kasvava tai aidosti vähenevä Injektiolla on enintään
811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2016-2017 4. Joukot, relaatiot ja funktiot Osa 3: Funktiot 4.3 Funktiot Olkoot A ja B joukkoja. Funktio joukosta A joukkoon B on sääntö, joka liittää yksikäsitteisesti määrätyn
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
M = (Q, Σ, Γ, δ, q 0, q acc, q rej )
6. LASKETTAVUUSTEORIAA Churchin Turingin teesi: Mielivaltainen (riittävän vahva) laskulaite Turingin kone. Laskettavuusteoria: Tarkastellaan mitä Turingin koneilla voi ja erityisesti mitä ei voi laskea.
Säännöllisen kielen tunnistavat Turingin koneet
186 Säännöllisen kielen tunnistavat Turingin koneet Myös säännöllisen kielen hyväksyvien Turingin koneiden tunnistaminen voidaan osoittaa ratkeamattomaksi palauttamalla universaalikielen tunnistaminen
Tenttiin valmentavia harjoituksia
Tenttiin valmentavia harjoituksia Alla olevissa harjoituksissa suluissa oleva sivunumero viittaa Juha Partasen kurssimonisteen siihen sivuun, jolta löytyy apua tehtävän ratkaisuun. Funktiot Harjoitus.
Matematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 1 Määrittelyjoukoista Tarkastellaan funktiota, jonka määrittelevä yhtälö on f(x) = x. Jos funktion lähtöjoukoksi määrittelee vaikkapa suljetun välin [0, 1], on funktio
Cantorin joukon suoristuvuus tasossa
Cantorin joukon suoristuvuus tasossa LuK-tutkielma Miika Savolainen 2380207 Matemaattisten tieteiden laitos Oulun yliopisto Syksy 2016 Sisältö Johdanto 2 1 Cantorin joukon esittely 2 2 Suoristuvuus ja
Logiikka 1/5 Sisältö ESITIEDOT:
Logiikka 1/5 Sisältö Formaali logiikka Luonnollinen logiikka muodostaa perustan arkielämän päättelyille. Sen käyttö on intuitiivista ja usein tiedostamatonta. Mikäli logiikka halutaan täsmällistää esimerkiksi
on Abelin ryhmä kertolaskun suhteen. Tämän joukon alkioiden lukumäärää merkitään
5. Primitiivinen alkio 5.1. Täydennystä lukuteoriaan. Olkoon n Z, n 2. Palautettakoon mieleen, että kokonaislukujen jäännösluokkarenkaan kääntyvien alkioiden muodostama osajoukko Z n := {x Z n x on kääntyvä}
Ohjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Keskeneräinen luento 3: Listat (mm. SICP 22.2.3) Riku Saikkonen 31. 10. 2011 Sisältö 1 Linkitetyt listat 2 Linkitetyt listat (SICP 2.1.1, 2.2.1) funktionaalinen
Matematiikan peruskurssi 2
Matematiikan peruskurssi Tentti, 9..06 Tentin kesto: h. Sallitut apuvälineet: kaavakokoelma ja laskin, joka ei kykene graaseen/symboliseen laskentaan Vastaa seuraavista viidestä tehtävästä neljään. Saat
Algoritmi on periaatteellisella tasolla seuraava:
Algoritmi on periaatteellisella tasolla seuraava: Dijkstra(V, E, l, v 0 ): S := { v 0 } D[v 0 ] := 0 for v V S do D[v] := l(v 0, v) end for while S V do valitse v V S jolle D[v] on minimaalinen S := S
Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä
Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,