säännölliset kielet TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 9. marraskuuta 2015
Sisällys
toiminta formaalisti Olkoon M = (Q, Σ, δ, q 0, F) deterministinen äärellinen automaatti. Jokaiselle epätyhjälle merkkijonolle w = c 0 c n 1 Σ \ {ε} on olemassa samanpituinen tilajono 1 q 1,..., q n, jolle pätee q k+1 = δ(q k, c k ) kaikilla k = 0,..., n 1. Tämän jonon viimeinen tila q n on merkkijonon w päätöstila automaatissa M. Tyhjän merkkijonon päätöstila automaatissa M on q 0 M hyväksyy (engl. accept) merkkijonon w Σ, jos sen päätöstila M:ssä kuuluu F:ään; muuten se hylkää (engl. reject) sen. 1 Huomaa indeksoinnin ero!
Vaihtoehtoinen formalisointi Määritelmä Olkoon M = (Q, Σ, δ, q 0, F) deterministinen äärellinen automaatti. Sen yleistetty siirtymäfunktio δ : Q Σ Q määritellään rekursiivisesti: δ (q, ε) = q δ (q, wc) = δ(δ (q, w), c) Lause Olkoon M = (Q, Σ, δ, q 0, F) deterministinen äärellinen automaatti ja olkoon w Σ jokin merkkijono. Tällöin w:n päätöstila M:ssä on δ (q 0, w). Todistus...?
Todistamisesta 1. Tunnista todistettavan lauseen oletukset ja väite. Usein: Olkoon oletukset. Tällöin väite. Oletuksina voi aina käyttää myös kaikkea, mikä on aiemmin todistettu. 2. Koeta johtaa aukoton päättelyketju oletuksista väitteeseen. Päättelyn tulee olla deduktiivinen: johtopäätöksen tulee päteä aina kuin oletukset pätevät. 3. Esitä päättelyketju selkeällä suomen kielellä niin, että päättelyn looginen rakenne on esityksestä helposti luettavissa.
Suoria päättelystrategioita oletukseen vetoaminen: voit aina vedota oletuksiin ja aiemmin todistettuihin teoreemoihin lemmaan vetoaminen: muotoile hankala todistusaskel apulauseeksi eli lemmaksi, jonka todistat erikseen tapauksittainen päättely Jaa väite useaan eri tapaukseen, jotka yhdessä kattavat koko väitteen. Todista jokainen tapaus erikseen. väitteen yleistys Valitse jokin todistettavaa väitettä P yleisempi väite Q Riittää osoittaa, että Q. Tarvittaessa on osoitettava, että Q todella on P:tä yleisempi. Osoita, että Q seuraa oletuksista.
Suoria päättelystrategioita päättely mielivaltaisella alkiolla Toimii, jos väite on muotoa x S: P(x) Aloita todistus sanomalla Olkoon x S mielivaltainen. Päättele niin kuin parhaaksi näet, että P(x) pätee tällä mielivaltaisella alkiolla. Voit käyttää x:ää kuten mitä tahansa S:n alkiota. Päättelysi pitää olla pätevä, jos x korvataan millä vain S:n alkiolla! konstruktiivinen päättely Toimii jos väite on muotoa x S: P(x). Anna konkreettinen esimerkki S:n alkiosta, jolle P pätee.
Ristiriitatodistus 1. Tee vastaoletus, että väite on epätosi. 2. Johda vastaoletuksesta ristiriita. Voit monessa tapauksessa johtaa konstruktiivisella päättelyllä vastaesimerkin. 3. Päättele tästä, että väite on tosi.
(Matemaattinen) induktio Toimii, kun väite on (tai voidaan tulkita olevan) muotoa n N: P(n) Esim. väite joka koskee kaikkia merkkijonoja voidaan tulkita koskemaan kaikkia merkkijonojen pituuksia (induktio merkkijonon pituuden suhteen) 1. Perusaskel: Osoita, että väite on tosi nollan tapauksessa, P(0). 2. Induktioaskel: Tee induktio-oletus, että väite pätee mielivaltaisella luvulla n. Johda siitä, että väite pätee luvulla n + 1. Toisin sanoen, osoita n N: P(n) P(n + 1). Voit myös tehdä induktio-oletuksen, että väite pätee n:n lisäksi kaikilla n:ää pienemmillä luvuilla. 3. Johtopäätös: Päättele tästä, että väite pätee kaikilla kokonaisluvuilla.
Yleisiä (deduktiivisen) päättelyn virheitä Todennäköisyyteen vetoaminen: Ei riitä osoittaa, että väite on todennäköisesti tai melkein aina tosi. Virheellinen käänteinen päättely: Osoitetaan, että väitteestä seuraa oletukset. Käsittelemättä jäänyt tapaus: Tapauksittaisessa todistuksessa jokin mahdollinen tapaus jää käsittelemättä. Kehäpäätelmä: Otetaan oletuksiin mukaan se, mitä ollaan todistamassa. Huom! Matemaattinen induktio ei ole kehäpäätelmä. Virheellinen (matemaattinen) induktio: Unohdetaan todistaa perustapaus. Induktioaskel ei ulotu perustapaukseen asti.
Todistuksen tarkkuustasot Täsmällinen (formaali) Todistus kirjoitetaan niin, että se voidaan antaa tietokoneen tarkastettavaksi (ks. esim Isabelle tai Coq) Matemaatikon tarkkuus Todistus esitetään siten, että sen vakuuttaa (ihmis)lukijansa. Vaadittu tarkkuustaso vaihtelee sen mukaan, kuinka kokeneeksi lukija oletetaan. Tarvittaessa todistusta tarkennetaan tai korjataan. 2 Idea Esitetään todistuksen keskeinen oivallus, mutta niin paljon jätetään sanomatta, että vakuuttavaksi (matemaatikon tarkkuuden) todistukseksi sitä ei voi vielä laskea. 2 Ks. esim. Imre Lakatos: Proofs and Refutations: The Logic of Mathematical Discovery. Cambridge University Press, 1976.
Kokeillaas tällä Määritelmä Olkoon M = (Q, Σ, δ, q 0, F) deterministinen äärellinen automaatti. Sen yleistetty siirtymäfunktio δ : Q Σ Q määritellään rekursiivisesti: δ (q, ε) = q δ (q, wc) = δ(δ (q, w), c) Lause Olkoon M = (Q, Σ, δ, q 0, F) deterministinen äärellinen automaatti ja olkoon w Σ jokin merkkijono. Tällöin w:n päätöstila M:ssä on δ (q 0, w). Todistus Taululla.
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
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 }
Esimerkki Väite Olkoon M seuraava DFA: a a,b 0 b 1 Nyt L(M) = { a k bu k N u {a, b} }. Todistus Tehdään taululla.
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ä.
Minkälaisia ovat? 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 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 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.