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

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

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

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

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

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

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

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

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

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

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

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

Pinoautomaatit. Pois kontekstittomuudesta

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

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

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

Säännöllisten operaattoreiden täydentäviä muistiinpanoja

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

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

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

Kertausta 1. kurssikokeeseen

Säännöllisten kielten sulkeumaominaisuudet

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

Automaatit. Muodolliset kielet

Jos sekaannuksen vaaraa ei ole, samastamme säännöllisen lausekkeen ja sen esittämän kielen (eli kirjoitamme R vaikka tarkoitammekin L(R)).

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

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

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

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

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

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

Yllä osoitettiin, että säännöllisten kielten joukko on suljettu yhdisteen

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. 2. helmikuuta 2012

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

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

Testaa: Vertaa pinon merkkijono syötteeseen merkki kerrallaan. Jos löytyy ero, hylkää. Jos pino tyhjenee samaan aikaan, kun syöte loppuu, niin

Chomskyn hierarkia ja yhteysherkät kieliopit

Rajoittamattomat kieliopit

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

Täydentäviä muistiinpanoja laskennan rajoista

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

(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. 9. lokakuuta 2016

1. Universaaleja laskennan malleja

Turingin koneen laajennuksia

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

Tietojenkäsittelyteorian alkeet, osa 2

Yhteydettömän kieliopin jäsennysongelma

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

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

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

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

M = (Q, Σ, Γ, δ, q 0, q acc, q rej )

Algoritmin määritelmä [Sipser luku 3.3]

ICS-C2000 Tietojenkäsittelyteoria

ICS-C2000 Tietojenkäsittelyteoria. Tähän mennessä: säännölliset kielet. Säännöllisten kielten pumppauslemma M :=

δ : (Q {q acc, q rej }) (Γ k {, }) Q (Γ k {, }) {L, R}.

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

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

2.6 SÄÄNNÖLLISET LAUSEKKEET Automaattimalleista poikkeava tapa kuvata yksinkertaisia kieliä. Olkoot A ja B aakkoston Σ kieliä. Perusoperaatioita:

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

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

Täydentäviä muistiinpanoja epädeterministisistä äärellisistä automaateista

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

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

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

5.3 Ratkeavia ongelmia

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

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

Rajoittamattomat kieliopit (Unrestricted Grammars)

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

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

Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna

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

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

Rekursiiviset palautukset [HMU 9.3.1]

MS-A0402 Diskreetin matematiikan perusteet

Formalisoimme nyt edellä kuvatun laskennan.

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

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

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

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

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

Esimerkki 2.28: Tarkastellaan edellisen sivun ehdot (1) (3) toteuttavaa pinoautomaattia, jossa päätemerkit ovat a, b ja c ja pinoaakkoset d, e ja $:

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

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

S BAB ABA A aas bba B bbs c

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

Lisää pysähtymisaiheisia ongelmia

Säännöllisen kielen tunnistavat Turingin koneet

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

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

Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

Output. Input Automaton

1. Universaaleja laskennan malleja

Automaattimalleista poikkeava tapa kuvata yksinkertaisia kieliä. Olkoot A ja B aakkoston Σ kieliä. Perusoperaatioita:

Laskennan mallit (syksy 2007) Harjoitus 5, ratkaisuja

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

Transkriptio:

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

Sisällys

Sisällys

Muistathan A B -konstruktion 0 k 1 i 2 s 3 s 4 a 5 0 k 1 o 2 i 3 r 4 a 5 00 k i 11 2 s 3 s 4 a 5 o 2 i 3 r 4 a 5

Eikö olisi helpompi...... yhdistää M A ja M B luomalla uusi alkutila, josta automaatti siirtyisi spontaanisti oikeaan osa-automaattiin? A0 ε 0 ε B0 k A1 k B1 i A2 o B2 s A3 i B3 s A4 r B4 a A5 a B5 Valitettavasti tällainen M ei ole DFA...

... mutta se on eli epädeterministinen äärellinen automaatti. on DFA kolmella poikkeuksella: samasta tilasta saa olla useampi kuin yksi siirtymä samalla merkillä tilasta ei tarvitse olla siirtymää kaikilla merkeillä tilasta voi olla spontaaneja eli ns. ε-siirtymiä muihin tiloihin

Epädeterminismi Epädeterminismi tarkoittaa laskentaa, jossa mahdollisia etenemistapoja on useita, joista valitaan joku. :n epädeterminismi on hyväntahtoista, koska valitsee aina hyväksyntään johtavan tavan, jos sellainen on olemassa. Epädeterministinen laskenta voidaan kuvata päätöspuuna. Tarkastellaan taululla seuraavaa automaattia: a a 0 a 1 b 2 a 3 b b ja merkkijonoa aababa.

matemaattisesti Merkintätapa Merkitään jatkossa Σ ε = Σ {ε}. Huomautus Koska ε tarkoittaa tyhjää merkkijonoa, pätee ε Σ. Määritelmä Viisikko (Q, Σ, δ, q 0, F) on epädeterministinen äärellinen automaatti (), jos Q on äärellinen (tilojen) joukko, Σ on äärellinen, epätyhjä joukko (merkistö), δ : Q Σ ε P(Q) pätee (siirtymäfunktio), q 0 Q pätee (alkutila) ja F Q pätee (hyväksyvät tilat).

:n toiminta formaalisti Olkoon M = (Q, Σ, δ, q 0, F) epädeterministinen äärellinen automaatti. Jokaiselle epätyhjälle merkkijonolle w = c 0 c n 1, jolle c 0,..., c n 1 Σ ε pätee 1, on mahdollisesti olemassa tilajonoja, jotka ovat muotoa 2 q 1,..., q n ja joille pätee q k+1 δ(q k, c k ) kaikilla k = 0,..., n 1. Kunkin tällaisen jonon viimeinen tila q n on merkkijonon w päätöstila automaatissa M. Tyhjän merkkijonon päätöstilaksi automaatissa M lasketaan myös q 0. Merkitään merkkijonon w päätöstilojen joukkoa Q w. M hyväksyy merkkijonon w Σ, jos ainakin yksi sen päätöstiloista M:ssä kuuluu F:ään eli jos Q w F = ; muuten se hylkää sen. M:n (tunnistama) kieli on L(M) = { w Σ Q w F = }. 1 Huomaa: w n. 2 Huomaa indeksoinnin ero!

Vaihtoehtoinen muotoilu Olkoon M = (Q, Σ, δ, q 0, F). Määritellään ( ) Q Σ Q pienimpänä relaationa, jolle seuraavat pätevät kaikilla q, q, q Q, c Σ ε ja w, v Σ : q δ(q, c) q c q (1) q w q q v q q wv q (2) q ε q (3) (Kolmas ehto lisätty luennon jälkeen.) w Jos q 0 q pätee, niin tila q on merkkijonon w:n (jokin) päätöstila.

Yhdiste :lla Olkoon M A = (Q A, Σ A, δ A, q A, F A ). Olkoon M B = (Q B, Σ B, δ B, q B, F B ). Voidaan olettaa: Q A Q B = ja 0 Q A Q B. Konstruoidaan M = (Q A Q B {0}, Σ A Σ B, δ, 0, F A F B ) missä {q A, q B } jos q = 0 ja c = ε δ A (q, c) jos q Q A ja c (Σ A ) ε δ : (q, c) δ B (q, c) jos q Q B ja c (Σ B ) ε muuten On helppo havaita, että L(M) = L(M A ) L(M B ).

Riittääkö? Todistaako edellisen kalvon konstruktio, että kahden säännöllisen kielen yhdiste on säännöllinen? Säännöllisen kielen määritelmässä puhutaan DFA:sta, ei :sta. On helppo nähdä, että jokainen DFA voidaan muokata :ksi. Lisäksi tarvitaan... Lause Jokaiselle :lle M on olemassa DFA M, jolle pätee L(M) = L( M).

Spontaanien siirtymien poisto Lemma Olkoon M = (Q, Σ, δ, q 0, F). Määritellään M = (Q, Σ, δ, q 0, F ) seuraavasti: { δ jos c = ε : (q, c) { q Q q c q } muulloin { ε F {q 0 } jos on olemassa q F, jolle q 0 q pätee F = F muuten Tällöin L(M) = L(M ). Todistus Sivuutetaan.

Osajoukkokonstruktio Lause Jokaiselle :lle M = (Q, Σ, δ, q 0, F) on olemassa DFA M = ( Q, Σ, δ, q 0, F), jolle pätee L(M) = L( M). Todistus Taululla (ja jälkiprujussa).

Laiska osajoukkokonstruktio Osajoukkokonstruktio sopii DFA-muunnosalgoritmin pohjaksi. Se tuottaa runsaasti turhia tiloja. Käytännössä kannattaa muodostaa osajoukko-tila vasta, kun sitä tarvitaan, siis laiskasti.

Esimerkki taululla A0 ε 0 ε B0 k A1 k B1 i A2 o B2 s A3 i B3 s A4 r B4 a A5 a B5

Sisällys

Suunnitelma Nämä tiedetään: ε on säännöllinen kieli. S Σ on säännöllinen kieli. Jos A on säännöllinen kieli, niin A on säännöllinen kieli. Jos A ja B ova säännöllisiä kieliä, niin AB on säännöllinen kieli. Jos A ja B ova säännöllisiä kieliä, niin A B on säännöllinen kieli. Voidaanko kaikki säännölliset kielet ilmaista näiden yhdistelyn avulla? Ratkaisuun tarvitaan: Tarkka määritelmä yhdistelemiselle (tänään). Todistus sille, että DFA:sta voidaan rakentaa yhdistelmä (tiistaina).

Määritelmä Olkoon M = {,,, (, )} ja olkoon Σ merkistö, jolle pätee Σ M =. (engl. regular expressions) ovat seuraavat merkistön Σ M merkkijonot ε, c, jos c Σ, r, jos r on säännöllinen lauseke (r 1 r 2 ), jos r 1 ja r 2 ovat säännöllisiä lausekkeita, (r 1 r 2 ), jos r 1 ja r 2 ovat säännöllisiä lausekkeita, ja vain ne. 3 Säännöllisten lausekkeiden joukkoa merkitään R Σ. 3 Käytännössä sulkeita ei läheskään aina kirjoiteta näkyviin. Operaattoreiden presedenssijärjestys on yllä korkeammalla mainittu lasketaan ensin.

Säännöllisten lausekkeiden tulkinta Määritelmä Olkoon Σ merkistö ja R Σ säännöllisten lausekkeiden joukko. Määritellään tulkintafunktio : R Σ P(Σ ) seuraavasti: = ε = {ε} c = {c} (c Σ) r = r (r R Σ ) (r 1 r 2 ) = r 1 r 2 (r 1, r 2 R Σ ) (r 1 r 2 ) = r 1 r 2 (r 1, r 2 R Σ )

käytännössä Yleisin käytännön sovellus on Unixin regexit, joita käytetään esim. egrep-ohjelmassa. Kääntäjien etupäässä voidaan käyttää säännöllisiä lausekkeita kuvaamaan kielen sanaset (flex ym.). Useimpien ohjelmointikielten kirjastoissa on toteutus Unixin regexien kaltaisille säännöllisille lausekkeille. Paaaaaaaaaaaaaljon sovelluksia!

Unixin regexien operaattoreita r* tarkoittaa samaa kuin r edellä (Kleenen tähti) r+ tarkoittaa samaa kuin rr* (Kleenen plus) r 1 r 2 tarkoittaa samaa kuin edellä (valitaan joko r 1 tai r 2 ) r? tarkoittaa samaa kuin (() r) r{n} tarkoittaa r:n toistoa täsmälleen n kertaa. r{n, m} tarkoittaa r:n toistoa vähintään n ja enintään m kertaa. sulkeita () voidaan käyttää ryhmittelyyn ^ tarkoittaa syötteen tai rivin alkua (riippuu käyttöyhteydestä) $ tarkoittaa syötteen tai rivin loppua (riippuu käyttöyhteydestä) ilman näitä regex etsii osamerkkijonoa, johon regex täsmää

Unixin regexien merkkiluokat Seuraavat ovat tapoja ilmaista yhden merkin mittaisia kieliä:. tarkoittaa kieltä Σ [c 1 c 2 c n ] tarkoittaa kieltä {c 1,..., c n }. [^c 1 c 2 c n ] tarkoittaa kieltä Σ {c 1,..., c n }. hakasulkeissa (hatulla tai ilman) on mahdollista käyttää myös merkkiväliä, esim. a-z nimettyä merkkijoukkoa, esim. [:alpha:], [:digit:], [:alnum:] \., \* jne: erikoismerkki sellaisenaan

Esimerkkejä 1. [[:alpha:]][[:alnum:]]* 2. [+-]?([[:digit:]]+\.[[:digit:]]* [[:digit:]]*\.[[:digit:]]+) 3. [[:digit:]]{5} +[[:alpha:]]+( +[[:digit:]]{2})?