TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 3. joulukuuta 2015
Sisällys
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ä!
lemma (kontekstittomat kielet) Lause Olkoon A Σ kontekstiton kieli. Tällöin on olemassa luku p (pumppauspituus), jolle kaikilla s A, s p, on olemassa u, v, w, x, y Σ, joille s = uvwxy ja 1. vx = ε 2. vwx p 3. uv i wx i y A kaikilla i N pätevät. Todistus Jälkiprujussa.
Esimerkki A = { a i b i c i i N }
Kontekstiset kieliopit Kontekstinen (engl. context-sensitive) kielioppi on kontekstittomien kielioppien yleistys Produktiot ovat muotoa ω ω tai S ε ω, ω (V Σ) +, ω ω S on aloitussymboli Jos kieliopissa on S ε, niin S ei saa esiintyä minkään produktion oikealla puolella. Nimi kontekstinen tulee normaalimuodosta, jossa produktiot ovat muotoa ω 1 Aω 2 ω 1 ωω 2 tai S ε ω 1, ω 2 (V Σ), ω (V Σ) + ω 1 ja ω 2 muodostavat produktion kontekstin Kontekstisen kieliopin tuottama kieli määritellään johtojen käsitteen avulla kuten kontekstittomissa kieliopeissa. Kieli, joka voidaan tuottaa jollakin kontekstisella kieliopilla on kontekstinen kieli.
Esimerkki S abc aabc ε Ab ba Ac Bbcc bb Bb ab aa aaa
Yleinen eli rajoittamaton kielioppi on kontekstittomien kielioppien yleistys. Kuten kontekstittomissa kieliopeissa: välikesymbolien joukko V, päätesymbolien joukko Σ ja aloitussymboli S. Produktiot ovat muotoa ω 1 ω 2 ω 1 (V Σ) + nuolen vasemmallakin puolella saa siis olla mitä vain (paitsi ei tyhjää)! ω 2 (V Σ) Kieliopin tuottama kieli määritellään johtojen käsitteen avulla tavanomaiseen tapaan. Kieli, joka voidaan tuottaa jollakin yleisellä kieliopilla on laskettavasti lueteltava (engl. computably enumerable). 5 5 Historiallisista syistä myös termiä rekursiivisesti lueteltava (engl. recursively enumerable) käytetään.
Esimerkki taululla Laaditaan kielioppi, joka tuottaa kielen { a 2n n N }.