TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 26. tammikuuta 2012
Sisällys
Luennon pähkinä Millä tavalla voidaan rakentaa tietokoneohjelma (tai kirjasto), joka ottaa syötteekseen säännöllisen lausekkeen ja merkkijonon ja testaa kuuluuko merkkijono sen kieleen?
Osat 1. Säännöllisen lausekkeen lukeminen syötteestä. osataan: yleistä ohjelmointia 2. Säännöllisen lausekkeen jäsennys käsitellään kontekstittomien kielten yhteydessä 3. Säännöllisen lausekkeen muunnos NFA:ksi 4. Simuloidaan automaattia kaksi vaihtoehtoa: muunnetaan NFA DFA:ksi ja simuloidaan sitä osataan jo! simuloidaan suoraan NFA:ta oikeastaan tehdään laiska osajoukkokonstruktio lennossa
Sisällys
Algoritmi: 1 Kutsu MYT(r) Syöte r R Σ Tulos M on NFA, jossa on täsmälleen yksi hyväksyvä tila Jos r =, on M seuraava NFA: Jos r = ε, on M seuraava NFA: (jatkuu seuraavilla kalvoilla) 1 Tämä on ns. McNaughtonin, Yamadan ja Thompsonin (MYT) algoritmi.
MYT-algoritmi jatkuu Jos r = c jollakin c Σ, on M seuraava NFA: c Jos r = r1 jollakin r 1 R Σ, on M seuraava NFA ε ε r 1 ε ε kun rekursiivisen kutsun MYT(r 1 ) palauttama automaatti on r 1
MYT-algoritmi jatkuu Jos r = (r 1 r 2 ) joillakin r 1 r 2 R Σ, on M seuraava NFA ε r 1 ε r 2 ε kun rekursiivisen kutsun MYT(r i ) palauttama automaatti on r i kullakin i {1, 2}.
MYT-algoritmi jatkuu Jos r = (r 1 r 2 ) joillakin r 1 r 2 R Σ, on M seuraava NFA ε r 1 ε ε r 2 ε kun rekursiivisen kutsun MYT(r i ) palauttama automaatti on r i kullakin i {1, 2}.
Kleenen lause Lause Olkoon Σ merkistö. Jokaiselle kielelle A Σ seuraavat ovat yhtäpitävät: 1. On olemassa DFA M, jolle L(M) = A pätee. 2. On olemassa säännöllinen lauseke r R Σ, jolle r = A pätee. Todistus 1 2: Tehtiin tiistaina. 2 1: MYT-algoritmista.
Sisällys
Osataan jo: osajoukkokonstuktio.
Sisällys
Onko tässä pienin mahdollinen tämän kielen tunnistava automaatti? 0 a b 2 b 8 a 4 b a a a b 10 b
Syöte M = (Q, Σ, δ, q 0, F), joka on DFA. Tulos M, joka on DFA. Muuttuja R Q Q 1. Poista M:stä sellaiset tilat, joihin ei pääse alkutilasta tilasiirtymiä seuraamalla. 2. R := { (q, q ) Q Q q F q F } 3. Jos on olemassa (q, q ) R ja c Σ, joille (δ(q, c), δ(q, c)) R pätee, tee: 3.1 R := R {(q, q )}. 3.2 Palaa kohtaan 3. 4. Konstruoi M seuraavalla kalvolla esitetyllä tavalla.
: M:n konstruktio π : Q P(Q) π : q { q Q (q, q ) R } Q = { π(q) q Q } Valitse jokin σ : Q Q, jolle pätee ˆq Q : π(σ(ˆq)) = ˆq. ˆδ : Q Γ Q ˆδ : (ˆq, c) π(δ(σ(ˆq), c)) F = { π(q) q F } M = ( Q, Σ, ˆδ, π(q 0 ), F)
Käytännössä Kannattaa käyttää matriisia esittämään Q \ R: matriisissa on merkki, jos rivin ja sarakkeen osoittama pari ei kuulu R:ään Koska R on symmetrinen, riittää oikeastaan käyttää kolmiomatriisia. Alustetaan R siten, että siihen kuuluvat ne tilaparit, joiden jäsenet ovat molemmat hyväksyviä tai molemmat ei-hyväksyviä; matriisiin merkitään kaikki muut! Sitten käydään merkitsemättömiä pareja (q, q ) läpi, ja merkitään kaikki ne, joille on c Σ, jolle (δ(q, c), δ(q c)) on merkitty, toistuvasti kunnes uusia merkintöjä ei synny. Huomaa, että parin lisääminen muuttaa sitä, mitkä muut parit pitää lisätä, joten ei riitä käydä kaikki parit kerran läpi! Lopuksi luetaan M taulukosta.
Taululla 8 a b 0 a b 2 a b 4 a b 10 b a
Olkoon M = (Q, Σ, δ, q 0, F) DFA. Määritelmä Määritellään funktio δ : Q Σ Q seuraavasti: { δ q jos w = ε : (q, w) δ (δ(q, c), v) jos w = cv Määritelmä Tilat q 1, q 2 Q ovat samansisältöiset (engl. equivalent), jos kaikilla w Σ pätee δ (q 1, w) F δ (q 2, w) F. Lemma Olkoon R se, mikä syntyy minimointialgoritmin tuloksena. Tällöin kaikilla (q 1, q 2 ) R pätee, että q 1 ja q 2 ovat samansisältöiset.
Lause Minimointialgoritmi ei muuta automaatin hyväksymää kieltä.
Määritelmä Olkoot M = (Q, Σ, δ, q 0, F) ja M = (Q, Σ, δ, q 0, F ) DFA:ita. Määritellään, että M ja M ovat tilojen nimiä vaille samat 2, jos on olemassa bijektio r : Q Q, jolla Q = { r(q) q Q } q Q, c C: δ (r(q), c) = r(δ(q, c)) q 0 = r(q 0 ) F = { r(q) q F } pätevät. Lemma Jos M ja M ovat kaksi DFA:ta, joilla on sama lukumäärä tiloja ja joissa ei ole sellaisia tiloja, joihin ei pääse alkutilasta seuraamalla tilasiirtymiä, niin M ja M ovat tilojen nimiä vaille samat jos ja vain jos pätee L(M) = L(M ). 2 engl. identical modulo state names, identical save for the naming of states
Lause Olkoon M DFA. Ei ole olemassa tilojen määrän suhteen pienempää L(M):n tunnistavaa DFA:ta kuin se, jonka minimointialgoritmi tuottaa. Seuraus Olkoot M 1 ja M 2 DFA:ita. Tällöin L(M 1 ) = L(M 2 ), jos minimointialgoritmi tuottaa molemmista tilojen nimiä vaille saman automaatin.
Sisällys
demoissa ensi viikolla Olen lautamiestehtävässä Tälle on varattu koko päivä. Demotilaisuudet on siksi peruttu. Ensi viikon demovastaukset palautetaan sähköpostitse tai paperilla (oman valinnan mukaan). Demotehtävät tulevat huomenna perjantaina, vastausten deadline on torstain luennon alku (eli to 2.2. klo 12). Palaute tulee osin henkilökohtaisesti (sähköpostilla) ja osin yleisesti tiistain luennolla.