TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 19. syyskuuta 2016
Sisällys
Neuvoja opintoihin tee joka päivä ainakin vähän uskalla mennä epämukavuusalueelle en osaa ei ole syy keskeyttää; se on syy jatkaa opiskelemista pyydä apua tarvittaessa, (mm.) siitä meille maksetaan Huom! 5 op / 7 vkoa 20 h/vko
DFA:n kieli Olkoon M = (Q, Σ, δ, q 0, F) jokin DFA. Niiden merkkijonojen, jotka M hyväksyy, joukkoa sanotaan sen (tunnistamaksi) kieleksi L(M) = { w Σ δ (q 0, w) F }
Esimerkki Merkintä Olkoon a Σ mielivaltainen merkki. Tällöin merkitään a 0 = ε ja a k+1 = a k a = aa k kaikilla k N. Väite Olkoon M seuraava DFA: 0 a b 1 a,b Nyt L(M) = { a k bu {a, b} k N u {a, b} }. Todistus Käsitellään ideatasolla, tarkka todistus jälkiprujussa.
Määritelmä: Merkkijonojen joukko on säännöllinen kieli (engl. regular language) eli rationaalinen kieli (engl. rational language), joss on olemassa deterministinen äärellinen automaatti, joka tunnistaa sen.
Säännöllisiä kieliä 1. 2. { 0 k 1 l k, l N } 3. { kissa, koira } 4. Kaikki sellaiset merkeistä 0 ja 1 koostuvat merkkijonot, joissa on parillinen määrä sekä 0:ia että 1:iä.
Minkälaisia ovat säännölliset kielet? Säännöllinen kieli on määritelmän mukaan kieli, jonka jokin DFA tunnistaa. Jos A Σ on säännöllinen kieli, onko Σ A säännöllinen kieli? Jos A, B Σ ovat säännöllisiä kieliä, ovatko seuraavat kielet säännöllisiä? A B A B AB = { vw v A w B } (() yhdistäminen) A + = A n (Kleenen plus) A = n=1 A 0 = {ε} A n+1 = A n A kaikilla n N n=0 A n (Kleenen tähti)
Sulkeumaominaisuudet ja säännölliset Väite Jos A ja B ovat säännöllisiä kieliä, niin A B on säännöllinen kieli on säännöllisten sulkeumaominaisuus. Sama väite voidaan ilmaista myös muodossa säännölliset kielet ovat suljettuja :n suhteen. Jos väite pätee, niin on säännöllinen operaattori (engl. regular operator).
Todistustekniikka Kaikille sulkeumaominaisuusväitteille on yhteistä muoto jos jotkin kielet ovat säännöllisiä, niin eräs kieli on säännöllinen. Määritelmällisesti tämä on sama kuin jos joillekin kielille on kunkin tunnistava äärellinen automaatti, niin eräälle kielelle on sen tunnistava äärellinen automaatti. Todistusstrategia on luonnollisimmin: esitetään menetelmä, jolla annetuista automaateista voidaan rakentaa halutunlainen koostettu automaatti. Tehdään A B luennolla, loput joko harjoitustehtävinä tai myöhemmin.
Todistettava lause Lause Olkoon Σ merkistö ja A, B Σ säännöllisiä kieliä. Tällöin A B Σ on säännöllinen kieli.
Todistuksen idea On olemassa DFA:t M A ja M B, joille pätee L(M A ) = A ja L(M B ) = B. Rakennetaan DFA M, jolle pätee L(M) = A B käyttäen hyväksi koneita M A ja M B. M simuloi M A :ta ja M B :tä rinnakkain. M hyväksyy, jos jompi kumpi hyväksyy. Pohdittavaksi: miksi rinnakkain, miksi ei peräkkäin? M:llä on tila kutakin paria (a, b) kohti, missä a on M A :n tila ja b on M B :n tila.
Matemaatikon tarkkuudella? Annetaan tarkka konstruktio M:lle. Tarkkaan todistukseen kuuluu myös Osoitetaan, että M:n konstruktio täyttää deterministisen äärellisen automaatin vaatimukset. Osoitetaan, että L(M) = A B. mutta nämä ovat tässä tapauksessa selkeitä, joten matemaatikon tarkkuudella ne jätetään lukijalle harjoitustehtäväksi.
Konkreettinen esimerkki 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 Σ w q F: q 0 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). Todistus Seuraavalla luennolla.
NFA:n koodaaminen kuten DFA, mutta siirtymiä voi olla useita kaksi perusstrategiaa epädeterminismin kanssa: syvyyshaku eli backtracking leveyshaku ε-siirtymät vaativat erityistarkkuutta
Esimerkkiohjelman automaatit a,b a0 a a1 b a2 a a3 b a4 a,b a,b a,b b0 b b1 a b2 b b3 a b4 a b5