Automaattiteoria diskreetin signaalinkäsittelyn perusmallit ja -menetelmät ( diskreettien I/O-kuvausten yleinen teoria)

Samankaltaiset tiedostot
Output. Input Automaton

Esimerkki 1: Kahviautomaatti.

Luento 1: Alue ja tavoitteet. ICS-C2000 Tietojenkäsittelyteoria. Tietojenkäsittelyteoria

ICS-C2000 Tietojenkäsittelyteoria

ICS-C2000 Tietojenkäsittelyteoria

Tietojenkäsittelyteorian perusteet T/Y T /1002

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 22. toukokuuta 2013

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015

T /2 Tietojenkäsittelyteorian perusteet T/Y

M = (Q, Σ, Γ, δ, q 0, q acc, q rej )

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

Yhteydettömän kieliopin jäsennysongelma

Rajoittamattomat kieliopit

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

uv n, v 1, ja uv i w A kaikilla

Äärellisten automaattien ja säännöllisten kielten ekvivalenssi

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 19. syyskuuta 2016

Vaihtoehtoinen tapa määritellä funktioita f : N R on

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Rekursio. Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on

5.3 Ratkeavia ongelmia

Tietojenkäsittelyteorian alkeet, osa 2

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

Testaa: Vertaa pinon merkkijono syötteeseen merkki kerrallaan. Jos löytyy ero, hylkää. Jos pino tyhjenee samaan aikaan, kun syöte loppuu, niin

Säännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet

Kertausta 1. kurssikokeeseen

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

Säännöllisen kielen tunnistavat Turingin koneet

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

DFA:n käyttäytyminen ja säännölliset kielet

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. marraskuuta 2015

1. Universaaleja laskennan malleja

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit.

Rekursiiviset palautukset [HMU 9.3.1]

Turingin koneet. Sisällys. Aluksi. Turingin koneet. Turingin teesi. Aluksi. Turingin koneet. Turingin teesi

M =(K, Σ, Γ,, s, F ) Σ ={a, b} Γ ={c, d} = {( (s, a, e), (s, cd) ), ( (s, e, e), (f, e) ), (f, e, d), (f, e)

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013

8. Kieliopit ja kielet

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Pinoautomaatit. Pois kontekstittomuudesta

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Täydentäviä muistiinpanoja laskennan rajoista

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

Rekursiivinen Derives on periaatteessa aivan toimiva algoritmi, mutta erittäin tehoton. Jos tarkastellaan esim. kieliopinpätkää

Säännöllisten kielten sulkeumaominaisuudet

Formalisoimme nyt edellä kuvatun laskennan.

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. lokakuuta 2016

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 6. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Automaatit. Muodolliset kielet

9.5. Turingin kone. Turingin koneen ohjeet. Turingin kone on järjestetty seitsikko

ICS-C2000 Tietojenkäsittelyteoria. Tähän mennessä: säännölliset kielet. Säännöllisten kielten pumppauslemma M :=

Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja

Yllä osoitettiin, että säännöllisten kielten joukko on suljettu yhdisteen

4. Tehtävässä halutaan todistaa seuraava ongelma ratkeamattomaksi:

Turingin koneen laajennuksia

Kielenä ilmaisten Hilbertin kymmenes ongelma on D = { p p on polynomi, jolla on kokonaislukujuuri }

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Lisää pysähtymisaiheisia ongelmia

Laskennan rajoja. Sisällys. Meta. Palataan torstaihin. Ratkeavuus. Meta. Universaalikoneet. Palataan torstaihin. Ratkeavuus.

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 26. tammikuuta 2012

Tarkastelemme ensin konkreettista esimerkkiä ja johdamme sitten yleisen säännön, joilla voidaan tietyissä tapauksissa todeta kielen ei-säännöllisyys.

4.3. Matemaattinen induktio

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 10. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

Laskennan teoria

ICS-C2000 Tietojenkäsittelyteoria

Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

Matemaattisten työvälineiden täydentäviä muistiinpanoja

δ : (Q {q acc, q rej }) (Γ k {, }) Q (Γ k {, }) {L, R}.

Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna

Rajoittamattomat kieliopit (Unrestricted Grammars)

Jos sekaannuksen vaaraa ei ole, samastamme säännöllisen lausekkeen ja sen esittämän kielen (eli kirjoitamme R vaikka tarkoitammekin L(R)).

Matematiikan johdantokurssi, syksy 2016 Harjoitus 11, ratkaisuista

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 6. maaliskuuta 2012 TIETOTEKNIIKAN LAITOS.

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 20. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS.

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Todistamisessa on tärkeää erottaa tapaukset, kun sääntö pätee joillakin tai kun sääntö pätee kaikilla. Esim. On olemassa reaaliluku x, jolle x = 5.

Algoritmin määritelmä [Sipser luku 3.3]

FORMAALI SYSTEEMI (in Nutshell): aakkosto: alkeismerkkien joukko kieliopin määräämä syntaksi: sallittujen merkkijonojen rakenne, formaali kuvaus

S BAB ABA A aas bba B bbs c

Johdatus matemaattiseen päättelyyn

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

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 2. helmikuuta 2012

isomeerejä yhteensä yhdeksän kappaletta.

9. Matemaattisista koneista.

Ratkeavuus ja efektiivinen numeroituvuus

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 8. maaliskuuta 2012

Säännöllisten operaattoreiden täydentäviä muistiinpanoja

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen.

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016

1. Esitä rekursiivinen määritelmä lukujonolle

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Chomskyn hierarkia ja yhteysherkät kieliopit

Transkriptio:

1.6 Aakkostot, merkkijonot ja kielet Automaattiteoria diskreetin signaalinkäsittelyn perusmallit ja -menetelmät ( diskreettien I/O-kuvausten yleinen teoria) 1011 Input Automaton Output Automaatin käsite on matemaattinen abstraktio. Yleisellä tasolla suunniteltu automaatti voidaan toteuttaa eri tavoin: esim. sähköpiirinä, mekaanisena laitteena tai (tavallisimmin) tietokoneohjelmana. B Tällä kurssilla keskitytään pääosin automaatteihin, joiden: 1. syötteet ovat äärellisiä, diskreettejä merkkijonoja 2. tulokset ovat muotoa hyväksy / hylkää ( syöte OK / syöte ei kelpaa ) Yleistyksiä: äärettömät syötejonot ( reaktiiviset järjestelmät, Büchi-automaatit) funktioautomaatit ( Moore- ja Mealy-tilakoneet, Turingin funktiokoneet) Peruskäsitteitä ja merkintöjä Aakkosto (engl. alphabet, vocabulary): äärellinen, epätyhjä joukko alkeismerkkejä t. symboleita. Esim.: binääriaakkosto {0, 1; latinalainen aakkosto {A,B,...,Z. Merkkijono (engl. string): äärellinen järjestetty jono jonkin aakkoston merkkejä. Esim.: 01001, 0000 : binääriaakkoston merkkijonoja; TKTP, XYZZY : latinalaisen aakkoston merkkijonoja. tyhjä merkkijono (engl. empty string). Tyhjässä merkkijonossa ei ole yhtään merkkiä; sitä voidaan merkitä ε:llä. Merkkijonon x pituus x on sen merkkien määrä. Esim.: 01001 = 5, TKTP = 4, ε = 0. Merkkijonojen välinen perusoperaatio on katenaatio eli jonojen peräkkäin kirjoittaminen. Katenaation operaatiomerkkinä käytetään joskus selkeyden lisäämiseksi symbolia. Esim. KALA KUKKO = KALAKUKKO; jos x = 00 ja y = 11, niin xy = 0011 ja yx = 1100; kaikilla x on xε = εx = x; kaikilla x, y, z on (xy)z = x(yz); kaikilla x, y on xy = x + y.

Aakkoston Σ kaikkien merkkijonojen joukkoa merkitään Σ :lla. Esimerkiksi jos Σ = {0,1, niin Σ = {ε,0,1,00,01,10,... Mielivaltaista merkkijonojoukkoa A Σ sanotaan aakkoston Σ (formaaliksi) kieleksi (engl. formal language). Automaatit ja formaalit kielet Olkoon M automaatti, jonka syötteet ovat jonkin aakkoston Σ merkkijonoja, ja tulos on yksinkertaisesti muotoa syöte hyväksytään / syöte hylätään. (Merk. lyhyesti 1/0.) Merkitään M:n syötteellä x antamaa tulosta M(x):llä ja M:n hyväksymien syötteiden joukkoa A M :llä, so. A M = {x Σ M(x) = 1. Sanotaan, että automaatti M tunnistaa (engl. recognises) kielen A M Σ. Automaattiteorian (yksi) idea: automaatin M rakenne heijastuu kielen A M ominaisuuksissa. Kääntäen: olkoon annettuna jokin toivottu I/O-kuvaus f : Σ {0,1. Tarkastelemalla kieltä A f = {x Σ f(x) = 1 saadaan vihjeitä siitä, millainen automaatti tarvitaan kuvauksen f toteuttamiseen. Vakiintuneita merkintöjä Em. matemaattisille käsitteille käytetyt merkinnät ovat periaatteessa vapaasti valittavissa, mutta esityksen ymmärrettävyyden parantamiseksi on tapana pitäytyä tietyissä käytännöissä. Seuraavat merkintätavat ovat vakiintuneet: Aakkostot: Σ, Γ,... (isoja kreikkalaisia kirjaimia). Esim. binääriaakkosto Σ = {0, 1. Aakkoston koko (tai yleisemmin joukon mahtavuus): Σ. Alkeismerkit: a, b, c,... (pieniä alkupään latinalaisia kirjaimia). Esim.: Olkoon Σ = {a 1,...,a n aakkosto; tällöin Σ = n. Merkkijonot: u, v, w, x, y,... (pieniä loppupään latinalaisia kirjaimia). Merkkijonojen katenaatio: x y tai vain xy. Merkkijonon pituus: x. Esimerkkejä: Tyhjä merkkijono: ε. abc = 3; olkoon x = a 1...a m, y = b 1...b n ; tällöin xy = m+ n. Merkkijono, jossa on n kappaletta merkkiä a: a n. Esimerkkejä: a n = aa...a {{ ; nkpl a i b j c k = i + j + k. Merkkijonon x toisto k kertaa: x k. Esimerkkejä: (ab) 2 = abab; x k = k x. Aakkoston Σ kaikkien merkkijonojen joukko: Σ. Esim.: {a,b = {ε,a,b,aa,ab,ba,bb,aaa,aab,...

Merkkijonoinduktio Automaattiteoriassa tehdään usein konstruktioita induktiolla merkkijonon pituuden suhteen. Tämä tarkoittaa, että määritellään ensin toiminto tyhjän merkkijonon ε (tai joskus yksittäisen aakkosmerkin) tapauksessa. Sitten oletetaan, että toiminto on määritelty kaikilla annetun pituisilla merkkijonoilla u ja esitetään, miten se tällöin määritellään yhtä merkkiä pitemmillä merkkijonoilla w = ua. Esimerkki. Olkoon Σ mielivaltainen aakkosto. Merkkijonon w Σ käänteisjono (engl. reversal) w R määritellään induktiivisesti säännöillä: 1. ε R = ε; 2. jos w = ua, u Σ, a Σ, niin w R = a u R. Induktiivista ( rekursiivista ) määritelmää voidaan tietenkin käyttää laskujen perustana; esim.: (011) R = 1 (01) R = 1 (1 0 R ) = 11 (0 ε R ) = 110 ε R = 110 ε = 110. Tärkeämpää on kuitenkin konstruktioiden ominaisuuksien todistaminen määritelmää noudattelevalla induktiolla. Esimerkki: Väite. Olkoon Σ aakkosto. Kaikilla x,y Σ on voimassa (xy) R = y R x R. Todistus. Induktio merkkijonon y pituuden suhteen. 1. Perustapaus y = ε: (xε) R = x R = ε R x R. 2. Induktioaskel: Olkoon y muotoa y = ua, u Σ, a Σ. Oletetaan, että väite on voimassa merkkijonoilla x, u. Tällöin on: (xy) R = (xua) R = a (xu) R [R:n määritelmä] = a (u R x R ) [induktio-oletus] = (a u R )x R [ :n liitännäisyys] = (ua) R x R [R:n määritelmä] = y R x R. ÄÄRELLISET AUTOMAATIT JA SÄÄNNÖLLISET KIELET 2.1 Tilakaaviot ja tilataulut Tarkastellaan aluksi tietojenkäsittelyjärjestelmiä, joilla on vain äärellisen monta mahdollista tilaa. Tällaisen järjestelmän toiminta voidaan kuvata äärellisenä automaattina t. äärellisenä tilakoneena (engl. finite automaton, finite state machine). Äärellisillä automaateilla on useita vaihtoehtoisia esitystapoja: tilakaaviot, tilataulut,...

Esimerkki 1: Kahviautomaatti. 20 c 20 c 10 c 10 c 10 c 10 c 0,00 0,10 0,20 0,30 0,40 20 c 10 20 c 20 c > 0,4 10 20 c Em. tilakaavion esittämä automaatti ratkaisee päätösongelman riittävätkö annetut rahat kahvin ostamiseen? Äärellisiä automaatteja voidaan yleensäkin käyttää yksinkertaisten päätösongelmien ratkaisujen mallintamiseen. Automaattimallista on muitakin kuin binäärivasteisten järjestelmien kuvaamiseen tarkoitettuja versioita (ns. Moore- ja Mealy-automaatit), mutta niitä ei käsitellä tällä kurssilla. Tilakaavioiden merkinnät: q Automaatin tila nimeltä q q 0 q f q 1 a q 2 Alkutila Lopputila: automaatti hyväksyy syötejonon, joss se jonon loppuessa on tällaisessa tilassa Syötemerkin a aikaansaama siirtymä tilasta q 1 tilaan q 2 Esimerkki 2: C-kielen etumerkittömät reaaliluvut.. q 0 q 1. q 2 q 3 exp exp exp q 4 +,- Käytetyt lyhenteet: = {0,1,...,9, exp = {E,e. q 7 q 5 q 6 Äärellisen automaatin esitys tilatauluna: automaatin uusi tila vanhan tilan ja syötemerkin funktiona. Esim. reaalilukuautomaatin tilataulu:. exp + q 0 q 1 q 7 q 1 q 1 q 2 q 4 q 2 q 3 q 4 q 3 q 3 q 4 q 4 q 6 q 5 q 5 q 5 q 6 q 6 q 6 q 7 q 3

Esim. reaalilukuautomaatin täydellinen kaavioesitys olisi: K: Mitä tilataulun tyhjät paikat tarkoittavat? V: Tilataulun tyhjät paikat, tai vastaavasti tilakaavion puuttuvat kaaret, kuvaavat automaatin virhetilanteita. Jos automaatti ohjautuu tällaiseen paikkaan, syötejono ei kuulu automaatin hyväksymään joukkoon. Muodollisesti automaatissa ajatellaan olevan erityinen virhetila, jota ei vain selkeyden vuoksi merkitä näkyviin.. +,-. q 0 q 1 exp, +,- error, exp,.,+,- exp ja reaalilukuautomaatin täydellinen tauluesitys olisi:. exp + q 0 q 1 q 7 error error error q 1 q 1 q 2 q 4 error error....... q 6 q 6 error error error error error error error error error error 2.2 Äärellisiin automaatteihin perustuva ohjelmointi Annetun äärellisen automaatin pohjalta on helppo laatia automaatin toimintaa vastaava ohjelma. Esim. reaalilukuautomaattiin perustuva syötejonon syntaksitestaus:

#include <stdio.h> #include <ctype.h> main() { int q, c; q = 0; while ((c = getchar())!= \n ) switch (q) { case 0: if (is(c)) q = 1; else if (c ==. ) q = 7; case 1: if (is(c)) q = 1; else if (c ==. ) q = 2; else if (c == E c == e ) q = 4;... case 99: if (q == 2 q == 3 q == 6) printf("syöte ON REAALILUKU.\n"); else printf("syöte EI OLE REAALILUKU.\n"); Pelkän syntaksitestin toteutus: Semanttisten toimintojen liittäminen äärellisiin automaatteihin Esimerkki. Kahdeksanjärjestelmän lukuja tunnistava automaatti ja siihen perustuva syöteluvun arvonmääritys ( muuttaminen kymmenjärjestelmään ). +,- d q 0 q 1 q 2 Lyhennysmerkintä d = {0,1,...,7. d d #include <stdio.h> #include <ctype.h> main() { int q, c; q = 0; while ((c = getchar())!= \n ) { switch (q) { case 0: if (c == + c == - ) q = 1; else if ( 0 <= c && c <= 7 ) q = 2;

case 1: if ( 0 <= c && c <= 7 ) q = 2; case 2: if ( 0 <= c && c <= 7 ) q = 2; case 99: if (q == 2) printf("syöte OK.\n"); else printf("virheellinen LUKU.\n"); Täydennys syöteluvun arvon laskevilla operaatioilla ( luvun muuttaminen kymmenjärjestelmään ): #include <stdio.h> int main(void) { int q, c; int sgn, val; /* SEM: sgn = etumerkki */ sgn = 1; val = 0; /* SEM: val = itseisarvo */ q = 0; while ((c = getchar())!= \n ) { switch (q) { case 0: if (c == + ) q = 1; else if (c == - ) { sgn = -1; /* SEM */ q = 1; else if ( 0 <= c && c <= 7 ) { val = c - 0 ; /* SEM */ q = 2; case 1: if ( 0 <= c && c <= 7 ) { val = c - 0 ; /* SEM */ q = 2; case 2: if ( 0 <= c && c <= 7 ) { val = 8 * val + (c - 0 ); /* SEM */ q = 2; case 99:

if (q == 2) { printf("luvun ARVO ON %d.\n", sgn*val);/*sem*/ exit(0); else { printf("virheellinen SYÖTE.\n"); /* SEM */ exit(1);