Aloitus. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016 TIETOTEKNIIKAN LAITOS. Aloitus. Meta.

Samankaltaiset tiedostot
Aloitus. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 2. marraskuuta 2015 TIETOTEKNIIKAN LAITOS. Aloitus. Meta.

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016

Aloitus. TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 14. maaliskuuta 2011 TIETOTEKNIIKAN LAITOS. Aloitus.

Aloitus. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 20. toukokuuta 2013 TIETOTEKNIIKAN LAITOS. Aloitus. Meta.

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

Säännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. lokakuuta 2016

Chomskyn hierarkia ja yhteysherkät kieliopit

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 19. syyskuuta 2016

Pinoautomaatit. Pois kontekstittomuudesta

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit.

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 8. maaliskuuta 2012

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 20. lokakuuta 2016

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 6. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Rajoittamattomat kieliopit (Unrestricted Grammars)

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Asialista. CLT131: Tekstityökalut 2010, kolmas luento. Laskuharjoitusaikataulut. Harjoituksissa havaitut virheet. Käytännön asiat/kertaus

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 2. helmikuuta 2012

Laskennan teoria

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

Tietojenkäsittelyteorian alkeet, osa 2

Turingin koneet. Sisällys. Aluksi. Turingin koneet. Turingin teesi. Aluksi. Turingin koneet. Turingin teesi

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. joulukuuta 2015

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

Korpusten käsittely clt131, P Luento 5

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016

Korpusten käsittely clt131, P Luento 3

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Tehtävä 2: Säännölliset lausekkeet

CLT131: Tekstityökalut 2010, kolmas luento

Attribuuttikieliopit

Luento 5. Timo Savola. 28. huhtikuuta 2006

11.4. Context-free kielet 1 / 17

Rajoittamattomat kieliopit

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

Laskennan teoria

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. lokakuuta 2016

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 10. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

(0 1) 010(0 1) Koska kieli on yksinkertainen, muodostetaan sen tunnistava epädeterministinen q 0 q 1 q 2 q3

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 26. tammikuuta 2012

Laskennan rajoja. Sisällys. Meta. Palataan torstaihin. Ratkeavuus. Meta. Universaalikoneet. Palataan torstaihin. Ratkeavuus.

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. kesäkuuta 2013

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012

Täydentäviä muistiinpanoja kontekstittomien kielioppien jäsentämisestä

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 16. toukokuuta 2011

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

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016

M =(K, Σ, Γ,, s, F ) Σ ={a, b} Γ ={c, d} = {( (s, a, e), (s, cd) ), ( (s, e, e), (f, e) ), (f, e, d), (f, e)

Yhteydettömän kieliopin jäsennysongelma

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 6. maaliskuuta 2012 TIETOTEKNIIKAN LAITOS.

Chomskyn hierarkia. tyyppi 0 on juuri esitelty (ja esitellään kohta lisää) tyypit 2 ja 3 kurssilla Ohjelmoinnin ja laskennan perusmallit

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. lokakuuta 2016

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

Kyselytutkimus opiskelijoiden ajankäytöstä tietojenkäsittelyteorian peruskurssilla

Kieli merkitys ja logiikka. 2: Helpot ja monimutkaiset. Luento 2. Monimutkaiset ongelmat. Monimutkaiset ongelmat

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 26. kesäkuuta 2013

Tietotekniikan valintakoe

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 10. kesäkuuta 2013

CLT131: Tekstityökalut 2011, kuudes luento

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 20. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS.

Datatähti 2019 alku. task type time limit memory limit. A Kolikot standard 1.00 s 512 MB. B Leimasin standard 1.00 s 512 MB

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. marraskuuta 2015

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

LR-jäsennys. Antti-Juhani Kaijanaho. 3. lokakuuta 2016

Säännöllisten kielten sulkeumaominaisuudet

Muodolliset kieliopit

DFA:n käyttäytyminen ja säännölliset kielet

Äärellisten automaattien ja säännöllisten lausekkeiden minimointi

Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Laskennan mallit

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

TIEA341 Funktio-ohjelmointi 1, kevät 2008

MS-A0402 Diskreetin matematiikan perusteet

8. Kieliopit ja kielet

Ctl160 Tekstikorpusten tietojenkäsittely p.1/28

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

1 Kurssin asema opetuksessa

S BAB ABA A aas bba B bbs c

KESKI-SUOMEN MAAKUNNAN JA LÄHIKUNTIEN LUKIOIDEN TIETOTEKNIIKAN II KILPAILU

Johdatus matematiikkaan


TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 22. toukokuuta 2013

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 16. helmikuuta 2012

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

T Syksy 2006 Tietojenkäsittelyteorian perusteet T Harjoitus 7 Demonstraatiotehtävien ratkaisut

1. Universaaleja laskennan malleja

5.3 Ratkeavia ongelmia

TIEA341 Funktio-ohjelmointi 1, kevät 2008

TIEA341 Funktio-ohjelmointi 1, kevät 2008

jäsennyksestä TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 29. syyskuuta 2016 TIETOTEKNIIKAN LAITOS Kontekstittomien kielioppien

Matemaattisten työvälineiden täydentäviä muistiinpanoja

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Tervetuloa opiskelemaan DIGITAALI- TEKNIIKKAA! Digitaalitekniikan matematiikka Luku 0 Sivu 1 (9)

Transkriptio:

TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 9. lokakuuta 2016

Sisällys

Opettajat Vastuuopettaja (luennot, ohjaukset, tehtäväpalaute) Antti-Juhani Kaijanaho, antti-juhani.kaijanaho@jyu.fi yliopistonopettaja, filosofian tohtori väitöskirja Evidence-based programming language design: a philosophical and methodological exploration (2015) Debian-kehittäjä 1999 2014 teen samalla yliopistopedagogisia opintoja, jotka saattavat osin vaikuttaa kurssin kulkuun Tuntiopettaja (ohjaukset, tehtäväpalaute) Pyry Kotilainen, pyry.j.p.kotilainen@student.jyu.fi

Kirjallisuutta Luentojen pohjana: Michael Sipser: Introduction to the Theory of Computation. Second Edition, International Edition. Thompson 2006. John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman: Introduction to Automata Theory, Languages, and Computation. Third Edition, Pearson International Edition. Addison Wesley, 2007. Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman: Compilers Principles, Techniques, & Tools. Second Edition. Addison Wesley, 2007. Täydentävää lukemista Pekka Orponen: Laskennan teoria. Luentomoniste. http://users.ics.tkk.fi/orponen/ lectures/lte.pdf Scott Aaronson: Quantum Computing Since Democritus. Cambridge University Press, 2013. Luvut 1 4.

Neuvoja opintoihin tee joka päivä ainakin vähän uskalla mennä epämukavuusalueelle en osaa ei ole syy keskeyttää; se on syy jatkaa opiskelemista pyydä apua tarvittaessa, (mm.) siitä meille maksetaan

Esitietovaatimuksista Odotan, että kykenet omatoimisesti oppimaan uusien ohjelmien ja teknisten työkalujen käytön laatimaan yksinkertaisia toimivia tietokoneohjelmia käyttämään ohjelmointikielten peruskirjastoissa tarjottavia perustietorakenteita (merkkijonot, taulukot, joukot, mapit) Kurssilla opiskelua helpottaa, jos kykenet lukemaan logiikan ja joukko-opin kaavoja laatimaan yksinkertaisia matemaattisia todistuksia jollakin matematiikan alalla

Cognitive apprenticeship suom. (virheellisesti) kisällioppiminen kurssilla osin käytössä ensimmäistä kertaa antakaa palautetta! opetusmetodit metodi englanniksi tällä kurssilla mallinnus modeling luennoilla (osan aikaa) valmennus coaching ohjaukset ja Slack apupyörät scaffolding harjoitustehtävien rakenne (osin), ohjaukset ja Slack itsenäistäminen fading harjoitustehtävien rakenne (osin), harjoitustyö, välikokeet, tentit

Kurssin käytännöt Kurssin sivuilla http://users.jyu.fi/~antkaij/opetus/auki/2016/

Tehtävien tulkinnasta Harjoitustehtävät, tenttikysymykset ym. Joskus tehtävät saattavat olla moniselitteisiä. Seuraavanlaiset tulkinnat eivät todennäköisesti ole oikeita: tulkinta tekee tehtävästä liian helpon tulkinnan johdosta tehtävän tekemisessä ei tarvita opiskeltavana tai tentittävänä olevia tietoja tai taitoja Jos joudut valitsemaan useasta tulkinnasta etkä ole varma, mikä niistä on oikein: Jos mahdollista, kysy opettajalta. välikokeessa tai tentissä ei sallittua Valitse jokin tulkinta ja selosta se vastauksessasi.

engl. regular expression käytössä myös lyhenteet regex ja RE suomeksi periaatteessa säännöllinen lauseke suomennosta ei tavallisesti käytetä tällä kurssilla tarkoittaa erästä tiettyä regexpien varianttia, johon palataan myöhemmin tapa kuvata merkkijonon tunnistus- tai hakutehtäviä toteutus löytyy useimmista ohjelmointikielistä tai niiden vakiokirjastoista tarkka syntaksi ja ilmaisuvoima vaihtelee

Regexpien keskeiset käytännön variantit basic POSIX regular expressions (POSIX BRE) mm. grep, POSIX-kirjastot suosittelen välttämään extened POSIX regular expressions (POSIX ERE) mm. egrep, POSIX-kirjastot Perl 5 regular expressions (perlre) useimmat muut toteutukset, mm. JavaScript, Java pieniä eroja toki toteutusten välillä

Regexpien perusominaisuuksia 2 Jokainen regexp on merkkijono, joka luokittelee kaikki merkkijonot kahteen luokkaan: merkkijonot, joka täsmää regexpiin (engl. match) 1 kaikki muut merkkijonot Regexpiä ja testattavaa merkkijonoa verrataan vasemmalta oikealle. Pääsääntönä jokainen regexpin merkki täsmää itseensä: esimerkiksi regexp kissa täsmää vain ja ainoastaan merkkijonoon kissa. Kaikki poikkeukset johtuvat regexpissä olevasta erikoismerkistä. Muiden muasssa: Piste. täsmää mihin tahansa yhteen merkkiin: k.ssa täsmää mm. merkkijonoihin kassa, kissa ja k9ssa. Kenoviivan \ ja sitä seuraavan erikoismerkin yhdistelmä täsmää kyseiseen erikoismerkkiin: esim. k\.ssa täsmää vain ja ainoastaan merkkijonoon k.ssa. 1 Usein sama asia sanotaan niin, että regexp täsmää merkkijonoon. 2 Yhteisiä kaikille varianteille.

Merkkiluokat I 3 Hakasululla [ alkaa ja hakasululla ] päättyy ns. merkkiluokka (engl. bracketed character classs). Molemmat hakasulut ovat erikoismerkkejä. Pääsääntö: merkkiluokka täsmää mihin tahansa sen sisällä lueteltuun merkkiin. Esimerkiksi k[ai]ssa täsmää vain ja ainoastaan merkkijonoihin kassa ja kissa Useimmat erikoismerkit voidaan luetella merkkiluokassa sellaisenaan 3 Siltä osin kuin yhteistä kaikille varianteille.

Merkkiluokat II 4 Poikkeus: jos merkkiluokan sisältö alkaa sirkumfleksillä ^, luokka täsmää mihin tahansa merkkiin, joka ei ole lueteltu merkkiluokan sisällä sirkumfleksin jälkeen: esimerkiksi k[^ai]ssa täsmää mm. merkkijonoihin kessa ja k8ssa. Poikkeus: kahden merkin välissä oleva yhdysviiva - tarkoittaa, että merkkiluokka sisältää kyseiset merkit sekä kaikki kyseisten merkkien välissä (yleensä Unicode-järjestyksessä) olevat merkit: esimerkiksi p[0-9] täsmää vain ja ainoastaan merkkijonoihin p0, p1, p2, p3, p4, p5, p6, p7, p8 ja p9. 4 Siltä osin kuin yhteistä kaikille varianteille.

Valinta ja toisto 5 Pystyviiva tarkoittaa vaihtoehtoisuutta: esim. kissa koira lintu täsmää vain ja ainoastaan merkkijonoihin kissa, koira ja lintu. Merkin toistomäärät voidaan ilmaista kirjoittamalla merkin perään: aaltosulkeisiin tietty toistomäärä: a{3} on sama kuin aaa aaltosulkeisiin pilkulla erotetut ala- ja yläraja: a{2,4} on sama kuin aa aaa aaaa toisen tai molemmat rajat voi jättää tyhjäksi (alarajan oletus on 0, ylärajan oletus on ääretön) plussa + tarkoittaa samaa kuin {1,} tähti * tarkoittaa samaa kuin {0,} kysymysmerkki? tarkoittaa samaa kuin {0,1} 5 Yhteistä POSIX ERE:ille ja Perl-regexpeille. POSIX BRE:ssä on eri syntaksi.

Ryhmittely 6 Pystyviiva vaikuttaa sekä vasemmalle että oikealle niin pitkälle kuin mahdollista. Kysymysmerkki, tähti ja plussa vaikuttavat vasemmalle niin lyhyesti kuin mahdollista. Kaarisulkeita ( ja ) käytetään ryhmittelyyn: esim. k(issa oira) lintu tarkoittaa samaa kuin kissa koira lintu. 6 Yhteistä POSIX ERE:ille ja Perl-regexpeille. POSIX BRE:ssä on eri syntaksi.

Takaisinviittaukset 7 Kaarisuljeryhmiin voi viitata myöhemmin regexpissä. Ryhmät numeroidaan vasemmalta oikealle avaavien sulkeiden järjestyksessä. Kenoviiva, jonka perässä on muistipaikan numero, on takaisinviittaus. Regexp, jossa on takaisinviittaus, täsmää vain jos viitatun kaarisuljeryhmän sisältämä aliregexp täsmäsi samansisältöiseen alimerkkijonoon kuin takaisinviittaus. Esimerkiksi (a+)b\1 täsmää merkkijonoihin aba, aabaa ja aaabaaa mutta ei esimerkiksi merkkijonoon abaa. 7 Vain Perl-regexpit ja sitä matkivat regexp-variantit

Merkkijonon osan tunnistus 8 Monasti kiinnostaa, löytyykö merkkijonosta osamerkkijono, johon regexp täsmää. esim. grep ja egrep tulostavat kaikki rivit, joilta löytyy regexpiin täsmäävä osamerkkijono. Jos regexp alkaa sirkumfleksillä ^, osamerkkijonoa etsitään vain merkkijonon (tai rivin) alusta. Jos regexp päättyy dollarimerkkiin $, osamerkkijonoa etsitään vain merkkijonon (tai rivin) lopusta. Haasteita tulee, jos halutaan tietää, mikä osamerkkijono täsmäsi. Sivuutetaan tämä tällä kurssilla. 8 Yhteistä kaikille varianteille.

Tämän kurssin ongelma tärkeää asiaa alan keskeistä teoriaa runsaasti sovelluksia tosin yleensä piilotettu kirjastojen ja apuohjelmien sisään tilaisuus tutustua alan perinteiseen tutkimusotteeseen olemme yliopistossa tärkeys vaikea nähdä opiskelijan roolissa havaittu joka vuosi! itsekin tajusin kurssin tärkeyden vasta valmistumisen jälkeen

Yksi näkökulma Kaksi kolmasosaa kurssin sisällöstä vastaa mm. seuraavaan kysymykseen: Miten regexp-moottorin voisi toteuttaa? Loput kurssista vastaa seuraavaan kysymykseen? Mitä on klassinen tietojenkäsittelytiede? 9 9 Nykyään puhutaan yleisemmin tietojenkäsittelyteoriasta, engl. theoretical computer science

Kolme laskennan mallia kuvitteellisia (abstrakteja) koneita eli automaatteja lukevat syötteen vastaavat kyllä tai ei merkkijonotulostus ym. mahdollista mutta sivuutetaan tällä kurssilla interaktiivisuus sivuutetaan tällä kurssilla erona käytettävissä oleva muisti

Automaatit 10 äärelliset automaatit etukäteen rajattu muistin kapasiteetti pinoautomaatit äärellinen muisti lisäksi LIFO-periaatteella toimiva rajoittamaton pinomuisti Turingin koneet / RA-koneet äärellinen muisti lisäksi rajoittamaton nauhamuisti / hajasaantimuisti 10 Korjattu 9.10.2016 klo 8:40. Korjaus merkitty punaisella.

Äärelliset automaatit tehokas merkkijonohaku, jos haku kohdistetaan isoon valmistelemattomaan aineistoon hakuehto on monimutkaisempi kuin pelkkä sana tai fraasi regexpit (takaisinviittauksia lukuunottamatta) käännettävissä äärellisiksi automaateiksi verkkoprotokollien mallinnukseen Ks. esim. RFC 3501, sivu 15 pelin NPC:iden toiminnan ohjelmointi 11 variantteja käytössä mm. suomen kielen oikeinkirjoituksen tarkistimissa 11 Ks. esim. Alexander Nareyek: AI in Computer Games. Queue 1 (10), 59 65, 2004.

Turingin koneet vanhin laskennan matemaattinen malli (1936) käsin laskennan matemaattinen malli laadittu ratkaisemaan ns. Entscheidungproblem, ratkeavuusongelma Mitä menetelmää noudattamalla ihminen voi ratkaista minkä tahansa matemaattisen ongelman? Turing vastasi: haluttua menetelmää ei ole. Turingin teesi: mikä tahansa käsin laskettava lukuteoreettinen funktio voidaan laskea jollakin Turingin koneella ei matemaattisesti todistettavissa Kaikki lukuteoreettiset funktiot, jotka voidaan laskea tietokoneella, voidaan laskea Turingin koneella. ei matemaattisesti todistettavissa yleisesti hyväksytty tietotekniikan perusolettamus!

Kieliopit Noam Chomsky esitteli 1950-luvulla ns. lauserakennekieliopit kielioppi on joukko uudelleenkirjoitussääntöjä, joka tuottaa merkkijonoja säännöille esitetyt rajoitteet muodostavat kielioppien hierarkian (Chomskyn hierarkia): tyypin 0 kieliopit eli yleiset kieliopit tyypin 1 kieliopit eli kontekstiset kieliopit tyypin 2 kieliopit eli kontekstittomat kieliopit tyypin 3 kieliopit eli säännölliset kieliopit

Kontekstittomat kieliopit Käytetään yleisesti ohjelmointikielten syntaksin kuvaamiseen BNF, EBNF, ratakiskot jne ovat tapoja kirjoittaa kontekstiton kielioppi

Automaatit ja kieliopit Voidaan osoittaa ekvivalenssit: Kielioppityyppi yleinen kielioppi (tyyppi 0) kontekstiton kielioppi (tyyppi 2) säännollinen kielioppi (tyyppi 3) Automaattityyppi Turingin kone pinoautomaatti äärellinen automaatti