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

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

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

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

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

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

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

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

Täydentäviä muistiinpanoja laskennan rajoista

Laskennan teoria

Laskennan teoria

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

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

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

Chomskyn hierarkia ja yhteysherkät kieliopit

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

Laskennan teoriasta. Antti-Juhani Kaijanaho. 11. helmikuuta 2016

GÖDELIN LAUSE. kaikkein kaunein tosi ajatus syyskuuta 12

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

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

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.

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

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

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

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

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

Rajoittamattomat kieliopit (Unrestricted Grammars)

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

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

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

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

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

(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, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015

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

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

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

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

Säännöllisten kielten sulkeumaominaisuudet

Luento 5. Timo Savola. 28. huhtikuuta 2006

Korpusten käsittely clt131, P Luento 3

formalismeja TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 15. joulukuuta 2015 TIETOTEKNIIKAN LAITOS

Yhteydettömän kieliopin jäsennysongelma

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

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

Lisää pysähtymisaiheisia ongelmia

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

1 Kurssin asema opetuksessa

Laskennan mallit

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

Algoritmin määritelmä [Sipser luku 3.3]

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

Korpusten käsittely clt131, P Luento 5

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

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

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

Tietojenkäsittelyteorian alkeet, osa 2

Entscheidungsproblem

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

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

Rekursiiviset tyypit

Attribuuttikieliopit

Entscheidungsproblem

Rajoittamattomat kieliopit

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

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

17/20: Keittokirja IV

Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen.

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

Pinoautomaatit. Pois kontekstittomuudesta

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

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

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

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

1. Universaaleja laskennan malleja

Turingin koneet. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 7. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Logiikan kertausta. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.

Alityypitys. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos


Hahmon etsiminen syotteesta (johdatteleva esimerkki)

5.3 Ratkeavia ongelmia

4. Lausekielinen ohjelmointi 4.1

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

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

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

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

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

Yksinkertaiset tyypit

Johdatus matematiikkaan

Johdanto. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 7. joulukuuta 2009

Johdatus Ohjelmointiin

Tarkastelemme ensin konkreettista esimerkkiä ja johdamme sitten yleisen säännön, joilla voidaan tietyissä tapauksissa todeta kielen ei-säännöllisyys.

Kurssikoe on maanantaina Muista ilmoittautua kokeeseen viimeistään 10 päivää ennen koetta! Ilmoittautumisohjeet löytyvät kurssin kotisivuilla.

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

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

Output. Input Automaton

LUKU II HOMOLOGIA-ALGEBRAA. 1. Joukko-oppia

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

Transkriptio:

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

Sisällys

Luennoija yliopistonopettaja ja tohtorikoulutettava tutkimusalana ohjelmointikielten kehitys vapaaohjelmistokehittäjä: Debian-kehittäjä vuodesta 1999 dctrl-tools-työkalupaketin pääkehittäjä Alue-foorumialustan kehittäjä... vasta valmistumisen jälkeen tajusin kuinka tärkeä kurssi tämä oli!

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

Poikkeusjärjestelyitä 4. 7.6. Menen käräjäoikeuteen hoitamaan lautamiestehtävääni keskiviikkona 5.6. Luento tuolta päivältä siirtyy edelliselle päivälle 4.6. Kauppakorkeakoululla on 5. 7.6. konferenssi, jossa haluaisivat käyttää Delta-salia koko päivän. Emme voi vaihtaa salia, koska vain Deltassa on kurssin videointiin käytettävä salitallennusjärjestelmä eikä tällä luennolla käytettävä videointipalvelu ole käytettävissä tuolloin. Olemmeko ystävällisiä ja siirrämme omat luentomme ja demomme perjaintaille 7.6.? Vaihtoehtoisesti demo maanantaille ja luento tiistaille seuraavalla viikolla?

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

Tapahtui taannoin 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.

?! Kurssin aihepiirin teoria tuli ensin, sovellukset vasta sitten.

Matematiikan kriisi 1874 Cantor todisti, että äärettömyydet eivät ole samanlaisia ja aloitti näin joukko-opin tutkimusohjelman 1897 Burali-Forti esitti joukko-oppiparadoksinsa 1899 Cantor esitti joukko-oppiparadoksinsa 1901 Russell esitti joukko-oppiparadoksinsa

Matematiikka alkaa toipua 1908 Zermelo esitti joukko-oppiaksioomansa 1910 3 Russell ja Whitehead julkaisevat Principia Mathematican, joka oli ensimmäinen yritys rakentaa koko matematiikka pohjalta alkaen 1922 Fraenkel ja Skolem (toisistaan riippumatta) laajentavat Zermelon aksiomatisointia laajennus tunnetaan nimellä Zermelon Fraenkelin (ZF) joukko-oppi ks. MATS155 Aksiomaattinen joukko-oppi

Matematiikka kriisiytyy taas 1900 Hilbert esitti 23 ongelmaansa, joista toinen oli matematiikan ristiriidattomuuden osoittaminen 1931 Kurt Gödel julkaisee kuuluisan epätäydellisyyslauseensa Principia Mathematica (ja muut vastaavat) ei kykene todistamaan omaa ristiriidattomuuttaan tulkitaan usein Hilbertin toisen ongelman (epä)ratkaisuksi ks. MATS150 Logiikan jatkokurssi

Uudesta kriisistä tietojenkäsittelyteoria 1928 Hilbert esitti ongelman, joka tunnetaan nimellä Entscheidungsproblem (ratkeavuusongelma) Onko olemassa algoritmi, joka kykenee sanomaan mistä tahansa hyvin määritellystä matemaattisesta väitteestä, onko se tosi vai ei? 1936 Alonzo Church käyttää luomaansa λ-laskentoa ratkaisemaan Hilbertin ratkeavuusongelman: algoritmia ei ole λ-laskennolle muodostui myöhemmin merkittävä rooli ohjelmointikielten teoriassa (ks. TIES542 Ohjelmointikielten periaatteet) 1936 Alan Turing (Churchista riippumatta) käyttää luomaansa Turingin konetta ratkaisemaan Hilbertin ratkeavuusongelman: algoritmia ei ole teemme olennaisesti saman kurssin loppupuolella

Kehitys kehittyy 1951 Stephen Cole Kleene [kleini:] tutkii neuroverkkoja ja määrittelee äärellisen automaatin ja säännöllisen lausekkeen käsitteet sekä todistaa niiden perusominaisuudet 1956 Noam Chomsky tutkii englannin kielen kieliopin esitysmuotoja ja määrittelee kontekstittomien kielioppien käsitteen 1959 John Backus ja Peter Naur käyttävät kontekstittomia kielioppeja ohjelmointikielten (Fortran, Algol) syntaksin määrittelyyn 1968 Ken Thompson käyttää säännöllisiä lausekkeita tekstieditorin hakutoiminnossa 1 1 Dennis Ritchie: An incomplete history of the QED Text Editor, http://cm.bell-labs.com/cm/cs/who/dmr/qed.html

Historiallista? Kurssin keskeiset teoreettiset ideat ovat siis peräisin vuosilta 1936 1956. Tutkimusalana automaattien ja kielioppien teoria oli vilkas vielä 1980-luvulla mutta kurssin asiat ovat stabiloituneet kauan sitten. Nykytutkimus alalla perustuu kurssilla esitettävään perusteoriaan mutta menee pääosin reilusti kurssin vaatimustason yli. Silti tämä kaikki on edelleen hyvin relevanttia 2010-luvun ohjelmistoammattilaisille!... kuten tulemme huomaamaan.

Yksinkertaisia automaatteja on/off-kytkin kioskiautomaatti ydinvoimalan hätäpysäytysjärjestelmä

Yksinkertaisia kielenkuvauksia (throws)? catch E vakio E + E E E E E E/E (E)

Ratkeamattomia ongelmia Seuraaville tehtäville (muiden muassa) ei ole algoritmia: Täsmällisesti esitetyn matemaattisen väittämän tunnistaminen todeksi tai epätodeksi. (Hilbertin Entschedungsproblem) Tietokoneohjelman ja sille annetun syötteen tunnistaminen sellaiseksi, että ohjelma pysähtyy kyseisellä syötteellä taikka sellaiseksi, että se jää ikuiseen silmukkaan kyseisellä syötteellä. (Pysähtymisongelma)

Toistuva esimerkki: grep Globally search for a Regular Expression and Print the result Unixin ed-tekstieditorin komennosta g/re/p, jossa re oli etsittävä hahmo tulostaa annetusta tekstitiedostosta kaikki rivit, joista löytyy annettu merkkijonohahmo toteutuksessa tarvitaan käytännössä kaikkia kurssin alku- ja keskiosassa opetettavia asioita vastaava toiminnallisuus löytyy mm. LibreOfficen hakutoiminnosta ja useimpien ohjelmointikielten regexp-kirjastoista luentoesimerkkinä rakennetaan kurssin kuluessa ja kurssin tekniikoita käyttämällä grep-ohjelma

Merkkijonohahmot eli regexpit 2 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+) 2 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?

: Kurssin alkupään asiat tekstihakujen toteuttaminen verkkoprotokollien suunnittelu suomen kielen morfologinen analyysi (esim. oikolukua varten) tietokoneohjelmien leksikaalinen analyysi ohjainlaitteiden suunnittelu ohjelmien oikeellisuustarkastelu

: Kurssin keskivaiheen asiat suomen kielen syntaktinen analyysi tietokoneohjelmien syntaktinen analyysi kääntäjät!

: Kurssin loppupään asiat tietotekniikan rajojen tunnistaminen