ICS-C2000 Tietojenkäsittelyteoria

Samankaltaiset tiedostot
Esimerkki 1: Kahviautomaatti.

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

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

1. Universaaleja laskennan malleja

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

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

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

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

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

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

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

Turingin koneen laajennuksia

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

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

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

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

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

Yhteydettömän kieliopin jäsennysongelma

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

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

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

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Rajoittamattomat kieliopit

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

Säännöllisen kielen tunnistavat Turingin koneet

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

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

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

Algoritmin määritelmä [Sipser luku 3.3]

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

Automaatit. Muodolliset kielet

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

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

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

(0 1) 010(0 1) Koska kieli on yksinkertainen, muodostetaan sen tunnistava epädeterministinen q 0 q 1 q 2 q3

Rekursiiviset palautukset [HMU 9.3.1]

T /2 Tietojenkäsittelyteorian perusteet T/Y

Pinoautomaatit. Pois kontekstittomuudesta

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

Kertausta 1. kurssikokeeseen

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

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

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

ICS-C2000 Tietojenkäsittelyteoria

5.3 Ratkeavia ongelmia

Kertausta: kielet ja automaatit. ICS-C2000 Tietojenkäsittelyteoria. Alue ja aiheet. Äärelliset automaatit

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Olkoon G = (V,Σ,P,S) yhteydetön kielioppi. Välike A V Σ on tyhjentyvä, jos A. NULL := {A V Σ A ε on G:n produktio};

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

Lisää pysähtymisaiheisia ongelmia

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

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

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

Säännöllisten kielten sulkeumaominaisuudet

Formalisoimme nyt edellä kuvatun laskennan.

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

Täydentäviä muistiinpanoja laskennan rajoista

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

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

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

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

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

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

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

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

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

1. Universaaleja laskennan malleja

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

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

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

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

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

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

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?

Turingin koneet. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 7. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

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

Chomskyn hierarkia ja yhteysherkät kieliopit

2. Laskettavuusteoriaa

6.5 Turingin koneiden pysähtymisongelma Lause 6.9 Kieli. H = {c M w M pysähtyy syötteellä w}

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

Output. Input Automaton

9. Matemaattisista koneista.

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

Kyselytutkimus opiskelijoiden ajankäytöstä tietojenkäsittelyteorian peruskurssilla

Tietotekniikan valintakoe

Rajoittamattomat kieliopit (Unrestricted Grammars)

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

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

ICS-C2000 Tietojenkäsittelyteoria

S BAB ABA A aas bba B bbs c

Laskennan mallit

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

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

Ratkeavuus ja efektiivinen numeroituvuus

2. Laskettavuusteoriaa

Laskennan mallit (syksy 2007) Harjoitus 5, ratkaisuja

ICS-C2000 Tietojenkäsittelyteoria

Tietojenkäsittelyteorian alkeet, osa 2

ÄÄRELLISTEN AUTOMAATTIEN MINIMOINTI. 1. Äärelliset automaatit Äärellinen automaatti (DFA = deterministic finite automaton) on

Äärellisten automaattien ja säännöllisten lausekkeiden minimointi

Transkriptio:

ICS-C2000 Tietojenkäsittelyteoria Luento 2: Äärelliset automaatit Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan laitos Kevät 2016

Kertausta: kielet ja automaatit Laskennallisen ongelman ratkaisevia tietokoneohjelmia ja -laitteita voidaan tarkastella automaatteina x = 4831. x = 5899 def isprime(x):.... return res true. false Aakkosto: äärellinen joukko symboleja, esim. Σ = {0,1,2,...,9} Kieli: joukko Σ:n merkkijonoja, esim {x Σ x on alkuluku} = {1,2,3,5,7,11,...} {x {0x00,0x01,...,0xFF} x on virusvapaa tietokoneohjelma} Millainen automaatti tarvitaan annetun ongelman ratkaisemiseen (eli kielen tunnistamiseen)? Voiko kaikki ongelmat ratkaista jollain automaatilla? 2/39

Alue ja aiheet Orposen prujun luvut 2.1 2.3 (tai Sipserin kirjan luku 1.1) Äärellisen automaatin rakenne ja sen esitystapoja Äärellisen automaatin toiminta Semanttisten toimintojen liittäminen automaatteihin Äärellisten automaattien ja niiden toiminnan tarkka matemaattinen esitys eli formalisointi 3/39

Äärelliset automaatit 4/39

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,... 5/39

Esimerkki: 20c 20c 10c 10c 10c 10c 0.00 0.10 0.20 0.30 enough 20c 20c 10c 20c more than enough 10c 20c 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. 6/39

Tilakaavioiden merkinnät: q Automaatin tila nimeltä q q 0 Alkutila q 0 q f q a 1 q 2 Lopputila q f : automaatti hyväksyy syötejonon, jos se jonon loppuessa on tällaisessa tilassa Syötemerkin a aikaansaama siirtymä tilasta q 1 tilaan q 2 Sekä lyhennysmerkintä: a q 1 a, b, c q 2 q 1 b c q 2 7/39

Esimerkki: C-kielen etumerkittömät liukuluvut. q 7 digit. digit digit digit. digit q 0 q 1 q 2 q 3 exp exp exp digit q 4 digit q 6 +,- digit q 5 Käytetyt lyhenteet: digit = {0,1,...,9}, exp = {E,e}. 8/39

Äärellisen automaatin esitys tilatauluna: automaatin uusi tila vanhan tilan ja syötemerkin funktiona. Esimerkki: Liukulukuautomaatin tilataulu: digit. 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 missä ilmaisee alkutilaa ja lopputilaa. 9/39

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. 10/39

Esimerkki: Liukulukuautomaatin täydellinen kaavioesitys olisi:. digit digit. q 0 q 1 exp, +,- error +,- digit, exp,.,+,- exp 11/39

ja liukulukuautomaatin täydellinen tauluesitys olisi: digit. 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... 12/39

2.2 Äärellisiin automaatteihin perustuva ohjelmointi Annetun äärellisen automaatin pohjalta on helppo laatia automaatin toimintaa vastaava ohjelma. 13/39

Esimerkki: Liukulukuautomaattiin perustuva syötejonon syntaksitestaus Pythonohjelmointikielellä: from sys import s t d i n q=0 f o r c i n s t d i n. r e a d l i n e ( ). s t r i p ( " \ n " ) : i f q==0: i f c. i s d i g i t ( ) : q=1 e l i f c== ". " : q=7 else : q=99 e l i f q==1: i f c. i s d i g i t ( ) : q=1 e l i f c== ". " : q=2 e l i f c== "E" or c== " e " : q=4 else : q=99... e l i f q==7: i f c. i s d i g i t ( ) : q=3 else : q=99 i f q i n [ 2, 3, 6 ] : p r i n t " I s a v a l i d f l o a t i n g p o i n t number " else : p r i n t " Not a f l o a t i n g p o i n t number " 14/39

Semanttisten toimintojen liittäminen äärellisiin automaatteihin Esimerkki: Kahdeksanjärjestelmän lukuja tunnistava automaatti ja siihen perustuva syöteluvun arvonmääritys ( muuttaminen kymmenjärjestelmään ). q +, 0 q d 1 q 2 d Lyhennysmerkintä d = {0,1,...,7}. d 15/39

Pelkän syntaksitestin toteutus: from sys import s t d i n q=0 f o r c i n s t d i n. r e a d l i n e ( ). s t r i p ( " \ n " ) : i f q==0: i f c== " + " or c== " " : q=1 e l i f c i n " 01234567 " : q=2 else : q=99 e l i f q==1: i f c i n " 01234567 " : q=2 else : q=99 e l i f q==2: i f c i n " 01234567 " : q=2 else : q=99 i f q==2: p r i n t " Octal numeral " else : p r i n t " Not an o c t a l numeral " 16/39

Täydennys syöteluvun arvon laskevilla operaatioilla ( luvun muuttaminen kymmenjärjestelmään ): from sys import s t d i n q=0 sgn=1 # SEM: sign val =0 # SEM: absolute value f o r c i n s t d i n. r e a d l i n e ( ). s t r i p ( " \ n " ) : i f q==0: i f c== " + " : q=1 e l i f c== " " : sgn= 1; q=1 e l i f c i n " 01234567 " : v a l = i n t ( c ) ; q=2 else : q=99 e l i f q==1: i f c i n " 01234567 " : v a l = i n t ( c ) ; q=2 else : q=99 e l i f q==2: i f c i n " 01234567 " : v a l =8 * v a l + i n t ( c ) ; q=2 else : q=99 i f q==2: p r i n t " Octal numeral ; decimal p r e s e n t a t i o n i s ", sgn * v a l else : p r i n t " Not an o c t a l numeral " 17/39

Sivupolku: hieman lisää aiheesta Äärellisiä automaatteja voidaan käyttää käytöksen suunnittelun ja toteutuksen apuna esim. peleissä: linkki 1 ja linkki 2 Myös kurssin tietokonekotitehtävissä käytetyn automaattieditorin käyttöliittymän logiikka voidaan nähdä ja on suunniteltu automaattina ( jos olemme tilassa lisää siirtymä ja tulee tapahtuma kaarisymbolia klikattu, siirry alitilaan muokkaa kaarisymbolijoukkoa jne) Adoben ActionScript language ( the programming language for the Adobe Flash Player and Adobe AIR runtime environments ) sisältää tuen automaateille (katso kappale 10 kirjassa Sanders and Cumaranatunge: ActionScript 3.0 Design Patterns) Wikipediasta voi lukaista vaikkapa artikkelit tapahtumapohjaisista automaateista ja automaattipohjaisesta ohjelmoinnista 18/39

2.3 Äärellisen automaatin käsitteen formalisointi Mekanistinen malli: syötenauha: i n p u t nauhapää: ohjausyksikkö: q 1 q 2 q 0 Äärellinen automaatti M koostuu äärellistilaisesta ohjausyksiköstä, jonka toimintaa säätelee automaatin siirtymäfunktio δ, sekä merkkipaikkoihin jaetusta syötenauhasta ja nämä yhdistävästä nauhapäästä, joka kullakin hetkellä osoittaa yhtä syötenauhan merkkiä. δ 19/39

Automaatin toiminta : Automaatti käynnistetään erityisessä alkutilassa q 0, siten että tarkasteltava syöte on kirjoitettuna syötenauhalle ja nauhapää osoittaa sen ensimmäistä merkkiä. Yhdessä toiminta-askelessa automaatti lukee nauhapään kohdalla olevan syötemerkin, päättää ohjausyksikön tilan ja luetun merkin perusteella siirtymäfunktion mukaisesti ohjausyksikön uudesta tilasta, ja siirtää nauhapäätä yhden merkin eteenpäin. Automaatti pysähtyy, kun viimeinen syötemerkki on käsitelty. Jos ohjausyksikön tila tällöin kuuluu erityiseen (hyväksyvien) lopputilojen joukkoon, automaatti hyväksyy syötteen, muuten hylkää sen. Automaatin tunnistama kieli on sen hyväksymien merkkijonojen joukko. 20/39

Edellisen kalvon sanallinen määritelmä voi jättää tulkinnanvaraa (mitä tapahtuu tyhjällä syötteellä ε, jne). Täsmällinen, matemaattinen muotoilu: Määritelmä Äärellinen automaatti on viisikko missä M = (Q,Σ,δ,q 0,F), Q on automaatin tilojen äärellinen joukko; Σ on automaatin äärellinen syöteaakkosto; δ : Q Σ Q on automaatin siirtymäfunktio; q 0 Q on automaatin alkutila; F Q on automaatin (hyväksyvien) lopputilojen joukko. 21/39

Esimerkki: Liukulukuautomaatin formaali esitys: M = ({q 0,...,q 7,error},{0,1,...,9,.,E,e,+,-}, δ,q 0,{q 2,q 3,q 6 }), missä δ on kuten aiemmin taulukossa; esim. δ(q 0,0) = δ(q 0,1) = = δ(q 0,9) = q 1, δ(q 0,.) = q 7, δ(q 0,E) = δ(q 0,e) = error, δ(q 1,.) = q 2, δ(q 1,E) = δ(q 1,e) = q 4, jne. 22/39

Automaatin käytöksen formalisointi Edellinen määritelmä kuvasi automaatin rakenteen mutta ei vielä sen käytöstä. Myös käytös voidaan kuvata tarkasti matemaattisesti parin lisämääritelmän avulla. Automaatin tilanne on pari (q,w) Q Σ Erityisesti automaatin alkutilanne syötteellä x on pari (q 0,x). Intuitio: q on automaatin tila ja w on syötemerkkijonon jäljellä oleva, so. nauhapäästä oikealle sijaitseva osa. Esimerkki Muun muassa seuraavat ovat liukulukuautomaatin tilanteita: (q 0,0.25E2), (q 0,EE..33), (error,e..33), (q 1,.25E2), (q 6,ε). Syötteellä.242E10 automaatin alkutilanne on (q 0,.242E10). 23/39

Tilanne (q,w) johtaa suoraan tilanteeseen (q,w ), merkitään (q,w) M (q,w ), jos on w = aw (a Σ) ja q = δ(q,a). Tällöin sanotaan myös, että tilanne (q,w ) on tilanteen (q,w) välitön seuraaja. Intuitio: automaatti ollessaan tilassa q ja lukiessaan nauhalla olevan merkkijonon w = aw ensimmäisen merkin a siirtyy tilaan q ja siirtää nauhapäätä yhden askelen eteenpäin, jolloin nauhalle jää merkkijono w. Jos automaatti M on yhteydestä selvä, relaatiota voidaan merkitä yksinkertaisesti (q,w) (q,w ). Esimerkki Pohdi miksi liukulukuautomaatilla (i) pätee (q 0,0.25E2) (q 1,.25E2), (ii) ei päde (q 0,0.25E2) (q 6,5E2), ja (iii) tilanteella (q 6,ε) ei ole välittömiä seuraajia. 24/39

Tilanne (q,w) johtaa tilanteeseen (q,w ) t. tilanne (q,w ) on tilanteen (q, w) seuraaja, merkitään (q,w) M (q,w ), jos on olemassa välitilannejono (q 0,w 0 ), (q 1,w 1 ),..., (q n,w n ), n 0, siten että (q,w) = (q 0,w 0 ), (q 0,w 0 ) M (q 1,w 1 ), (q 1,w 1 ) M (q 2,w 2 )... (q n 1,w n 1 ) M (q n,w n ) ja (q n,w n ) = (q,w ) Erikoistapauksena n = 0 saadaan (q,w) M (q,w) millä tahansa tilanteella (q, w). Jälleen, jos automaatti M on yhteydestä selvä, merkitään yksinkertaisesti (q,w) (q,w ). 25/39

Automaatti M hyväksyy merkkijonon x Σ, jos on voimassa muuten M hylkää x:n. (q 0,x) M (q f,ε) jollakin q f F; Toisin sanoen: automaatti hyväksyy x:n, jos sen alkutilanne syötteellä x johtaa, syötteen loppuessa, johonkin hyväksyvään lopputilanteeseen. Automaatin M tunnistama kieli määritellään: L(M) = {x Σ (q 0,x) M (q f,ε) jollakin q f F}. 26/39

Esimerkki: Merkkijonon 0.25E2 käsittely liukulukuautomaatilla: (q 0,0.25E2) (q 1,.25E2) (q 2,25E2) (q 3,5E2) (q 3,E2) (q 4,2) (q 6,ε). Koska q 6 F = {q 2,q 3,q 6 }, on siis 0.25E2 L(M). 27/39

Vaihtoehtoinen määritelmä (Sipserin kirjasta) Automaatin hyväksymät sanat voitaisiin määritellä myös ilman tilannetta Kulloinkin jäljellä oleva syöte ei tällöin näy suoraan esityksestä Määritelmä Olkoon M = (Q,Σ,δ,q 0,F) äärellinen automaatti M hyväksyy merkkijonon w = w 1 w 2...w n Σ jos on olemassa jono r 0 r 1 r 2...r n Q automaatin tiloja siten, että r0 = q 0 δ(r i,w i+1 ) = r i+1 pätee kaikille 0 i < n r n F L(M) = {w Σ M hyväksyy w:n} Esimerkki: Liukulukuautomaatti hyväksyy merkkijonon 0.25E2 koska yllämainitut ehdot täyttyvät tilajonolla q 0 q 1 q 2 q 3 q 3 q 4 q 6. 28/39

Hieman lisää esimerkkejä Esimerkki: Kielet {w {0,1} w sisältää parillisen määrän symbolia 1} ja {w {0,1} w sisältää alimerkkijonon 001} voidaan tunnistaa seuraavilla automaateilla: 1 0 0 1 e o a b c d 0 1 0 1 1 0 0, 1 Tilan a selitys voisi olla ei olla vielä nähty merkkijonoa 001 ja edellinen merkki ei ollut 0. Mitkä voisivat olla muiden automaatin tilojen selitykset? 29/39

Lause Jos L Σ voidaan tunnistaa äärellisellä automaatilla, niin myös kieli L = {w Σ w / L} voidaan. Todistus Otetaan mikä tahansa äärellinen automaatti M L = (Q,Σ,δ,q 0,F), joka tunnistaa kielen L (eli L(M L ) = L). Koska automaatin tila suorituksen lopussa on yksikäsitteinen mille tahansa syötemerkkijonolle, saamme äärellisen automaatin komplementtikielelle L = {w Σ w / L} yksinkertaisesti vaihtamalla kaikki hyväksyvät lopputilat ei-hyväksyviksi ja päinvastoin eli M L = (Q,Σ,δ,q 0,Q \ F). 30/39

Esimerkki: Edellisen esimerkin automaatista kielelle L = {w {0,1} w sisältää alimerkkijonon 001} saamme tällä konstruktiolla komplementtikielen L = {w {0,1} w ei sisällä alimerkkijonoa 001} hyväksyvän automaatin: 0 0 1 a b c d 1 1 0 0, 1 31/39

Lause Jos kielet A,B Σ voidaan tunnistaa äärellisellä automaateilla, niin myös kieli A B = {w Σ w A ja w B} voidaan. Todistus Olkoot M A = (Q A,Σ,δ A,q A,0,F A ) ja M B = (Q B,Σ,δ B,q B,0,F B ) äärellisiä automaatteja, jotka tunnistavat kielet A ja B. Tehdään automaatti M A B = (Q A B,Σ,δ A B,q A B,0,F A B ), joka simuloi kumpaakin automaattia yhtäaikaa ja hyväksyy merkkijonon jos ja vain jos kumpikin automaatti hyväksyisi. Q A B = Q A Q B eli automaatin tilat ovat pareja, jotka pitävät kirjaa siitä, missä tilassa simuloitavat automaatit A ja B olisivat q A B,0 = (q A,0,q B,0 ) eli alkutilassa kummatkin simuloitavat automaatit olisivat alkutilassa 32/39

δ A B ((q a,q B ),σ) = (δ A (q A,σ),δ B (q B,σ)) eli siirrytään uuteen tilaan niin, että se vastaa niitä tiloja, joihin simuloitavat automaatit olisivat päättyneet luettuaan saman merkin σ, ja F A B = F A F B eli hyväksytään joss kumpikin simuloitava automaatti hyväksyisi. Nyt voitaisiin näyttää induktiolla syöte merkkijonon pituuden suhteen, että jos automaatti A on syötteen lukemisen jälkeen tilassa q a ja automaatti B tilassa q B, niin silloin automaatti M A B on tilassa (q A,q B ). (Vastaavia konstruktioita kierroksen 3 demotehtävissä) 33/39

Esimerkki: Tehdään esitetyllä konstruktiolla automaatti, joka hyväksyy sanat, jotka sisältävät sekä parillisen määrän symbolia 1 että alisanan 001. Lähtöautomaatit: 1 0 0 1 e o a b c d 0 Tulos: 1 0 0 0 (e, a) (e, b) (e, c) (e, d) 1 1 1 1 1 1 1 1 (o, a) (o, b) (o, c) (o, d) 0 0 1 1 0 0, 1 0 0 0 0 34/39

Sivupolku: joitain muita automaattiluokkia 35/39

Äärelliset automaatit ovat ehkäpä yksinkertaisin automaattiluokka. Niiden laajennuksia on paljon, seuraavilla kalvoilla olevien lisäksi mm: Pinoautomaatit: tarkastellaan myöhemmin kurssilla Ajastetut automaatit: laajentavat äärellisiä automaatteja reaalilukuarvoisilla kelloilla (katso esim. johdantoartikkeli ja eräs työkalu) Hybridiautomaatit: sallivat yleisemmän reaalilukuarvoisten muuttujien käytön, käytetään mallintamaan tietokoneohjelmien ja -laitteiden ja fyysisten prosessien välistä vuorovaikutusta Turingin koneet: tarkastellaan myöhemmin kurssilla 36/39

Äärettömät merkkijonot Tällä kurssilla tarkastellaan vain äärellisiä merkkijonoja... mutta joissakin sovelluksissa tarvitaan myös äärettömiä syötteitä: Esimerkiksi reaktiivisissa järjestelmissä (serverit, protokollat, jne) suorituksen ei välttämättä oleteta päättyvän ollenkaan Äärettömille merkkijonoille on määritelty useita automaattiluokkia Esim. Büchi-automaatit hyväksyvät äärettömän merkkijonon jos hyväksyvässä tilassa käydään äärettömän usein Sovellusesimerkkinä: spin verification tool 37/39

Esimerkki: Büchi-automaatti, joka hyväksyy aakkoston {a, b, c} äärettömät merkkijonot, joiden parillisissa positioissa on a b, c s a 0 s 1 Nyt abacacaba... hyväksytään mutta bbacacaba... ja abacaccba... hylätään. Esimerkki: Büchi-automaatti, joka hyväksyy aakkoston {req, ack, data} äärettömät merkkijonot, joissa jokaista req-symbolia ( request, pyyntö ) seuraa myöhemmin ack-symboli ( acknowledgement, kuittaus ) ack req s 0 s 1 req, data ack, data 38/39

Muuntimet Äärellistilaiset muuntimet (engl. transducers) eivät hylkää/hyväksy syötettä vaan muuntavat sen toiseksi merkkijonoksi. Esimerkiksi Mooren koneet liittävät tulosteen laskennan tiloihin s 0 /0 b, c b, c b, c a s a 1 /0 s 2 /1 a input: state: output: a b c a a a c... s 0 s 1 s 0 s 0 s 1 s 2 s 2 s 0... 0 0 0 0 1 1 0... kun taas Mealyn koneet sallivat tulosteen riippua myös nykyisestä syötemerkistä: b/0, c/0 input: a b c a a a c... a/0 state: s 0 s 1 s 0 s 0 s 1 s 1 s 1 s 0... s 0 s 1 output: 0 0 0 0 1 1 0... b/0, c/0 a/1 Käytetään yleisimmin laitteistosuunnittelussa (syöteaakkosto on joukko kellotettuja signaaleja jne); kokeile nettihakua termillä Mealy machine 39/39