ja ja TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho NFA:ksi TIETOTEKNIIKAN LAITOS 16. marraskuuta 2015
Sisällys ja NFA:ksi NFA:ksi
Kohti säännöllisiä lausekkeita ja Nämä tiedetään: ε on kieli. S Σ on kieli. Jos A on kieli, niin A on kieli. Jos A ja B ova säännöllisiä kieliä, niin AB on kieli. Jos A ja B ova säännöllisiä kieliä, niin A B on kieli. Voidaanko kaikki säännölliset kielet ilmaista näiden yhdistelyn avulla? Ratkaisuun tarvitaan: Tarkka määritelmä yhdistelemiselle. Todistus sille, että DFA:sta voidaan rakentaa yhdistelmä. NFA:ksi
1 ja Määritelmä Olkoon M = {,,, (, )} ja olkoon Σ merkistö.. Voidaan olettaa, että Σ M =. (engl. regular expressions) ovat seuraavat merkistön Σ M merkkijonot ja vain ne: (), c, jos c Σ, r, jos r on (r 1 r 2 ), jos r 1 ja r 2 ovat säännöllisiä lausekkeita, (r 1 r 2 ), jos r 1 ja r 2 ovat säännöllisiä lausekkeita, Säännöllisten lausekkeiden joukkoa merkitään R Σ. NFA:ksi 1 Yksinkertaistettu versio regexpeistä.
Huomioita säännöllisistä lausekkeista ja NFA:ksi Käytännössä sulkeita ei läheskään aina kirjoiteta näkyviin. Operaattoreiden presedenssijärjestys on edellisen kalvon mukainen korkeammalla mainittu lasketaan ensin.
Säännöllisten lausekkeiden tulkinta ja Määritelmä Olkoon Σ merkistö ja R Σ säännöllisten lausekkeiden joukko. Määritellään tulkintafunktio : R Σ P(Σ ) seuraavasti: NFA:ksi = () = {ε} c = {c} (c Σ) r = r (r R Σ ) (r 1 r 2 ) = r 1 r 2 (r 1, r 2 R Σ ) (r 1 r 2 ) = r 1 r 2 (r 1, r 2 R Σ )
Regexpit Työkalujen kuten egrep tukemat säännölliset ovat edellä esitetyn teoreettisen käsitteen laajennuksia. Tällä kurssilla viittaa tänään esitettyyn teoreettiseen käsitteeseen; työkalujen ymmärtämiä muunnelmia kutsumme regexpeiksi. Lähes kaikki regexpit on kirjoitettavissa myös säännöllisiksi lausekkeiksi ja NFA:ksi [0-9] (0 1 2 3 4 5 6 7 8 9) r? (() r) r+ rr r{2,4} (rr rrr rrrr) Poikkeuksena ns. takaisinviittaukset (engl. back reference)
Algoritmi: NFA:ksi 2 ja Kutsu MYT(r) Syöte r R Σ Tulos M on NFA, jolle pätee L(M) = r. Jos r =, on M seuraava NFA: NFA:ksi Jos r = (), on M seuraava NFA: (jatkuu seuraavilla kalvoilla) 2 Tämä on ns. McNaughtonin, Yamadan ja Thompsonin (MYT) algoritmi.
MYT-algoritmi jatkuu Jos r = c jollakin c Σ, on M seuraava NFA: c Jos r = r1 jollakin r 1 R Σ, on M seuraava NFA 3 ε ja NFA:ksi ε r 1 ε ε kun rekursiivisen kutsun MYT(r 1 ) palauttama automaatti on r 1 3 Tuplakatkoviivalla merkittyjä siirtymiä tehdään yhtä monta kuin MYT(r 1 )-automaatissa on hyväksyviä tiloja.
MYT-algoritmi jatkuu ja Jos r = (r 1 r 2 ) joillakin r 1 r 2 R Σ, on M seuraava NFA 4 ε r 1 ε r 2 NFA:ksi kun rekursiivisen kutsun MYT(r i ) palauttama automaatti on r i kullakin i {1, 2}. 4 Tuplakatkoviivalla merkittyjä siirtymiä tehdään yhtä monta kuin MYT(r 1 )-automaatissa on hyväksyviä tiloja.
MYT-algoritmi jatkuu Jos r = (r 1 r 2 ) joillakin r 1 r 2 R Σ, on M seuraava NFA ε r 1 ja NFA:ksi ε r 2 kun rekursiivisen kutsun MYT(r i ) palauttama automaatti on r i kullakin i {1, 2}.
ja Lause Olkoon Σ merkistö. Jokaiselle kielelle A Σ seuraavat ovat yhtäpitävät: 1. On olemassa r R Σ, jolle r = A pätee. 2. A on kieli. NFA:ksi Todistus 1 2: Seuraa MYT-algoritmista. 2 1: Seuraavilla kalvoilla.
Todistuksen strategia ja 1. Määritellään äärellisen automaatin variantti (äärellinen automaatti), jossa siirtymät tapahtuvat säännöllisillä lausekkeilla. 2. Todetaan, että jokainen DFA on myös automaatti (joka tunnistaa saaman kielen). 3. Määritellään joukko automaatin muunnoksia, joilla on seuraavat ominaisuudet: ne kaikki säilyttävät automaatin tunnistaman kielen kukin niistä pienentää automaatin kokoa (siirtymien määrää) 4. Lisätään tilpehöörit. NFA:ksi
Äärellinen automaatti ja Määritelmä Viisikko (Q, Σ, δ, q 0, F) on äärellinen automaatti, jos Q on äärellinen (tilojen) joukko, Σ on äärellinen, epätyhjä joukko (merkistö), δ : Q R Σ P(Q) pätee (siirtymäfunktio), { (q, r) Q R Σ δ(q, r) = } on äärellinen, 5 q 0 Q pätee (alkutila) ja F Q pätee (hyväksyvät tilat). NFA:ksi 5 Toisin kuin luennolla väitin, tämä on oikein, sillä P(Q) on äärellinen ja siten tämä määritelmä takaa, että siirtymiä on äärellinen määrä.
Lausekeautomaatin toiminta ja Olkoon M = (Q, Σ, δ, q 0, F) epädeterministinen äärellinen automaatti. Jokaiselle merkkijonolle w on mahdollisesti olemassa tilajonoja, jotka ovat muotoa q 1,..., q n ja joille w on jaettavissa osiin 6 w = w 0,..., w n 1, joille pätee r R Σ : w k r q k+1 δ(q k, r) kaikilla k = 0,..., n 1. Kunkin tällaisen jonon viimeinen tila q n on merkkijonon w päätöstila automaatissa M. Tyhjän merkkijonon päätöstilaksi automaatissa M lasketaan myös q 0. M hyväksyy merkkijonon, jos jokin sen päätöstiloista M:ssä kuuluu F:ään; muuten se hylkää sen. M:n hyväksymien merkkijonojen joukko on sen (tunnistama) kieli. NFA:ksi 6 Huomaa indeksoinnin ero!
Muunnosinvariantit ja Jokaisen muunnoksen tulee säilyttää seuraavien väitteiden totuus: Automaatin alkutilaan ei tule yhtään siirtymää. Automaatissa on täsmälleen yksi hyväksyvä tila, ja se ei ole alkutila eikä siitä lähde siirtymiä. Automaatissa ei ole tiloja, joihin ei pääse alkutilasta siirtymiä seuraamalla. 7 Kutsutaan tällaista automaattia hyväksi. NFA:ksi 7 Siirtymät -lausekkeella sallitaan.
Yksi mahdollinen alustus ja Aloitetaan DFA:sta (tai ) tulkittuna automaatiksi. Lisätään automaattiin uusi alkutila ja uusi hyväksyvä tila, ja muutetaan kaikki vanhat hyväksyvät tilat ei-hyväksyviksi. Lisätään uudesta alkutilasta ()-siirtymä vanhaan alkutilaan. Lisätään jokaisesta alun perin hyväksyvästä tilasta ()-siirtymä uuteen hyväksyvään tilaan. Lisätään uudesta alkutilasta kaikkiin muihin tiloihin -siirthmät. NFA:ksi
Muunnos I ja Syöte Lausekeautomaatti Tulos Lausekeautomaatti Valitaan tilat q 1 ja q 2 ja säännölliset r a ja r b, joille on siirtymät 8 r q a r 1 q2 ja q b 1 q2. Korvataan kyseiset siirtymät yhdistetyllä siirtymällä q 1 (r a r b ) q 2. NFA:ksi 8 Käytän tässä q 1 r q 2 tarkoittamaan samaa kuin q 2 δ(q 1, r).
Muunnos II Syöte Lausekeautomaatti Tulos Lausekeautomaatti Valitaan tila q, joka ei ole alkutila eikä hyväksyvä tila Määritellään r seuraavasti: Jos siirtymiä q :sta q :hun ei ole, niin r = () on yksi, niin r on sen on useampia, säännöllisin lausekkein s 1,..., s n, niin r = (s 1 s n ) ja NFA:ksi r 1 r Lisätään tilasiirtymä q r 2 1 q 2 jos on tilasiirtymät r q 1 r 1 q ja q 2 q2 (missä q 1 ja q 2 eivät ole q ) Poistetaan tila q sekä tilasiirtymät q :iin ja q :sta.
Esimerkki taululla ja NFA:ksi a 0 b 1 a b 0 0 1 1 1 1 a,b
Todistettava ja Oletus Automaatti täyttää aiemmalla kalvolla luetellut invarianttiehdot. Väitteet 1. Jos automaatissa on enemmän kuin yksi siirtymä, siihen voidaan soveltaa jotain muunnosta. 2. Jos automaattiin sovelletaan jotain muunnosta, 2.1 se täyttää tämän jälkeen invarianttiehdot. 2.2 sen tunnistama kieli ei muutu. 2.3 siinä on tämän jälkeen vähemmän siirtymiä. 3. Jos automaatissa on täsmälleen yksi siirtymä, se on alkutilasta hyväksyvvään tilaan. NFA:ksi
ja Lemma (Eteneminen) Jos hyvässä automaatissa on vähintään kaksi siirtymää, niin siihen voidaan soveltaa joko Muunnosta I tai Muunnosta II. NFA:ksi Todistus Taululla.
ja Lemma (Säilyminen) Jos hyvään automaattiin sovelletaan Muunnosta I tai Muunnista II, tuloksena syntyvä automaatti 1. on hyvä, 2. sisältää vähemmän tilasiirtymiä kuin alkuperäinen automaatti, ja 3. tunnistaa saman kielen kuin alkuperäinen automaatti. NFA:ksi Todistus Taululla (ja tarkemmin jälkiprujussa).
Algoritmina ja NFA:ksi 1. Muuta syötteenä saatu DFA tai NFA hyväksi automaatiksi. 2. Sovella toistuvasti Muunnosta I ja Muunnosta II kunnes automaatissa on enää yksi tilasiirtymä. 3. Lue tulos automaatin ainoasta tilasiirtymästä.