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

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

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

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

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

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

Chomskyn hierarkia ja yhteysherkät kieliopit

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

Rajoittamattomat kieliopit (Unrestricted Grammars)

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

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

Rajoittamattomat kieliopit

Pinoautomaatit. Pois kontekstittomuudesta

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

Laskennan teoria

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

Yhteydettömän kieliopin jäsennysongelma

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

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

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

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

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

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

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

Laskennan teoria

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

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

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. 30. marraskuuta 2015

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

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

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.

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

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

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

Attribuuttikieliopit

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

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

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

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

Korpusten käsittely clt131, P Luento 5

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

Laskennan mallit

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

Täydentäviä muistiinpanoja laskennan rajoista

Säännöllisten kielten sulkeumaominaisuudet


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

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

Tietojenkäsittelyteorian alkeet, osa 2

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

1. Universaaleja laskennan malleja

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

11.4. Context-free kielet 1 / 17

Rekursiivinen Derives on periaatteessa aivan toimiva algoritmi, mutta erittäin tehoton. Jos tarkastellaan esim. kieliopinpätkää

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

uv n, v 1, ja uv i w A kaikilla

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

Äärellisten automaattien ja säännöllisten kielten ekvivalenssi

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

Muodolliset kieliopit

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

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

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

1 Kurssin asema opetuksessa

TIEA341 Funktio-ohjelmointi 1, kevät 2008

8. Kieliopit ja kielet

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

Algoritmin määritelmä [Sipser luku 3.3]

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

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

(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, kesä Antti-Juhani Kaijanaho. 10. kesäkuuta 2013

5.3 Ratkeavia ongelmia

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Korpusten käsittely clt131, P Luento 3

Ei-yhteydettömät kielet [Sipser luku 2.3]

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

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

Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

FORMAALI SYSTEEMI (in Nutshell): aakkosto: alkeismerkkien joukko kieliopin määräämä syntaksi: sallittujen merkkijonojen rakenne, formaali kuvaus

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

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

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

Talousmatematiikan perusteet ORMS.1030

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

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

TIEA255 Tietotekniikan teemaseminaari ohjelmointikielet ja kehitysalustat. Antti-Juhani Kaijanaho. 16. helmikuuta 2011

Talousmatematiikan perusteet ORMS.1030

Talousmatematiikan perusteet ORMS.1030

ÄÄRELLISTEN AUTOMAATTIEN MINIMOINTI. 1. Äärelliset automaatit Äärellinen automaatti (DFA = deterministic finite automaton) on

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, kevät Antti-Juhani Kaijanaho. 16. helmikuuta 2012

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Talousmatematiikan perusteet ORMS.1030

Transkriptio:

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

Sisällys

Opettajat Vastuuopettaja, luennoija Antti-Juhani Kaijanaho, antti-juhani.kaijanaho@jyu.fi tohtorikoulutettava, filosofian lisensiaatti väitöskirjan Evidence-Based Programming Language Design: A Philosophical and Methodological Exploration tarkastustilaisuus 4.12.2015 klo 12 vanhassa juhlasalissa (S212) vapaaohjelmistokehittäjä: Debian-kehittäjä 1999 2014 dctrl-tools-työkalupaketin pääkehittäjä toipilas vatsan ohitusleikkauksesta 5.10.2015 Tuntiopettaja (demotilaisuudet) Pyry Kotilainen, pyry.j.p.kotilainen@student.jyu.fi

Kurssin käytännöt Kurssin sivuilla http://users.jyu.fi/~antkaij/opetus/auki/2015/ Kysymys Tarvitaanko IRC-kanava, Slack tms?

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. Täydentävää lukemista Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman: Compilers Principles, Techniques, & Tools. Second Edition. Addison Wesley, 2007. Pekka Orponen: Laskennan teoria. Luentomoniste. http://users.ics.tkk.fi/orponen/ lectures/lte.pdf

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 kurssilla! itsekin tajusin kurssin tärkeyden vasta valmistumisen jälkeen

Tapahtui jokunen vuosi sitten Facebookissa Vesa Kaihlavirta Yksi tärkeimmistä kursseista. Pistä ne punnertamaan :P Antti-Juhani Kaijanaho Vesa, saako tuon kommentin näyttää opiskelijoille? Ja jos saa, niin kerkeäisitkö vielä vähän avaamaan miksi pidät tuota yhtenä tärkeimmistä kursseista. Vesa Kaihlavirta No jos luulet, että siitä on jotain hyötyä, niin siitä vain :) Vesa Kaihlavirta Se antaa hyvää ja Ihan Oikeasti sovellettavaa pohjaa ohjelmistosuunnitelussa tapahtuvalle formalisoinnille. (Meinasin tähän lisätä, että "Ei siis mitään oliosuunnittelun, UML:n ja muun sellaisen sonnan kaltaista vaan jotain Oikeaa." mutta ehkä se meni liian pitkälle) Lisäksi regexpien osaaminen on käytännöllisesti katsoen taikuutta tietämättömien näkökulmasta.

Tietotekniikan kolme traditiota 1 matemaattinen formaali verifiointi tietojenkäsittelyteoria tämä kurssi luonnontieteellinen tieteellinen metodi harvemmin oikeasti noudatettu, yleisemmin vain julistettu teknillinen insinöörinäkökulma luodaan artefakteja ehkä yleisin käytännössä 1 Matti Tedre & Erkki Sutinen: Three traditions of computing: what educators should now. Computer Science Education 18 (3), 153 170, 2008.

Perinteikästä asiaa Kurssin peruskäsitteet peräisin vuosilta 1936 1956 Kurssin asiasisältö vakiintui 1970-luvulla. Edelleen relevanttia! kaikki tietotekninen asia ei vanhene nopeasti!

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 äärelliset automaatit etukäteen rajattu muistin kapasiteetti pinoautomaatit äärellinen muisti lisäksi FIFO-periaatteella toimiva rajoittamaton pinomuisti Turingin koneet / RA-koneet äärellinen muisti lisäksi rajoittamaton nauhamuisti / hajasaantimuisti

Äärelliset automaatit tehokas merkkijonohaku, jos haku kohdistetaan isoon valmistelemattomaan aineistoon hakuehto on monimutkaisempi kuin pelkkä sana tai fraasi verkkoprotokollien mallinnukseen Ks. esim. RFC 3501, sivu 15 pelin NPC:iden toiminnan ohjelmointi 2 variantteja käytössä mm. suomen kielen oikeinkirjoituksen tarkistimissa 2 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 Chomskyn 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

Säännölliset lausekkeet eli regexpit yleisesti käytetty tyypin 3 kieliopin tilalla sama ilmaisuvoima, helpompi käyttää kirjastototeutus löytyy useimmista ohjelmointikielistä käytössä myös monissa ohjelmissa hyvä tapa testata on käyttää Unixin egrep-ohjelmaa. tarkka syntaksi vaihtelee toteutuksesta riippuen

3 Regexp on yksinkertainen kieli, jolla voidaan kuvata monia merkkijonohakutehtäviä. Pääsääntöisesti regexp on merkkijono, jonka tulee löytyä sellaisenaan etsinnän kohdemerkkijonosta. Poikkeuksia on runsaasti: Piste (.) edustaa yhtä mielivaltaista merkkiä. Sulkeita (()) voidaan käyttää ryhmittelyyn. Kahden regexpin väliin voidaan laittaa pystyviiva ( ) tarkoittamaan vaihtoehtoisuutta. Regexpin perään voidaan laittaa kysymysmerkki (?) tarkoittamaan valinnaisuutta. Regexpin perään voidaan laittaa plusmerkki (+) tarkoittamaan mielivaltaista toistoa. Myös tähteä käytetään toistomerkkinä: X* tarkoittaa samaa kuin (X? X+) 3 Nämä ovat ns. laajennettuja POSIX-regexpejä.

Regexpeistä lisää Tähti, kysymysmerkki ja plusmerkki vaikuttavat mahdollisimman lyhyeeseen edeltävään regexpiin. ab+ tarkoittaa yhtä a:ta, jota seuraa yksi tai useampi b. (ab)+ tarkoittaa yhtä tai useampaa ab:tä. Pystyviiva vaikuttaa molemmilla puolilla mahdollisimman pitkään regexpiin. (ab cd)e tarkoittaa ab:tä tai cd:tä, jota (kumpaa tahansa) seuraa e. Mielivaltainen merkkijono kirjoitetaan.* (mielivaltainen merkki, joka voi puuttua tai toistua mielivaltaisen monta kertaa).

Ja vähän vielä regexpeistä Kenoviiva erikoismerkin edessä poistaa sen erityismerkityksen: \ tarkoittaa pelkkää pystyviivaa ilman mitään erityismerkitystä. Hakasulkeissa voidaan luetella merkkejä; tämä tarkoittaa mitä tahasa luetelluista merkeistä mutta vain yhtä niistä. Esim. a[bcd] tarkoittaa samaa kuin a(b c d). Luettelon aloittaminen sirkumfleksillä ^tekee negaation: [^bc] tarkoittaa mitä tahansa merkkiä paitsi b:tä ja c:tä. Viiva luettelon sisällä tarkoittaa merkkiväliä: [a-za-z] hyväksyy minkä tahansa ison tai pienen kirjaimen ääkkösiä lukuunottamatta.

Regexp-esimerkkejä (yksi kaksi kolme)+ \(0[0-9]+\) [0-9 ]+ [a-za-z_][a-za-z_0-9]* [+-]?([0-9]+\.[0-9]* [0-9]*\.[0-9]+)

Luentotehtävä Miten ohjelmoisit seuraavan hakutehtävän ilman regexpejä? (kissa koira)+kouluttajat?