TIEA241 Automaatit ja kieliopit, kesä 2013 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 6. kesäkuuta 2013
Sisällys
Aikataulumuutos Tämänpäiväinen demotilaisuus on siirretty maanantaille klo 14:15 (Ag Delta).
Chomskyn hierarkia (ja muutakin) kieli säännöllinen LL(k) LR(1) kontekstiton kontekstinen rekursiivisesti lueteltava automaatti äärellinen (ennustava jäsennin) deterministinen pino pino lineaarirajoitettu Turingin kone
Pinoautomaatti NFA:n yleistys automaatilla on käytössään LIFO-muisti 1 eli pino Pino alustetaan ennen ensimmäistä siirtymää erityisellä alustusmerkillä, usein merkitään aloitustilan osoittavaan nuoleen siirtymässä q 1 c,d γ q 2 q 1 on tila, josta lähdetään c on syötemerkki, jonka tulee olla kohdalla, jotta siirtymä saadaan tehdä, taikka ε d on pinomerkki, jonka tulee olla pinon päällimmäisenä, jotta siirtymä saadan tehdä, ja joka otetaan pinosta pois siirtymää tehtäessä γ on pinomerkkijono, joka laitetaan pinoon päällimmäiseksi q 2 on tila, johon siirrytään 1 LIFO = last in, first out
Esimerkki A (, 1 B (,1 11 D ε, ε C ),1 ε ),1 ε
Rakenne formaalisti Kuusikko M = (Q, Σ, Γ, δ, q 0,, F) on (epädeterministinen) pinoautomaatti () (engl. push-down automaton), jos seuraavat pätevät: Q on äärellinen joukko (tilat) Σ on äärellinen, epätyhjä joukko (syötemerkistö) Γ on äärellinen, epätyhjä joukko (pinomerkistö) δ : Q Σ ε Γ P(Q Γ ) (siirtymäfunktio) q 0 Q (alkutila) Γ (alustussymboli) F Q (hyväksyvät tilat)
Tilanteet Äärellisen automaatin toiminnan seuraamiseen riittää tietää kulloinenkin tila ja jäljellä oleva syöte. Pinoautomaateilla tarvitaan lisäksi pinon kulloinenkin sisältö. Pinoautomaatin tilanne 2 on kolmikko (q, w, γ), missä q Q on kulloinenkin tila w Σ on jäljellä oleva syöte γ Γ on kulloinenkin pinon sisältö Käytetään tarvittaessa kirjaimia I, J, K viittaamaan mielivaltaisiin tilanteisiin. 2 engl. configuration, instantaneous description
Tilasiirtymät Olkoon M = (Q, Σ, Γ, δ, q 0,, F). Määritellään kahden tilanteen välinen relaatio M seuraavasti: kaikilla q, q Q, c Σ ε, w Σ, d Γ ja γ, γ Γ, jos (q, γ ) δ(q, c, d) pätee, niin (q, cw, dγ) M (q, w, γ γ) pätee Määritellään lisäksi seuraavasti: I M I I M J J M K I M K kaikilla I, J, K Q Σ Γ
Esimerkki taululla w = (( v = () A (, 1 B D ε, ε C (,1 11 ),1 ε ),1 ε
:n eri kielet Olkoon M = (Q, Σ, Γ, δ, q 0,, F). M voi tunnistaa kielen usealla eri tavalla. M tunnistaa hyväksyvällä tilalla kielen L(M) = { w Σ q F F; γ Γ : (q 0, w, ) M (q F, ε, γ) } M tunnistaa tyhjentämällä pinonsa kielen 3 N(M) = { w Σ q Q: (q 0, w, ) M (q, ε, ε) } Jokaiselle :lle M on olemassa M, jolle pätee L(M) = N(M ). Jokaiselle :lle M on olemassa M, jolle pätee N(M) = L(M ). 3 N tulee sanasta null eli tyhjä.
vs CFG Lause Kaikki kontekstittomat kielet voidaan tunnistaa pinoautomaatilla. Lause Kaikki pinoautomaatilla tunnistettavissa olevat kielet ovat kontekstittomia kieliä.
Kontekstiton kielioppi :ksi Olkoon annettuna kontekstiton kielioppi G = (V, Σ, P, S). Rakennetaan M = ({q}, Σ, V Σ, δ, q, S, ) seuraavasti: {(q, ε)} jos c = d δ : (q, c, d) { (q, ω) (A ω) P } jos c = ε ja d = A muuten Tällöin L(G) = N(M).
Esimerkki talululla E c E + E E E (E)
kontekstittomaksi kieliopiksi Olkoon M = (Q, Σ, Γ, δ, q 0,, F). Rakennetaan kontekstiton kielioppi G = (V, Σ, P, S) seuraavasti: V = {S} { A pdq p, q Q d Γ } P = { (S A q0 q) q Q } (A pdq c) (q, ε) δ(p, c, d) } { } (r 0, d 1... d k ) δ(p, c, d) (A pdrk ca r0 d 1 r 1... A rk 1 d k r k ) r 1,..., r k Q Tällöin L(G) = N(M). 4 4 Huomaa, että A pdq tuottaa ne merkkijonot, jotka lukemalla automaatti päätyy tilasta p tilaan q (netto)poistamalla pinosta merkin d.
Esimerkki taululla i, e, ε A
pinoautomaatti Pinoautomaatti, jolle pätevät q Q; c Σ ε ; d Γ : δ(q, c, d) 1 q Q; d Γ : ( c Σ : δ(q, c, d) = ) δ(q, ε, d) = on deterministinen. pinoautomaatti ei kykene tunnistamaan mm. kieltä { ww R w Σ } (todistus on teknisesti hankala joten se sivuutetaan). pinoautomaatti ei kykene tunnistamaan tyhjentämällä pinonsa edes kaikkia säännöllisiä kieliä!
Jay Earley: An Efficient Context-Free Parsing Algorithm. Communications of the ACM, 13 (2), pp. 94 102, 1970. Syötteenä CFG G ja merkkijono w, tulosteena tieto, päteekö w L(G). CFG:stä laaditun :n muunnelma
Asetelmat Algoritmi pitää kirjaa kolmesta asiasta: produktio, jota ollaan soveltamassa kuinka pitkälle produktion oikealla puolella ollaan päästy mistä kohtaa syötemerkkijonoa produktion käsittely alkoi Tällaisia kirjauksia kutsutaan asetelmiksi (engl. item) Asetelma, jossa sovelletaan produktiota A α 1... α n, jossa on jo käsitelty k ensimmäistä oikean puolen merkkiä ja jonka produktion käsittely alkoi syötemerkistä numero l, esitetään muodossa 5 A α 1... α k α k+1... α n, l 5 Huomaa piste!
Lähtökohdat Algoritmi olettaa: kieliopin alkusymbolilla on täsmälleen yksi produktio alkusymboli ei esiinny minkään produktion oikealla puolella Merkitään syötemerkkijonoa w = c 0... c n 1. Tarvitaan apujoukkoja yksi enemmän kuin syötemerkkijonossa on merkkejä. Merkitään niitä S 0,..., S n. Kukin apujoukko sisältää asetelmia.
Earleyn tunnistin 1. Alustetaan: 6 S 0 = {(S ω S, 0)} i {1,..., n} : S i = 2. Kaikilla i = 0,..., n (tässä järjestyksessä) ja jokaisella s S i tehdään yksi seuraavista: Ennustus Jos s on muotoa A ω Bω, f : Jokaiselle produktiolle B ω B P lisää S i :hin B ω B, i. Täydennys Jos s on muotoa A ω, f : Jokaiselle (B ω B Aω B, f ) S f lisää S i :hin B ω B A ω B, f. Selaus Jos s on muotoa A ω cω, f ja c = c i : Lisää S i+1 :een A ωc ω, f. 3. Palauta, päteekö (S ω S, 0) S n. 6 Olkoon S ω S kieliopin alkusymbolin ainoa produktio.
Esimerkki taululla E E + E E E c w = c + c c