TIEA241 Automaatit ja kieliopit, kesä 2013 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 24. toukokuuta 2013
Sisällys
Formaalit kielet On tapana sanoa, että merkkijonojen joukko on (formaali) kieli. Hieman hölmöä kyllä, sillä kieleen liittyy oikeasti myös sen tulkinta mitä sen merkkijonot tarkoittavat. Tällä kurssilla (ja ylipäätään formaalien kielten teoriassa) kuitenkin jätetään merkitysoppi pääosin huomiotta! luonnollisten kielten (suomi, englanti) osalta kielitieteen puolella ohjelmointikielten osalta TIES542 Ohjelmointikielten periaatteet
DFA:n kieli Olkoon M = (Q, Σ, δ, q 0, F) jokin DFA. Muistathan päätöstilan käsitteen! Päätöstila on se tila, johon merkkijonon käsittely päätyy eli δ (q 0, w). Muistatko, milloin M hyväksyy merkkijonon? Niiden merkkijonojen, jotka M hyväksyy, joukkoa sanotaan sen (tunnistamaksi) kieleksi L(M) = { w Σ δ (q 0, w) F }
Määritelmä: Merkkijonojen joukko on säännöllinen kieli (engl. regular language) eli rationaalinen kieli (engl. rational language), jos 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ä.
DFA:n kieleen liittyvät todistukset 1 Olkoon M = (Q, Σ, δ, q 0, F) jokin DFA. Olkoon P( ) jokin merkkijonojen ominaisuus. Olkoon todistettavana väite w Σ : w L(M) P(w) Muotoillaan automaatin kullekin tilalle q väite P q ( ), joka on niiden merkkijonojen ominaisuus, joiden päätöstila on q. Osoitetaan ensiksi, mikäli se ei ole ilmeistä, väite w Σ : P(w) q F: P q (w) Todistettavaksi jää w Σ : q Q: q = δ (q 0, w) P q (w). 1 Korjattu luennon jälkeen.
Esimerkki Väite Olkoon M seuraava DFA: 0 a b 1 a,b Nyt L(M) = { a k bu k N u {a, b} }. Todistus Tehdään taululla.
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 } ((kielten) 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) Jos A B on säännöllinen kun A ja B ovat säännöllisiä, niin on säännöllinen operaattori (engl. regular operator).
Todistustekniikka Kaikille edellisen kalvon kysymyksille 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 kielellä 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 demoissa tai myöhemmin.
Todistettava lause Oletukset 1. Σ on aakkosto 2. A, B Σ ovat säännöllisiä kieliä. Väite 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. Tehdään taululla.
Grep-ohjelma alkaa https: //yousource.it.jyu.fi/tiea241-running-example/ grep/trees/luento_20130523 Nyt toteutettu DFA, mukaan lukien yhdiste-dfa. Grep tekee valmistuttuaan varsinaisen tekstihaun käyttäen regexpistä muodostettua DFA:ta Katsotaan tarkemmin koodia lukemalla.