TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 12. marraskuuta 2015
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 11 i 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 k A1 i A2 s A3 s A4 a A5 0 ε B0 k B1 o B2 i B3 r B4 a B5 Valitettavasti tällainen M ei ole DFA...
... mutta se on NFA eli epädeterministinen äärellinen automaatti. NFA 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. NFA:n epädeterminismi on hyväntahtoista, koska NFA 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.
NFA matemaattisesti Merkintätapa Merkitään jatkossa Σ ε = Σ {ε}. Huomautus Voidaan olettaa, että ε Σ. Määritelmä Viisikko (Q, Σ, δ, q 0, F) on epädeterministinen äärellinen automaatti (NFA), 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).
NFA:n toiminta formaalisti Olkoon M = (Q, Σ, δ, q 0, F) epädeterministinen äärellinen automaatti. Jos epätyhjälle merkkijonolle w = c 0 c n 1 Σ \ {ε}, jolle c 0,..., c n 1 Σ ε, on olemassa tilajono 1 q 1,..., q n, jolle pätee q k+1 δ(q k, c k ) kaikilla k = 0,..., n 1, niin tämän jonon viimeinen tila q n on merkkijonon w eräs päätöstila automaatissa M. Tyhjän merkkijonon päätöstiloihin automaatissa M kuuluu lisäksi q 0. M hyväksyy (engl. accept) merkkijonon w Σ, jos ainakin yksi sen päätöstiloista M:ssä kuuluu F:ään; muuten se hylkää (engl. reject) sen. 1 Huomaa indeksoinnin ero!
Vaihtoehtoinen muotoilu Olkoon M = (Q, Σ, δ, q 0, F) NFA. 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) w Lause: Jos ja vain jos q 0 q pätee, niin tila q on merkkijonon w (jokin) päätöstila. M:n kieli on L(M) = { w Σ q F: q 0 w q }
Yleistetty siirtymäfunktio δ : Q Σ P(Q) δ (q, w) = { q Q q w q }
NFA:lla Olkoon M A = (Q A, Σ A, δ A, q A, F A ) NFA. Olkoon M B = (Q B, Σ B, δ B, q B, F B ) NFA. Voidaan olettaa: Q A Q B = ja q 0 Q A Q B. Konstruoidaan M = (Q A Q B {q 0 }, Σ A Σ B, δ, q 0, F A F B ) missä {q A, q B } jos q = 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 NFA:sta. On helppo nähdä, että jokainen DFA voidaan muokata NFA:ksi. Lisäksi tarvitaan... Lause Jokaiselle NFA:lle M on olemassa DFA M, jolle pätee L(M) = L( M).
Spontaanien siirtymien poisto Lemma Olkoon M = (Q, Σ, δ, q 0, F) NFA. 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.
Lause Jokaiselle NFA: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 sopii NFA DFA-muunnosalgoritmin pohjaksi. Se tuottaa runsaasti turhia tiloja. Käytännössä kannattaa muodostaa osajoukko-tila vasta, kun sitä tarvitaan, siis laiskasti.
Esimerkki taululla a 0 a,b 1 a
Esimerkki taululla ε A0 k A1 i A2 s A3 s A4 a A5 0 ε B0 k B1 o B2 i B3 r B4 a B5