TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011



Samankaltaiset tiedostot
Kaikki mitä olet aina halunnut tietää pumppauslemmoista, mutta mitä et ole kehdannut kysyä

Laskennanteoria: Mitä voimmelaskea tietokoneella ja kuinkatehokkaasti?

Johdatus matemaattiseen päättelyyn

6/20: Tietorakenteita

DISKREETTI MATEMATIIKKA

Pohjoismaisten matematiikkakilpailujen tehtävät ja ratkaisut

Käsikirja Mathcad 15.0 Lokakuu 2010

Jarkko Peltomäki. Järjestetyt joukot ja hilat

Palloja voi pyörittää kevyellä liikkeellä normaaliasennosta (harmaa) vaakatasossa niin, että numerot tulevat

Itseindeksit Kun tiivistetty teksti ja sen indeksi ovatkin sama asia

Alkusanat ja sisällysluettelo

2. Polynomien jakamisesta tekijöihin

1.1 Tavallinen binäärihakupuu

Kreikkalainen historioitsija Herodotos kertoo, että Niilin tulvien hävittämät peltojen rajat loivat maanmittareiden

SOPIMUS ELOKUVIEN VAPAAEHTOISESTA TALLETTAMISESTA ELOKUVA- ARKISTOIHIN

Tiedon tuonti. Sisältö

Karttojen värittäminen

1.1 Yhtälön sieventäminen

EXCEL - TAULUKKOLASKENTA...2 ALOITUS...2 PERUSTAULUKKO...3 TYÖKIRJA...3

TD käyttöohje Kisakone versio 2.0

Kirjallisuuden vaihto hankintatapana

NAVIGON 20 EASY NAVIGON 20 PLUS

4 Merkintätavat. 4.1 Lainaukset ja niihin viittaaminen

ICS-C2000 Tietojenkäsittelyteoria Kevät 2015

BIOTIE THERAPIES OYJ. OSAKEPALKKIOJÄRJESTELMÄ (Osakepalkkiojärjestelmä 2014)

Sisältö 1 Tekijänoikeudet Johdatus M-Filesiin Ohjelmiston asennus ja käyttöönotto M-Filesin päivittäinen käyttö...

Y100 kurssimateriaali

Todennäköisyyslaskenta 1/7 Sisältö ESITIEDOT: joukko-oppi, lukumäärän laskeminen, funktiokäsite Hakemisto

Eero Ojanen. Hyvä päätös? polemia KAKS KUNNALLISALAN KEHITTÄMISSÄÄTIÖ

Tieto tietojenkäsittelytieteessä

Transkriptio:

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 31. maaliskuuta 2011

Sisällys

Sisällys

Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti lueteltava automaatti äärellinen pino lineaarirajoitettu Turingin kone

Suunnitelma Tiedämme jo: ε on säännöllinen kieli. S Σ on säännöllinen kieli. Jos A on säännöllinen kieli, niin A on säännöllinen kieli. Jos A ja B ova säännöllisiä kieliä, niin AB on säännöllinen kieli. Jos A ja B ova säännöllisiä kieliä, niin A B on säännöllinen 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ä.

Sisällys

Määritelmä Olkoon M = {,,, (, )} ja olkoon Σ merkistö, jolle pätee Σ M =. (engl. regular expressions) ovat seuraavat merkistön Σ M merkkijonot ε, c, jos c Σ, r, jos r on säännöllinen lauseke (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, ja vain ne. 1 Säännöllisten lausekkeiden joukkoa merkitään R Σ. 1 Käytännössä sulkeita ei läheskään aina kirjoiteta näkyviin. Operaattoreiden presedenssijärjestys on yllä korkeammalla mainittu lasketaan ensin.

Säännöllisten lausekkeiden tulkinta Määritelmä Olkoon Σ merkistö ja R Σ säännöllisten lausekkeiden joukko. Määritellään tulkintafunktio : R Σ P(Σ ) seuraavasti: = ε = {ε} 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 Σ )

käytännössä Yleisin käytännön sovellus on Unixin regexit, joita käytetään esim. egrep-ohjelmassa. Kääntäjien etupäässä voidaan käyttää säännöllisiä lausekkeita kuvaamaan kielen sanaset (flex ym.). Useimpien ohjelmointikielten kirjastoissa on toteutus Unixin regexien kaltaisille säännöllisille lausekkeille. Paaaaaaaaaaaaaljon sovelluksia!

Unixin regexien operaattorit r* tarkoittaa samaa kuin r edellä (Kleenen tähti) r+ tarkoittaa samaa kuin rr* (Kleenen plus) r 1 r 2 tarkoittaa samaa kuin edellä (valitaan joko r 1 tai r 2 ) r? tarkoittaa samaa kuin (() r) r{n} tarkoittaa r:n toistoa täsmälleen n kertaa. r{n, m} tarkoittaa r:n toistoa vähintään n ja enintään m kertaa. sulkeita () voidaan käyttää ryhmittelyyn ^ tarkoittaa syötteen tai rivin alkua (riippuu käyttöyhteydestä) $ tarkoittaa syötteen tai rivin loppua (riippuu käyttöyhteydestä) ilman näitä regex etsii osamerkkijonoa, johon regex täsmää

Unixin regexien merkkiluokat Seuraavat ovat tapoja ilmaista yhden merkin mittaisia kieliä:. tarkoittaa kieltä Σ [c 1 c 2 c n ] tarkoittaa kieltä {c 1,..., c n }. [^c 1 c 2 c n ] tarkoittaa kieltä Σ {c 1,..., c n }. hakasulkeissa (hatulla tai ilman) on mahdollista käyttää myös merkkiväliä, esim. a-z nimettyä merkkijoukkoa, esim. [:alpha:], [:digit:], [:alnum:] \., \* jne: erikoismerkki sellaisenaan

Esimerkkejä 1. [[:alpha:]][[:alnum:]]* 2. [+-]?([[:digit:]]+\.[[:digit:]]* [[:digit:]]*\.[[:digit:]]+) 3. [[:digit:]]{5} +[[:alpha:]]+( +[[:digit:]]{2})?

Sisällys

Lause Olkoon Σ merkistö. Jokaiselle kielelle K Σ seuraavat ovat yhtäpitävät: 1. On olemassa säännöllinen lauseke r R Σ, jolle r = K pätee. 2. On olemassa DFA M, jolle L(M) = K pätee. Todistus 1 2: Harjoitustehtävä. 2 1: Seuraavat kalvot. (ideatasolla).

Todistuksen strategia 1. Määritellään äärellisen automaatin variantti (lausekeautomaatti), jossa siirtymät tapahtuvat säännöllisillä lausekkeilla. 2. Todetaan, että jokainen DFA on myös lausekeautomaatti (joka tunnistaa saaman kielen). 3. Määritellään joukko lausekeautomaatin 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.

Lausekeautomaatti Määritelmä Viisikko (Q, Σ, δ, q 0, F) on lausekeautomaatti, jos Q on äärellinen (tilojen) joukko, Σ on äärellinen, epätyhjä joukko, joka ei sisällä tyhjän merkkijonon merkkinä käytettyä merkkiä ε (merkistö), δ : Q R Σ P(Q) pätee (siirtymäfunktio), { (q, r) Q R Σ δ(q, r) = } on äärellinen, q 0 Q pätee (alkutila) ja F Q pätee (hyväksyvät tilat).

Muunnosinvariantit 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. 2 2 Siirtymät -lausekkeella sallitaan.

Alustus Aloitetaan DFA:sta (tai NFA:sta) tulkittuna lausekeautomaatiksi. Jos automaatin alkutilaan tulee siirtymiä tai jos alkutila on hyväksyvä, lisätään uusi alkutila, josta on ε-siirtymä vanhaan alkutilaan. Jos automaatissa ei ole hyväksyviä tiloja, lisätään siihen sellainen, ja lisäksi siirtymä alkutilasta siihen lausekkeella. Jos automaatissa on useampi kuin yksi hyväksyvä tila, tai jos ainoasta hyväksyvästä tilasta lähtee siirtymiä, muutetaan ne kaikki ei-hyväksyviksi ja luodaan uusi hyväksyvä tila, johon tulee ε-siirtymät entisistä hyväksyvistä tiloista. Poistetaan kaikki turhat tilat (sellaiset, joihin ei pääse alkutilasta seuraamalla siirtymiä).

Muunnos I Valitaan tilat q ja q ja säännölliset r i ja r j, joille on siirtymät q r i q ja q r j q. 3 Poistetaan siirtymät q r i q ja q r j q. Lisätään siirtymä q (r i r j ) q. 3 Merkintä q r q tarkoittaa siirtymää q δ(q, r).

Muunnos II 4 Valitaan tila q, joka ei ole alkutila eikä hyväksyvä tila Määritellään säännöllinen lauseke r seuraavasti: Jos siirtymiä q :sta q :hun ei ole, niin r = ε. on yksi, niin r on sen säännöllinen lauseke. on useampia, säännöllisin lausekkein s 1,..., s n, niin r = (s 1 s n ). r i r Lisätään tilasiirtymä q r j i q j jokaiselle sellaiselle tilaparille (q i, q j ), joille on siirtymät Poistetaan q i r i q r j q j. kaikki siirtymät, jotka lähtevät tai tulevat q :sta. tila q. 4 Tämä kalvo on kokonaan uudelleen kirjoitettu luennon jälkeen.

Muunnos III Valitaan tila q, joka ei ole alkutila eikä hyväksyvä tila ja josta ei lähde yhtään siirtymää. Poistetaan kaikki siirtymät tilaan q. tila q.

Esimerkki taululla a 0 b 1 a b 0 0 1 1 1 1 a,b

Todistettava 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.

Yhteenveto esta Reitti säännöllisestä lausekkeesta DFA:han kulkee viime luennon kautta. Reitti DFA:sta säännölliseen lausekkeeseen kulkee lausekeautomaatin kautta. Tuloslauseke voidaan lukea muunnosten soveltamisen jälkeen automaatin ainoasta siirtymästä.