T /2 Tietojenkäsittelyteorian perusteet T/Y

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

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

ICS-C2000 Tietojenkäsittelyteoria

Tietojenkäsittelyteorian perusteet T/Y T /1002

Tietojenkäsittelyteorian perusteet T/Y T /1002

Output. Input Automaton

T Tietojenkäsittelyteorian perusteet

Esimerkki 1: Kahviautomaatti.

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

ICS-C2000 Tietojenkäsittelyteoria

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

ICS-C2000 Tietojenkäsittelyteoria

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

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

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

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

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

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

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

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

Rajoittamattomat kieliopit

MS-A0402 Diskreetin matematiikan perusteet

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

2.6 SÄÄNNÖLLISET LAUSEKKEET Automaattimalleista poikkeava tapa kuvata yksinkertaisia kieliä. Olkoot A ja B aakkoston Σ kieliä. Perusoperaatioita:

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

Yhteydettömän kieliopin jäsennysongelma

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

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

Automaatit. Muodolliset kielet

Automaattimalleista poikkeava tapa kuvata yksinkertaisia kieliä. Olkoot A ja B aakkoston Σ kieliä. Perusoperaatioita:

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

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

5.3 Ratkeavia ongelmia

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Säännöllisen kielen tunnistavat Turingin koneet

Turingin koneen laajennuksia

1. Universaaleja laskennan malleja

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

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

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

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

811120P Diskreetit rakenteet

Tietojenkäsittelyteorian alkeet, osa 2

Säännöllisten kielten sulkeumaominaisuudet

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

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

Rekursiiviset palautukset [HMU 9.3.1]

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

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

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

Chomskyn hierarkia ja yhteysherkät kieliopit

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

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

Pinoautomaatit. Pois kontekstittomuudesta

Kertausta 1. kurssikokeeseen

Täydentäviä muistiinpanoja laskennan rajoista

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

Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti.

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

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

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

Ilkka Mellin Todennäköisyyslaskenta Liite 1: Joukko-oppi

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

Lisää pysähtymisaiheisia ongelmia

Algoritmin määritelmä [Sipser luku 3.3]

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

MS-A0401 Diskreetin matematiikan perusteet

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

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

Johdatus matemaattiseen päättelyyn

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

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

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

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

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

Kuvauksista ja relaatioista. Jonna Makkonen Ilari Vallivaara

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

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

8. Kieliopit ja kielet

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

MS-A0401 Diskreetin matematiikan perusteet Yhteenveto, osa I

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

811120P Diskreetit rakenteet

MS-A0402 Diskreetin matematiikan perusteet Yhteenveto, osa I

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

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, kevät 2011 (IV) Antti-Juhani Kaijanaho. 16. toukokuuta 2011

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

Johdatus diskreettiin matematiikkaan Harjoitus 1,

Joukko-oppi. Joukko-oppi. Joukko-oppi. Joukko-oppi: Mitä opimme? Joukko-opin peruskäsitteet

Äärellisten mallien teoria

S BAB ABA A aas bba B bbs c

Kurssikoe on maanantaina Muista ilmoittautua kokeeseen viimeistään 10 päivää ennen koetta! Ilmoittautumisohjeet löytyvät kurssin kotisivuilla.

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

Joukot. Georg Cantor ( )

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

Transkriptio:

T-79.1001/2 Tietojenkäsittelyteorian perusteet T/Y Tietojenkäsittelytieteen laitos, Aalto-yliopisto Aalto-yliopisto Perustieteiden korkeakoulu Tietojenkäsittelytieteen laitos Syksy 2013

T 79.1001/1002 Tietojenkäsittelyteorian perusteet T/Y Introduction to Theoretical Computer Science T/Y What can one do with a computer? This course divides roughly into three parts. We examine three models of a computer, their power and limitations, i.e., the classes of languages that they can decide. It turns out that each class of automata corresponds to a class of grammars. The classes of automata and grammars are: 1. Finite state automata & regular expressions 2. Pushdown automata & context-free grammars 3. Turing machines & unrestricted grammars The first teaching period of the course (=Y version) covers finite state automata, regular expressions and context-free grammars. The second period covers the rest. 2/295

Course versions There are two versions of the course for different kinds of students. If you are unsure which to take, check your study guide or ask your study advisor. T-79.1001 Introduction to TCS T, periods I-II, 4 cr compulsory in the computer science bachelor s program; in the Discrete Mathematics B1 module... T-79.1002 Introduction to TCS Y, period I, 2 cr compulsory in the communications engineering bachelor s program in 2005 2009; part of supplementary studies for polytechnic graduates to enter computer science program part of supplementary studies for some Master s Programme students... 3/295

Practical arrangements Registration: obligatory, by OODI, deadline Sep 23, 2013 Lectures: Tue 14 16 T1, in Finnish by Doc., D.Sc. Tommi Junttila Tutorials: once a week, register by OODI with course code T-79.1001; not obligatory but highly recommended! Fri 10 12 Fri 14 16 in English Mon 12 14 Tue 16 18 Wed 14 16 See Noppa for class rooms etc. Computerized home assignments: obligatory and personalized. Distributed by email after Sep 23th to those who registered to the course. Course Noppa pages: https://noppa.aalto.fi/noppa/kurssi/t-79.1001/ https://noppa.aalto.fi/noppa/kurssi/t-79.1002/ 4/295

To pass the course 1. Pass the computerized assignments before taking the exam. 2. After passing the computer exercises, take an exam (next exams in Oct 2013, Dec 2013, Feb 2014, May 2014). 3. There are 3 homework problems a week; you gain bonus points for exam according to table: # solved: 0 4 5 9 10 14 15 19 20 24 25 29 30 T-79.1001 +0 +1 +2 +3 +4 +5 +6 T-79.1002 +0 +1 +2 +3 N/A These bonus points are valid until December 2014. 4. By completing the computer assignments by 09:00 on 24 Oct 2013, one can earn a bonus of 2 points for the exams. These do not help in making a failed exam passed. 5/295

PLEASE NOTICE: due to Bachelor s program renewal, In the future, this is the last time these two courses are organized. T-79.1002 will be terminated T-79.1001 will be replaced by the 5 credits course ICS-C2000 Theoretical Computer Science organized first time in Spring 2015 The last exams of T-79.1001 and T-79.1002 will be organized in December 2014 There will be no teaching (lectures, tutorials,...) during Autumn 2014 6/295

Material Lecture notes aka Orposen pruju (in Finnish) is distributed through NOPPA Lecture slides (in Finnish) also on NOPPA Demonstration exercises and their solutions (both in Finnish and in English) are distributed through NOPPA Recommended textbook Michael Sipser, Introduction to the Theory of Computation (2nd Edition), 2005. (Supplementary for Finnish-speaking students; likely necessary for non-finnish-speaking students.) Some additional material on NOPPA. 7/295

TIETOJENKÄSITTELYTEORIA Matemaattinen oppi siitä, mitä tietokoneella on mahdollista tehdä ja kuinka tehokkaasti. Tarjoaa matemaattisia käsitteitä ja menetelmiä tietojenkäsittelyjärjestelmien mallintamiseen ja analysointiin sekä selkeiden ja tehokkaiden ratkaisujen laatimiseen. 8/295

Tietojenkäsittelyteorian osa-aloja Laskettavuusteoria Mitä tietokoneella voi tehdä periaatteessa? Turing, Gödel, Church, Post (1930-luku); Kleene, Markov (1950-luku). Laskennan vaativuusteoria Mitä tietokoneella voi tehdä käytännössä? Hartmanis, Stearns (1960-luku); Cook, Levin, Karp (1970-luku); Papadimitriou, Sipser, Håstad, Razborov ym. (1980-). Automaatti- ja kielioppiteoria Tietojenkäsittelyjärjestelmien perustyyppien ominaisuudet ja kuvausformalismit. Chomsky (1950-luku); Ginsburg, Greibach, Rabin, Salomaa, Schützenberger ym. (1960-luku) 9/295

Tietojenkäsittelyteorian osa-aloja Ohjelmien oikeellisuus Tietojenkäsittelyjärjestelmien matemaattisesti eksakti määrittely ja oikean toiminnan verifiointi. Dijkstra, Hoare (1960-luku); Manna, Pnueli, Scott ym. (1970-). Muuta algoritmien suunnittelu ja analyysi (Knuth, Hopcroft, Tarjan ym.) kryptologia (Rivest, Shamir, Adleman ym.) rinnakkaisten ja hajautettujen järjestelmien teoria (Lamport, Lynch, Milner, Valiant ym.) koneoppimisteoria (Valiant ym.) jne. Tällä kurssilla käsitellään lähinnä automaatteja ja kielioppeja sekä hieman laskettavuusteorian alkeita. Muita aiheita käsitellään muilla tietojenkäsittelyteorian (T 79) kursseilla. 10/295

1.1 Joukot Joukko (engl. set) on kokoelma alkioita. Alkiot voidaan ilmoittaa joko luettelemalla, esim. tai jonkin säännön avulla, esim. S = {2,3,5,7,11,13,17,19} S = {p p on alkuluku, 2 p 20}. Jos alkio a kuuluu joukkoon A, merkitään a A, päinvastaisessa tapauksessa a / A. (Esim. 3 S, 8 / S.) Tärkeä erikoistapaus on tyhjä joukko (engl. empty set) /0, johon ei kuulu yhtään alkiota. 11/295

Jos joukon A kaikki alkiot kuuluvat myös joukkoon B, sanotaan että A on B:n osajoukko (engl. subset) ja merkitään A B. [Kirjallisuudessa esiintyy myös merkintä A B.] Jos A ei ole B:n osajoukko merkitään A B. Siis esim. {2,3} S, {1,2,3} S. Triviaalisti on voimassa /0 A kaikilla A. Joukot A ja B ovat samat, jos niissä on samat alkiot, so. jos on A B ja B A. Jos on A B, mutta A B, sanotaan että A on B:n aito osajoukko (engl. proper subset) ja merkitään A B. Edellä olisi siis voitu myös kirjoittaa {2,3} S ja /0 A jos A /0. 12/295

Joukon alkioina voi olla myös toisia joukkoja (tällöin puhutaan usein joukkoperheestä ), esim. X = {/0,{1},{2},{1,2}}. Jonkin perusjoukon A kaikkien osajoukkojen muodostamaa joukkoperhettä sanotaan A:n potenssijoukoksi (engl. powerset) ja merkitään P (A):lla; esim. edellä on X = P ({1,2}). [Koska n-alkioisen perusjoukon A potenssijoukossa on 2 n alkiota (HT), käytetään kirjallisuudessa potenssijoukolle myös merkintää 2 A.] Huomaa, että A B jos ja vain jos A P (B). Tyhjän joukon käsittelyssä pitää olla huolellinen: /0 {/0}, P (/0) = {/0}, P ({/0}) = {/0,{/0}}. 13/295

Joukkoja voidaan kombinoida joukko-operaatioilla, joista tärkeimmät ovat: yhdiste (engl. union) A B = {x x A tai x B}, esim. {1,2,3} {1,4} = {1,2,3,4}. leikkaus (engl. intersection) A B = {x x A ja x B}, esim. {1,2,3} {1,4} = {1}. erotus (engl. difference) A B = {x x A ja x / B}, esim. {1,2,3} {1,4} = {2,3}. [Erotukselle käytetään myös merkintää A \ B.] 14/295

Joukko-operaatioita koskevat tietyt laskulait, joista tärkeimmät ovat yhdisteen ja leikkauksen liitännäisyys: ja vaihdannaisuus: sekä näiden osittelulait: A (B C) = (A B) C A (B C) = (A B) C A B = B A A B = B A A (B C) = (A B) (A C) A (B C) = (A B) (A C) 15/295

Jos kaikki tarkasteltavat joukot ovat jonkin yhteisen universaalijoukon U osajoukkoja, sanotaan erotusta U A joukon A komplementiksi (U:n suhteen) ja merkitään Ā:lla. Yhdiste-, leikkaus- ja komplementointioperaatioita yhdistävät tärkeät ns. de Morganin kaavat: A B = Ā B, A B = Ā B. Lisäksi joukkojen erotus voidaan esittää leikkauksen ja komplementoinnin avulla seuraavasti: A B = A B. 16/295

Jos joukkoperheen A jäsenet on indeksoitu, esim. A = {A 1,A 2,A 3,...}, niin yhdisteelle ja leikkaukselle voidaan käyttää lyhennemerkintöjä A i = A 1 A 2 A 3 i 1 ja A i = A 1 A 2 A 3 Indeksien ei tarvitse olla edes luonnollisia lukuja, vaan indeksijoukkona voi olla mikä tahansa joukko I. Tällöin käytetään merkintöjä i 1 A = {A i i I} ja A i, i I A i. i I 17/295

1.2 Relaatiot ja funktiot Olkoot A ja B joukkoja. Alkioiden a A ja b B järjestettyä paria (engl. ordered pair) merkitään (a, b). Huomaa, että joukkoina on aina {a,b} = {b,a}, mutta jos a b, niin järjestettyinä pareina on (a,b) (b,a). Joukkojen A ja B karteesinen tulo (engl. Cartesian product) määritellään A B = {(a,b) a A ja b B}, Esimerkki {1,2,3} {1,4} = {(1,1),(1,4),(2,1),(2,4),(3,1),(3,4)} {a,b} N = {(a,0),(b,0),(a,1),(b,1),(a,2),(b,2),...} {a,b} /0 = /0 18/295

Relaatio R joukolta A joukolle B on karteesisen tulon A B osajoukko: R A B. Jos (a,b) R, niin merkitään myös arb ja sanotaan että alkio a on relaatiossa (suhteessa) R alkioon b. Tätä infix-merkintää käytetään varsinkin silloin, kun relaation nimenä on jokin erikoismerkki, esim.,,,. Jos relaation R lähtöjoukko (engl. domain) A ja maalijoukko (engl. range) B ovat samat, so. R A A, sanotaan että R on relaatio joukossa A. 19/295

Relaation R A B käänteisrelaatio (engl. inverse relation) on relaatio R 1 B A, R 1 = {(b,a) (a,b) R}. Jos R A B ja S B C ovat relaatioita, niin niiden yhdistetty relaatio (engl. composite relation) R S A C määritellään: R S = {(a,c) b B s.e. (a,b) R,(b,c) S}. 20/295

Varsinkin jos joukot A ja B ovat äärellisiä, relaatiota R A B voi olla havainnollista tarkastella suunnattuna verkkona t. graafina, jonka solmuina ovat joukkojen A ja B alkiot ja solmusta a A on kaari ( nuoli ) solmuun b B, jos ja vain jos (a,b) R. Esimerkki Olkoon joukossa A = {a, b, c, d} määritelty relaatio R = {(a,b),(a,c),(b,d),(c,d),(d,d)}. Relaation R graafiesitys: Relaation R R graafiesitys: a b a b c d c d 21/295

Relaatio f A B on funktio, jos kukin a A on relaatiossa f täsmälleen yhden b B kanssa. Tällöin käytetään yleisten relaatiomerkintöjen sijaan tavallisesti merkintöjä f : A B ja f (a) = b. Funktioita koskee kaikki mitä edellä yleisesti on todettu relaatioista, mutta historiallisista syistä funktioiden yhdistäminen merkitään toisin päin kuin yleisten relaatioiden: jos f : A B ja g : B C ovat funktioita, niin niiden yhdistetty funktio määritellään kaavalla (g f )(a) = g(f (a)), so. relaatioina g f = {(a,c) b B s.e. f (a) = b,g(b) = c}. 22/295

Olkoon f : A B funktio. f on surjektio (engl. onto map), jos jokainen b B on jonkin a A kuva, so. jos f (A) = B. f on injektio (engl. one-to-one map), jos kaikki a A kuvautuvat eri alkioille, so. jos a a f (a) f (a ). f on bijektio, jos se on sekä injektio että surjektio, so. jos jokainen b B on yhden ja vain yhden a A kuva. 23/295

1.3 Ekvivalenssirelaatiot Ekvivalenssirelaatiot ovat matemaattisesti täsmällinen muotoilu sille yleiselle idealle, että oliot ovat keskenään samankaltaisia jonkin kiinnostavan ominaisuuden X suhteen. Ominaisuuteen X perustuva ekvivalenssirelaatio osittaa tarkasteltavien olioiden joukon ekvivalenssiluokkiin, jotka vastaavat ominaisuuden X eri arvoja. (Kääntäen mielivaltainen olioiden joukon ositus Π määrää tietyn abstraktin samankaltaisuusominaisuuden, nim. sen että oliot ovat samankaltaisia jos ne sijoittuvat samaan osituksen Π luokkaan.) 24/295

Osoittautuu, että yleinen samankaltaisuusrelaation idea voidaan kiteyttää seuraaviin kolmeen ominaisuuteen. Määritelmä 1.1 Relaatio R A A on 1. refleksiivinen, jos ara a A; 2. symmetrinen, jos arb bra a,b A; 3. transitiivinen, jos arb,brc arc a,b,c A. Määritelmä 1.2 Relaatio R A A, joka toteuttaa edelliset ehdot 1 3 on ekvivalenssirelaatio. Alkion a A ekvivalenssiluokka (relaation R suhteen) on R[a] = {x A arx}. Ekvivalenssirelaatioita merkitään usein R:n sijaan alkioiden samankaltaisuutta korostavilla symboleilla,, tms. 25/295

Esimerkki Olkoon A = {kaikki 1900-luvulla syntyneet ihmiset} ja arb voimassa, jos henkilöillä a ja b on sama syntymävuosi. Tällöin R on selvästi ekvivalenssi, jonka ekvivalenssiluokat koostuvat keskenään samana vuonna syntyneistä henkilöistä. Luokkia on 100 kappaletta, ja abstraktisti ne vastaavat 1900-luvun vuosia 1900,...,1999. 26/295

Lemma 1.3 Olkoon R A A ekvivalenssi. Tällöin on kaikilla a,b A voimassa: Lemma 1.4 R[a] = R[b] joss arb. Olkoon R A A ekvivalenssi. Tällöin R:n ekvivalenssiluokat muodostavat A:n osituksen erillisiin epätyhjiin osajoukkoihin, so.: R[a] /0 kaikilla a A; A = a A R[a]; jos R[a] R[b], niin R[a] R[b] = /0, kaikilla a,b A. Kääntäen jokainen perusjoukon A ositus erillisiin epätyhjiin luokkiin A i, i I, määrää vastaavan ekvivalenssirelaation: a b a ja b kuuluvat samaan luokkaan A i. 27/295

1.5 Induktiopäättely Olkoon P(k) jokin luonnollisten lukujen ominaisuus. Jos on voimassa: 1. P(0) ja 2. kaikilla k 0: P(k) P(k + 1), niin P(n) on tosi kaikilla n N. 28/295

Esimerkki Väite. Kaikilla n N on voimassa kaava P(n) : (1 + 2 + + n) 2 = 1 3 + 2 3 + + n 3. Todistus. 1. Perustapaus: P(0) : 0 2 = 0. (jatkuu) 29/295

2. Induktioaskel: Oletetaan, että annetulla k 0 kaava P(k) : (1 + 2 + + k) 2 = 1 3 + 2 3 + + k 3 on voimassa. Tällöin on myös: (1 + 2 + + k + (k + 1)) 2 = (1 + + k) 2 + 2(1 + k)(k + 1) + (k + 1) 2 = 1 3 + + k 3 k(k + 1) + 2 (k + 1) + (k + 1) 2 2 = 1 3 + + k 3 + k(k + 1) 2 + (k + 1) 2 = 1 3 + + k 3 + (k + 1) 3. On siis todettu, että kaavan P(k) totuudesta seuraa kaavan P(k + 1) totuus, so. että P(k) P(k + 1), kaikilla k 0. Luonnollisten lukujen induktioperiaatteen 1.9 nojalla voidaan nyt päätellä, että kaava P(n) on voimassa kaikilla n N. 30/295

1.6 Aakkostot, merkkijonot ja kielet Automaattiteoria diskreetin signaalinkäsittelyn perusmallit ja -menetelmät ( diskreettien I/O-kuvausten yleinen teoria) 1011 Syöte Automaatti Tulos B Automaatin käsite on matemaattinen abstraktio. Yleisellä tasolla suunniteltu automaatti voidaan toteuttaa eri tavoin: esim. sähköpiirinä, mekaanisena laitteena tai (tavallisimmin) tietokoneohjelmana. 31/295

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) 32/295

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. 33/295

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. 34/295

Aakkoston Σ kaikkien merkkijonojen joukkoa merkitään Σ :lla. Mielivaltaista merkkijonojoukkoa A Σ sanotaan aakkoston Σ (formaaliksi) kieleksi (engl. formal language). Esimerkki Jos Σ = {0,1}, niin Σ = {ε,0,1,00,01,10,11,000,...}. Esimerkki Jos Σ = {0, 1}, niin esimerkiksi seuraavat ovat aakkoston Σ kieliä: /0 {ε, 0, 110110110011100} {0,1,11,111,1111,...} Σ = {ε,0,1,00,01,10,11,000...} 35/295

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. 36/295

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). 37/295

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 {{} ; n kpl 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,...}. 38/295

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

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: 40/295

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. 41/295

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,... 42/295

Esimerkki: Kahviautomaatti 20 c 20 c 10 c 10 c 10 c 0,00 0,10 0,20 0,30 10 c enough 20 c 20 c 10 c 20 c more than enough! 10 c 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. 43/295

Tilakaavioiden merkinnät: q Automaatin tila nimeltä q q 0 Alkutila q f Lopputila: automaatti hyväksyy syötejonon, joss se jonon loppuessa on tällaisessa tilassa q 1 a q 2 Syötemerkin a aikaansaama siirtymä tilasta q 1 tilaan q 2 44/295

Esimerkki C-kielen etumerkittömät reaaliluvut. 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}. 45/295

Äärellisen automaatin esitys tilatauluna: automaatin uusi tila vanhan tilan ja syötemerkin funktiona. Esimerkki Reaalilukuautomaatin 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. 46/295

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. 47/295

Esimerkki Reaalilukuautomaatin täydellinen kaavioesitys olisi:. digit digit. q 0 q 1 exp, +,- error +,- digit, exp,.,+,- exp 48/295

ja reaalilukuautomaatin 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 49/295

2.2 Äärellisiin automaatteihin perustuva ohjelmointi Annetun äärellisen automaatin pohjalta on helppo laatia automaatin toimintaa vastaava ohjelma. Esim. reaalilukuautomaattiin perustuva syötejonon syntaksitestaus: 50/295

from sys import stdin q=0 for c in stdin.readline().strip("\n"): if q==0: if c.isdigit(): q=1 elif c==".": q=7 else: q=99 elif q==1: if c.isdigit(): q=1 elif c==".": q=2 elif c=="e" or c=="e": q=4 else: q=99 elif q==2 or q==3: if c.isdigit(): q=3 elif c=="e" or c=="e": q=4 else: q=99 51/295

elif q==4: if c.isdigit(): q=6 elif c=="+" or c=="-": q=5 else: q=99 elif q==5 or q==6: if c.isdigit(): q=6 else: q=99 elif q==7: if c.isdigit(): q=3 else: q=99 if q in [2,3,6]: print "On reaaliluku." else: print "Ei ole reaaliluku." 52/295

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 d d Lyhennysmerkintä d = {0,1,...,7}. 53/295

Pelkän syntaksitestin toteutus: from sys import stdin q=0 for c in stdin.readline().strip("\n"): if q==0: if c=="+" or c=="-": q=1 elif c in "01234567": q=2 else: q=99 elif q==1: if c in "01234567": q=2 else: q=99 elif q==2: if c in "01234567": q=2 else: q=99 if q == 2 print "Oktaaliluku!" else: print "Virheellinen oktaaliluku." 54/295

Täydennys syöteluvun arvon laskevilla operaatioilla ( luvun muuttaminen kymmenjärjestelmään ): from sys import stdin q=0 sgn=1 # SEM: etumerkki val=0 # SEM: itseisarvo for c in stdin.readline().strip("\n"): if q==0: if c=="+": q=1 elif c=="-": sgn=-1 # SEM q=1 elif c in "01234567": val=int(c) # SEM q=2 else: q=99 55/295

elif q==1: if c in "01234567": val=int(c) q=2 else: q=99 elif q==2: if c in "01234567": val=8*val+int(c) q=2 else: q=99 if q == 2: print "Oktaaliluku", sgn*val else: print "Virheellinen oktaaliluku." # SEM # SEM # SEM 56/295

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ä. δ 57/295

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. 58/295

Täsmällinen muotoilu: Määritelmä Äärellinen automaatti on viisikko M = (Q,Σ,δ,q 0,F), missä Q on automaatin tilojen äärellinen joukko; Σ on automaatin syöteaakkosto; δ : Q Σ Q on automaatin siirtymäfunktio; q 0 Q on automaatin alkutila; F Q on automaatin (hyväksyvien) lopputilojen joukko. 59/295

Esimerkki Reaalilukuautomaatin 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. 60/295

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. 61/295

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 ). 62/295

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 ) M (q 1,w 1 ) M M (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 ). 63/295

Automaatti M hyväksyy merkkijonon x Σ, jos on voimassa (q 0,x) M (q f,ε) jollakin q f F; muuten M hylkää x:n. 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}. 64/295

Esimerkki Merkkijonon 0.25E2 käsittely reaalilukuautomaatilla: (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). 65/295

2.4 Äärellisten automaattien minimointi Voidaan osoittaa, että jokaisella äärellisellä automaatilla on yksikäsitteinen ekvivalentti (so. saman kielen tunnistava) tilamäärältään minimaalinen automaatti. Annetun äärellisen automaatin kanssa minimointi (ekvivalentin minimiautomaatin määrittäminen) on sekä käytännössä että teoreettiselta kannalta tärkeä tehtävä: siten voidaan esimerkiksi selvittää, tunnistavatko kaksi annettua automaattia saman kielen. Tehtävä voidaan ratkaista seuraavassa esitettävällä tehokkaalla menetelmällä. Menetelmän perusideana on pyrkiä samaistamaan keskenään sellaiset syötteenä annetun automaatin tilat, joista lähtien automaatti toimii täsmälleen samoin kaikilla merkkijonoilla. 66/295

Olkoon M = (Q,Σ,δ,q 0,F) äärellinen automaatti. Laajennetaan M:n siirtymäfunktio yksittäisistä syötemerkeistä merkkijonoihin: jos q Q, x Σ, merkitään δ (q,x) = q s.e. (q,x) M (q,ε). M:n tilat q ja q ovat ekvivalentit, merkitään jos kaikilla x Σ on q q, δ (q,x) F jos ja vain jos δ (q,x) F; toisin sanoen, jos automaatti q:sta ja q :sta lähtien hyväksyy täsmälleen samat merkkijonot. 67/295

Lievempi ekvivalenssiehto: tilat q ja q ovat k-ekvivalentit, merkitään q k q, jos kaikilla x Σ, x k, on δ (q,x) F jos ja vain jos δ (q,x) F; toisin sanoen, jos mikään enintään k:n pituinen merkkijono ei pysty erottamaan tiloja toisistaan. Ilmeisesti on: (i) q 0 q joss sekä q että q ovat lopputiloja tai kumpikaan ei ole; ja (ii) q q joss q k q kaikilla k = 0,1,2,... (1) Esitettävä minimointialgoritmi perustuu syötteenä annetun automaatin tilojen k-ekvivalenssiluokkien hienontamiseen (k + 1)-ekvivalenssiluokiksi kunnes saavutetaan täysi ekvivalenssi. 68/295

Algoritmi perustuu seuraavaan: 1. Kaksi (k-ekvivalenttia) tilaa q 1 k+1 q 2, jos ja vain jos q 1 0 q2 ja δ(q 1,a) k δ(q 2,a) kaikilla a Σ. 2. Jos jollakin k:n arvolla pätee, että kaikki keskenään k-ekvivalentit tilat ovat myös k + 1-ekvivalentteja, niin keskenään k-ekvivalentit tilat ovat keskenään ekvivalentteja. Tod. Induktioaskel: oletetaan, että keskenään k-ekvivalentit tilat ovat p-ekvivalentteja jollakin p. Keskenään k-ekvivalentit tilat ovat siis k + 1-ekvivalentteja, eli ym. perusteella niistä siirrytään kaikilla aakkosilla keskenään k-ekvivalentteihin (p-ekvivalentteihin) tiloihin; k-ekvivalentit tilat ovat siis p + 1-ekvivalentteja. (Perustapaus esim. p = 0.) 69/295

Algoritmi MIN-FA [Äärellisen automaatin minimointi] Syöte: Äärellinen automaatti M = (Q,Σ,δ,q 0,F). Tulos: M:n kanssa ekvivalentti äärellinen automaatti M, jossa on minimimäärä tiloja. Menetelmä: 1. [Turhien tilojen poisto.] Poista M:stä kaikki tilat, joita ei voida saavuttaa tilasta q 0 millään syötemerkkijonolla. 2. [0-ekvivalenssi.] Osita M:n jäljelle jääneet tilat kahteen luokkaan: ei-lopputiloihin ja lopputiloihin. 70/295

3. [k-ekvivalenssi (k + 1)-ekvivalenssi.] Tarkasta, siirrytäänkö samaan ekvivalenssiluokkaan kuuluvista tiloista samoilla merkeillä aina samanluokkaisiin tiloihin. Jos kyllä, algoritmi päättyy ja minimiautomaatin M tilat vastaavat M:n tilojen luokkia. Muussa tapauksessa hienonna ositusta jakamalla kunkin äskeistä ehtoa rikkovan k-ekvivalenssiluokan tilat uusiin, pienempiin (k + 1)-ekvivalenssiluokkiin sen mukaan, mihin luokkaan kustakin tilasta siirrytään milläkin aakkosella, ja toista kohta 3 uudella osituksella. 71/295

Lause 2.1 Algoritmi MIN-FA muodostaa annetun äärellisen automaatin M kanssa ekvivalentin äärellisen automaatin M, jossa on minimimäärä tiloja. Tämä automaatti on tilojen nimeämistä paitsi yksikäsitteinen. Algoritmin suoritus päättyy aina: kullakin askelen 3 suorituskerralla, viimeistä lukuunottamatta, vähintään yksi luokka ositetaan pienemmäksi. Askel 3 jakaa k-ekvivalenssiluokat (k + 1)-ekvivalenssiluokiksi: kaksi tilaa ovat (k + 1)-ekvivalentit, jos ja vain jos molemmat tai ei kumpikaan ovat hyväksyviä lopputiloja ja kummastakin siirrytään jokaisella aakkosella k-ekvivalentteihin tiloihin. Kun k-ekvivalenssiluokat ovat myös k + 1-ekvivalenssiluokat, kunkin luokan tilat ovat k-ekvivalentteja kaikilla k eli ekvivalentteja (1.ii). Jokaisessa ekvivalenssiluokassa on ainakin yksi alkutilasta saavutettava tila, joten kaikki luokat ovat tarpeellisia. Yksikäsitteisyys todistettu opetusmonisteessa. 72/295

Esimerkki Tarkastellaan alla esitetyn automaatin minimointia. Vaiheessa 1 automaatista poistetaan tila 6, johon ei päästä millään merkkijonolla. Vaiheessa 2 ositetaan automaatin tilat 1 5 ei-lopputiloihin (luokka I) ja lopputiloihin (luokka II), ja tarkastetaan siirtymien käyttäytyminen osituksen suhteen: b 2 a 4 a b 1 a b a a b b a b 6 I : 1 2,I 3,I 2 4,II 2,I 3 2,I 3,I 3 b 5 a II : 4 3,I 5,II 5 1,I 4,II 73/295

Luokassa I on nyt kahdentyyppisiä tiloja ({1,3} ja {2}), joten ositusta täytyy hienontaa ja tarkastaa siirtymät uuden osituksen suhteen: b a b a 2 a 4 b a I : 1 2,II 3,I 3 2,II 3,I 1 b a 3 b a b 5 a b 6 II : 2 4,III 2,II III : 4 3,I 5,III 5 1,I 4,III Nyt kunkin luokan sisältämät tilat ovat keskenään samanlaisia, joten minimointialgoritmi päättyy. 74/295

Saadun minimiautomaatin tilakaavio on seuraava: b b b a a I II III a 75/295

2.5 Epädeterministiset äärelliset automaatit Epädeterministiset automaatit ovat muuten samanlaisia kuin deterministiset, mutta niiden siirtymäfunktio δ ei liitä automaatin vanhan tilan ja syötemerkin muodostamiin pareihin yksikäsitteistä uutta tilaa, vaan joukon mahdollisia seuraavia tiloja. Epädeterministinen automaatti hyväksyy syötteensä, jos jokin mahdollisten tilojen jono johtaa hyväksyvään lopputilaan. Vaikka epädeterministisiä automaatteja ei voi sellaisinaan toteuttaa tietokoneohjelmina, ne ovat tärkeä päätösongelmien kuvausformalismi. 76/295

Esimerkki Epädeterministinen automaatti, joka tutkii sisältääkö syötejonoon osajonoa aba: q 0 a a q 1 b q 2 a q 3 a b b Automaatti hyväksyy esim. syötejonon aaba, koska sen on mahdollista edetä seuraavasti: (q 0,aaba) (q 0,aba) (q 1,ba) (q 2,a) (q 3,ε). Automaatti voisi päätyä myös hylkäävään tilaan: (q 0,aaba) (q 0,aba) (q 0,ba) (q 0,a) (q 0,ε), mutta tällä ei ole merkitystä voidaan ajatella, että automaatti osaa ennustaa ja valita aina parhaan mahdollisen vaihtoehdon. 77/295

Epädeterministinen automaatti, joka tutkii sisältääkö syötejono osajonoa aba: q 0 a a q 1 b q 2 a q 3 a b b Huom: automaatti ei hyväksy syötejonoa aabbab, koska alkutilanteesta (q 0,aabbab) ei ole mahdollista päästä (ainoaan) hyväksyvään lopputilanteeseen (q 3,ε) millään tavalla. 78/295

Määritelmä 2.2 Epädeterministinen äärellinen automaatti on viisikko M = (Q,Σ,δ,q 0,F), missä Q on äärellinen tilojen joukko; Σ on syöteaakkosto; δ : Q Σ P (Q) on automaatin joukkoarvoinen siirtymäfunktio; q 0 Q on alkutila; F Q on (hyväksyvien) lopputilojen joukko. 79/295

Esimerkki aba-automaatti, joka tunnistaa, sisältääkö syöte merkkijonon aba: q 0 a a q 1 b q 2 a q 3 a b b Siirtymäfunktio: a b q 0 {q 0,q 1 } {q 0 } q 1 /0 {q 2 } q 2 {q 3 } /0 q 3 {q 3 } {q 3 } Nyt esimerkiksi δ(q 0,a) = {q 0,q 1 } ja δ(q 1,a) = /0. 80/295

Epädeterministisen automaatin tilanne (q, w) voi johtaa suoraan tilanteeseen (q,w ), merkitään (q,w) M (q,w ), jos on w = aw (missä a Σ) ja q δ(q,a). Sanotaan myös, että tilanne (q,w ) on tilanteen (q,w) mahdollinen välitön seuraaja. Useamman askelen mittaiset tilannejohdot, merkkijonojen hyväksyminen ja hylkääminen ym. käsitteet määritellään samoin sanoin kuin deterministisillä automaateilla. Koska yhden askelen johdon määritelmä kuitenkin nyt on toinen, niiden sisältö muovautuu hieman erilaiseksi. 81/295

Lause 2.2 Olkoon A = L(M) jonkin epädeterministisen äärellisen automaatin M tunnistama kieli. Tällöin on olemassa myös deterministinen äärellinen automaatti M, jolla A = L( M). Todistus Olkoon A = L(M), M = (Q,Σ,δ,q 0,F). Ideana on laatia deterministinen äärellinen automaatti M, joka simuloi M:n toimintaa kaikissa sen kullakin hetkellä mahdollisissa tiloissa rinnakkain. Formaalisti: automaatin M tilat vastaavat M:n tilojen joukkoja: missä M = ( Q,Σ, ˆδ, ˆq 0, F), Q = P (Q) = {S S Q}, ˆq 0 = {q 0 }, F = {S Q S sisältää jonkin q f F}, ˆδ(S,a) = q Sδ(q,a). 82/295

Esimerkki aba-automaattiin q 0 a a q 1 b q 2 a q 3 a b b sovellettuna em. konstruktio tuottaa seuraavan deterministisen automaatin (vain alkutilasta saavutettavat tilat esitetty): b a a {q 0 } {q 0, q 1 } b {q 0, q 2 } a a {q 0, q 1, q 3 } a b {q 0, q 2, q 3 } b a b {q 0, q 3 } b 83/295

Minimoimalla ja nimeämällä tilat uudelleen saatu automaatti b a a {q 0 } {q 0, q 1 } b {q 0, q 2 } a a {q 0, q 1, q 3 } a b {q 0, q 2, q 3 } b a b {q 0, q 3 } b yksinkertaistuu muotoon: s 0 b a s 1 a b s 2 a s 3 a, b b 84/295

[Todistus jatkuu.] Tarkastetaan, että automaatti M todella on ekvivalentti M:n kanssa, so. että L( M) = L(M). Määritelmien mukaan on: ja x L(M) joss (q 0,x) M (q f,ε) jollakin q f F x L( M) joss ({q 0 },x) M (S,ε), missä S sis. jonkin q f F. Osoitetaan siis, että kaikilla x Σ ja q Q on: (q 0,x) M (q,ε) joss ({q 0 },x) M (S,ε) ja q S. (2) 85/295

Väite (2): (q 0,x) M (q,ε) joss ({q 0 },x) M (S,ε) ja q S. Väitteen (2) todistus tehdään induktiolla merkkijonon x pituuden suhteen. (i) Tapaus x = 0: (q 0,ε) M (q,ε) joss q = q 0 ; samoin ({q 0 },ε) M (S,ε) joss S = {q 0 }. 86/295

Väite (2): (q 0,x) M (q,ε) joss ({q 0 },x) M (S,ε) ja q S. (ii) Induktioaskel: Olkoon x = ya; oletetaan, että väite (2) pätee y:lle. Tällöin: (q 0,x) = (q 0,ya) M (q,ε) joss q Q s.e. (q 0,ya) M (q,a) ja (q,a) M (q,ε) joss q Q s.e. (q 0,y) M (q,ε) ja (q,a) M (q,ε) joss (ind.ol.) q Q s.e. ({q 0 },y) M (S,ε) ja q S ja q δ(q,a) joss ({q 0 },y) M (S,ε) ja q S s.e. q δ(q,a) joss ({q 0 },y) M (S,ε) ja q q S δ(q,a) = ˆδ(S,a) joss ({q 0 },ya) M (S,a) ja q ˆδ(S,a) = S joss ({q 0 },ya) M (S,a) ja (S,a) M (S,ε) ja q S joss ({q 0 },x) = ({q 0 },ya) M (S,ε) ja q S. 87/295

Väite (2): (q 0,x) M (q,ε) joss ({q 0 },x) M (S,ε) ja q S. (ii) Induktioaskel: Olkoon x = ya; oletetaan, että väite (2) pätee y:lle. Tällöin: (q 0,x) = (q 0,ya) M (q,ε) joss q Q s.e. (q 0,ya) M (q,a) ja (q,a) M (q,ε) joss q Q s.e. (q 0,y) M (q,ε) ja (q,a) M (q,ε) joss (ind.ol.) q Q s.e. ({q 0 },y) M (S,ε) ja q S ja q δ(q,a) joss ({q 0 },y) M (S,ε) ja q S s.e. q δ(q,a) joss ({q 0 },y) M (S,ε) ja q q S δ(q,a) = ˆδ(S,a) joss ({q 0 },ya) M (S,a) ja q ˆδ(S,a) = S joss ({q 0 },ya) M (S,a) ja (S,a) M (S,ε) ja q S joss ({q 0 },x) = ({q 0 },ya) M (S,ε) ja q S. 88/295

Väite (2): (q 0,x) M (q,ε) joss ({q 0 },x) M (S,ε) ja q S. (ii) Induktioaskel: Olkoon x = ya; oletetaan, että väite (2) pätee y:lle. Tällöin: (q 0,x) = (q 0,ya) M (q,ε) joss q Q s.e. (q 0,ya) M (q,a) ja (q,a) M (q,ε) joss q Q s.e. (q 0,y) M (q,ε) ja (q,a) M (q,ε) joss (ind.ol.) q Q s.e. ({q 0 },y) M (S,ε) ja q S ja q δ(q,a) joss ({q 0 },y) M (S,ε) ja q S s.e. q δ(q,a) joss ({q 0 },y) M (S,ε) ja q q S δ(q,a) = ˆδ(S,a) joss ({q 0 },ya) M (S,a) ja q ˆδ(S,a) = S joss ({q 0 },ya) M (S,a) ja (S,a) M (S,ε) ja q S joss ({q 0 },x) = ({q 0 },ya) M (S,ε) ja q S. 89/295

Väite (2): (q 0,x) M (q,ε) joss ({q 0 },x) M (S,ε) ja q S. (ii) Induktioaskel: Olkoon x = ya; oletetaan, että väite (2) pätee y:lle. Tällöin: (q 0,x) = (q 0,ya) M (q,ε) joss q Q s.e. (q 0,ya) M (q,a) ja (q,a) M (q,ε) joss q Q s.e. (q 0,y) M (q,ε) ja (q,a) M (q,ε) joss (ind.ol.) q Q s.e. ({q 0 },y) M (S,ε) ja q S ja q δ(q,a) joss ({q 0 },y) M (S,ε) ja q S s.e. q δ(q,a) joss ({q 0 },y) M (S,ε) ja q q S δ(q,a) = ˆδ(S,a) joss ({q 0 },ya) M (S,a) ja q ˆδ(S,a) = S joss ({q 0 },ya) M (S,a) ja (S,a) M (S,ε) ja q S joss ({q 0 },x) = ({q 0 },ya) M (S,ε) ja q S. 90/295

Väite (2): (q 0,x) M (q,ε) joss ({q 0 },x) M (S,ε) ja q S. (ii) Induktioaskel: Olkoon x = ya; oletetaan, että väite (2) pätee y:lle. Tällöin: (q 0,x) = (q 0,ya) M (q,ε) joss q Q s.e. (q 0,ya) M (q,a) ja (q,a) M (q,ε) joss q Q s.e. (q 0,y) M (q,ε) ja (q,a) M (q,ε) joss (ind.ol.) q Q s.e. ({q 0 },y) M (S,ε) ja q S ja q δ(q,a) joss ({q 0 },y) M (S,ε) ja q S s.e. q δ(q,a) joss ({q 0 },y) M (S,ε) ja q q S δ(q,a) = ˆδ(S,a) joss ({q 0 },ya) M (S,a) ja q ˆδ(S,a) = S joss ({q 0 },ya) M (S,a) ja (S,a) M (S,ε) ja q S joss ({q 0 },x) = ({q 0 },ya) M (S,ε) ja q S. 91/295

Väite (2): (q 0,x) M (q,ε) joss ({q 0 },x) M (S,ε) ja q S. (ii) Induktioaskel: Olkoon x = ya; oletetaan, että väite (2) pätee y:lle. Tällöin: (q 0,x) = (q 0,ya) M (q,ε) joss q Q s.e. (q 0,ya) M (q,a) ja (q,a) M (q,ε) joss q Q s.e. (q 0,y) M (q,ε) ja (q,a) M (q,ε) joss (ind.ol.) q Q s.e. ({q 0 },y) M (S,ε) ja q S ja q δ(q,a) joss ({q 0 },y) M (S,ε) ja q S s.e. q δ(q,a) joss ({q 0 },y) M (S,ε) ja q q S δ(q,a) = ˆδ(S,a) joss ({q 0 },ya) M (S,a) ja q ˆδ(S,a) = S joss ({q 0 },ya) M (S,a) ja (S,a) M (S,ε) ja q S joss ({q 0 },x) = ({q 0 },ya) M (S,ε) ja q S. 92/295

Väite (2): (q 0,x) M (q,ε) joss ({q 0 },x) M (S,ε) ja q S. (ii) Induktioaskel: Olkoon x = ya; oletetaan, että väite (2) pätee y:lle. Tällöin: (q 0,x) = (q 0,ya) M (q,ε) joss q Q s.e. (q 0,ya) M (q,a) ja (q,a) M (q,ε) joss q Q s.e. (q 0,y) M (q,ε) ja (q,a) M (q,ε) joss (ind.ol.) q Q s.e. ({q 0 },y) M (S,ε) ja q S ja q δ(q,a) joss ({q 0 },y) M (S,ε) ja q S s.e. q δ(q,a) joss ({q 0 },y) M (S,ε) ja q q S δ(q,a) = ˆδ(S,a) joss ({q 0 },ya) M (S,a) ja q ˆδ(S,a) = S joss ({q 0 },ya) M (S,a) ja (S,a) M (S,ε) ja q S joss ({q 0 },x) = ({q 0 },ya) M (S,ε) ja q S. 93/295

Väite (2): (q 0,x) M (q,ε) joss ({q 0 },x) M (S,ε) ja q S. (ii) Induktioaskel: Olkoon x = ya; oletetaan, että väite (2) pätee y:lle. Tällöin: (q 0,x) = (q 0,ya) M (q,ε) joss q Q s.e. (q 0,ya) M (q,a) ja (q,a) M (q,ε) joss q Q s.e. (q 0,y) M (q,ε) ja (q,a) M (q,ε) joss (ind.ol.) q Q s.e. ({q 0 },y) M (S,ε) ja q S ja q δ(q,a) joss ({q 0 },y) M (S,ε) ja q S s.e. q δ(q,a) joss ({q 0 },y) M (S,ε) ja q q S δ(q,a) = ˆδ(S,a) joss ({q 0 },ya) M (S,a) ja q ˆδ(S,a) = S joss ({q 0 },ya) M (S,a) ja (S,a) M (S,ε) ja q S joss ({q 0 },x) = ({q 0 },ya) M (S,ε) ja q S. 94/295

Väite (2): (q 0,x) M (q,ε) joss ({q 0 },x) M (S,ε) ja q S. (ii) Induktioaskel: Olkoon x = ya; oletetaan, että väite (2) pätee y:lle. Tällöin: (q 0,x) = (q 0,ya) M (q,ε) joss q Q s.e. (q 0,ya) M (q,a) ja (q,a) M (q,ε) joss q Q s.e. (q 0,y) M (q,ε) ja (q,a) M (q,ε) joss (ind.ol.) q Q s.e. ({q 0 },y) M (S,ε) ja q S ja q δ(q,a) joss ({q 0 },y) M (S,ε) ja q S s.e. q δ(q,a) joss ({q 0 },y) M (S,ε) ja q q S δ(q,a) = ˆδ(S,a) joss ({q 0 },ya) M (S,a) ja q ˆδ(S,a) = S joss ({q 0 },ya) M (S,a) ja (S,a) M (S,ε) ja q S joss ({q 0 },x) = ({q 0 },ya) M (S,ε) ja q S. 95/295

ε-automaatit Jatkossa tarvitaan vielä yksi äärellisten automaattien mallin laajennus: epädeterministinen äärellinen automaatti, jossa sallitaan ε-siirtymät. Tällaisella siirtymällä automaatti tekee epädeterministisen valinnan eri jatkovaihtoehtojen välillä lukematta yhtään syötemerkkiä. Esimerkiksi kieli {aa, ab} voitaisiin tunnistaa seuraavalla ε-automaatilla: a a ε ε a b 96/295

Määritelmä ε-automaatti on viisikko missä siirtymäfunktio δ on kuvaus M = (Q,Σ,δ,q 0,F), δ : Q (Σ {ε}) P (Q). Muut määritelmät ovat kuten tavallisilla epädeterministisillä äärellisillä automaateilla, paitsi suoran tilannejohdon määritelmä: ε-automaattien tapauksessa relaatio (q,w) M (q,w ) on voimassa, jos on w = aw (missä a Σ) ja q δ(q,a); tai w = w ja q δ(q,ε). 97/295

Lause 2.3 Olkoon A = L(M) jollakin ε-automaatilla M. Tällöin on olemassa myös ε-siirtymätön epädeterministinen automaatti M, jolla A = L( M). Todistus Olkoon M = (Q,Σ,δ,q 0,F) jokin ε-automaatti. Automaatti M toimii muuten aivan samoin kuin M, mutta se harppaa ε-siirtymien yli suorittamalla kustakin tilasta lähtien vain ne aidot siirtymät, jotka ovat siitä käsin jotakin ε-siirtymäjonoa pitkin saavutettavissa. 98/295

Formaalisti määritellään annetun tilan q Q ε-sulkeuma ε (q) automaatissa M kaavalla ε (q) = {q Q (q,ε) M (q,ε)}, so. joukkoon ε (q) kuuluvat kaikki ne automaatin M tilat, jotka ovat saavutettavissa tilasta q pelkillä ε-siirtymillä. Automaatin M siirtymäsäännöt voidaan nyt kuvata seuraavasti: M = (Q,Σ, ˆδ,q 0, F), missä ˆδ(q,a) = δ(q,a); q ε (q) F = {q Q ε (q) F /0}. 99/295

Esimerkki Poistamalla edellisen konstruktion mukaisesti ε-siirtymät ε-automaatista saadaan tavallinen epädeterministinen automaatti: alkuperäinen ε-automaatti: ε-siirtymien poiston jälkeen: saavuttamattomien tilojen poiston jälkeen: a 4 ε 7 a a 4 7 a 4 1 ε ε 2 ε 5 a 8 3 a 6 ε 9 1 2 a 5 8 a a a 3 6 9 1 a a 6 8 Tarkastellaan automaattia ε-siirtymien poiston jälkeen: 1. Miksi alkutila 1 on hyväksyvä lopputila? 2. Miksi ei haittaa, että tilaa 7 ei voida saavuttaa alkutilasta? 100/295

2.6 Säännölliset lausekkeet Automaattimalleista poikkeava tapa kuvata yksinkertaisia kieliä. Olkoot A ja B aakkoston Σ kieliä. Perusoperaatioita: Yhdiste: A B = {x Σ x A tai x B} Katenaatio: AB = {xy Σ x A ja y B}; Potenssit: { A 0 = {ε}, A k = AA k 1 = {x 1...x k x i A i = 1,...,k} (k 1); Sulkeuma t. Kleenen tähti : A = k 0 A k = {x 1...x k k 0, x i A i = 1,...,k}. 101/295

Määritelmä 2.3 Aakkoston Σ säännölliset lausekkeet määritellään induktiivisesti säännöillä: 1. /0 ja ε ovat Σ:n säännöllisiä lausekkeita; 2. a on Σ:n säännöllinen lauseke kaikilla a Σ; 3. jos r ja s ovat Σ:n säännöllisiä lausekkeita, niin (r s), (rs) ja r ovat Σ:n säännöllisiä lausekkeita; 4. muita Σ:n säännöllisiä lausekkeita ei ole. 102/295

Kukin Σ:n säännöllinen lauseke r kuvaa kielen L(r), joka määritellään: L(/0) = /0; L(ε) = {ε}; L(a) = {a} kaikilla a Σ; L((r s)) = L(r) L(s); L((rs)) = L(r)L(s); L(r ) = (L(r)). 103/295

Esimerkki Aakkoston {a, b} säännöllisiä lausekkeita: r 1 = ((ab)b), r 2 = (ab), r 3 = (ab ), r 4 = (a(b (bb))) Lausekkeiden kuvaamat kielet: L(r 1 ) = ({a}{b}){b} = {ab}{b} = {abb} L(r 2 ) = {ab} = {ε,ab,abab,ababab,...} = {(ab) i i 0} L(r 3 ) = {a}({b}) = {a,ab,abb,abbb,...} = {ab i i 0} L(r 4 ) = ({a}{b,bb}) = {ab,abb} = {ε,ab,abb,abab,ababb,...} = {x {a,b} kutakin a-kirjainta x:ssä seuraa 1 tai 2 b-kirjainta }. 104/295

Sulkumerkkien vähentämissääntöjä: Operaattoreiden prioriteetti: Yhdiste- ja tulo-operaatioiden assosiatiivisuus: L(((r s) t)) = L((r (s t))) L(((rs)t)) = L((r(st))) peräkkäisiä yhdisteitä ja tuloja ei tarvitse suluttaa. Yksinkertaisemmin siis: r 1 = abb, r 2 = (ab), r 3 = ab, r 4 = (a(b bb)). 105/295

Esimerkki C-kielen etumerkittömät reaaliluvut number = (dd.d.dd )(e(+ ε)dd ε) (dd e(+ ε)dd ), missä d on lyhennemerkintä lausekkeelle d = (0 1 2 3 4 5 6 7 8 9) ja e on lyhennemerkintä lausekkeelle e = (E e). Usein merkitään myös lyhyesti rr r +. Esimerkki (d +.d.d + )(e(+ ε)d + ε) (d + e(+ ε)d + ). 106/295

Määritelmä 2.4 Kieli on säännöllinen, jos se voidaan kuvata säännöllisellä lausekkeella. 107/295

Säännöllisten lausekkeiden sieventäminen Säännöllisillä kielillä on yleensä useita vaihtoehtoisia kuvauksia, esim.: Σ = L((a b) ) = L((a b ) ) = L(a b (a b) ba(a b) ). Määritelmä. Säännölliset lausekkeet r ja s ovat ekvivalentit, merk. r = s, jos L(r) = L(s). Lausekkeen sieventäminen = yksinkertaisimman ekvivalentin lausekkeen määrittäminen. Säännöllisten lausekkeiden ekvivalenssitestaus on epätriviaali, mutta periaatteessa mekaanisesti ratkeava ongelma. 108/295

Sievennyssääntöjä: r (s t) = (r s) t r(st) = (rs)t r s = s r r(s t) = rs rt (r s)t = rt st r r = r r /0 = r εr = r /0r = /0 r = ε r r r = (ε r) Mikä tahansa säännöllisten lausekkeiden tosi ekvivalenssi voidaan johtaa näistä laskulaeista, kun lisätään päättelysääntö: jos r = rs t, niin r = ts, edellyttäen että ε / L(s). 109/295

Kahden lausekkeen ekvivalenssin toteamiseksi kannattaa usein päätellä erikseen kummankin kuvaaman kielen sisältyminen toiseen. Merkitään lyhyesti: r s, jos L(r) L(s). Tällöin siis r = s joss r s ja s r. Esimerkki Todetaan, että (a b ) = (a b). 1. Selvästi (a b ) (a b), koska (a b) kuvaa kaikkia aakkoston {a, b} merkkijonoja. 2. Koska selvästi (a b) a b, niin myös (a b) (a b ). 110/295

2.7 ÄÄRELLISET AUTOMAATIT JA SÄÄNNÖLLISET KIELET Lause 2.4 Jokainen säännöllinen kieli voidaan tunnistaa äärellisellä automaatilla. Todistus Seuraavan kalvon induktiivisen konstruktion avulla voidaan mielivaltaisen säännöllisen lausekkeen r rakennetta seuraten muodostaa ε- automaatti M r, jolla L(M r ) = L(r). Tästä automaatista voidaan poistaa ε-siirtymät Lemman 2.4 mukaisesti, ja tarvittaessa voidaan syntyvä epädeterministinen automaatti determinisoida Lauseen 2.2 konstruktiolla. Esitettävästä konstruktiosta on syytä huomata, että muodostettaviin ε- automaatteihin tulee aina yksikäsitteiset alku- ja lopputila, eikä minkään osa-automaatin lopputilasta lähde eikä alkutilaan tule yhtään ko. osaautomaatin sisäistä siirtymää. 111/295

r = : r = s t : r = ε : ε ε M s ε r = a (a Σ) : a ε M t ε r = s : ε r = st : ε Ms ε M s M t ε 112/295

Esimerkki Lausekkeesta r = (a(b bb)) saadaan näiden sääntöjen mukaan seuraava ε-automaatti: ε a ε ε ε b b ε ε b ε ε 113/295

Edellä esitetty automaatti on selvästi hyvin redundantti. Käsin automaatteja suunniteltaessa ne kannattaakin usein muodostaa suoraan (mikäli tietää, mitä on tekemässä). Esim. lausekkeesta r = (a(b bb)) on suhteellisen helppoa muodostaa seuraava yksinkertainen epädeterministinen tunnistaja-automaatti: b a b b 114/295

Lause 2.5 Jokainen äärellisellä automaatilla tunnistettava kieli on säännöllinen. Todistus Tarvitaan vielä yksi äärellisten automaattien laajennus: lausekeautomaatissa voidaan siirtymien ehtoina käyttää mielivaltaisia säännöllisiä lausekkeita. Formalisointi: Merk. RE Σ = aakkoston Σ säännöllisten lausekkeiden joukko. Lausekeautomaatti on viisikko M = (Q,Σ,δ,q 0,F), missä siirtymäfunktio δ on äärellinen kuvaus δ : Q RE Σ P (Q) (so. δ(q,r) /0 vain äärellisen monella parilla (q,r) Q RE Σ ). 115/295

Yhden askelen tilannejohto määritellään: (q,w) M (q,w ) jos on q δ(q,r) jollakin sellaisella r RE Σ, että w = zw, z L(r). Muut määritelmät samat kuin aiemmin. Todistetaan: jokainen lausekeautomaatilla tunnistettava kieli on säännöllinen. Olkoon M jokin lausekeautomaatti. Säännöllinen lauseke, joka kuvaa M:n tunnistaman kielen, muodostetaan kahdessa vaiheessa: 116/295

1. Tiivistetään M ekvivalentiksi enintään 2-tilaiseksi lausekeautomaatiksi seuraavilla muunnoksilla: (i) Jos M:llä on useita lopputiloja, yhdistetään ne seuraavasti. ε ε ε 117/295

(ii) Poistetaan M:n muut kuin alku- ja lopputila yksi kerrallaan seuraavasti. Olk. q jokin M:n tila, joka ei ole alku- eikä lopputila; tarkastellaan kaikkia reittejä, jotka M:ssä kulkevat q:n kautta. Olk. q i ja q j q:n välittömät edeltäjä- ja seuraajatila jollakin tällaisella reitillä. Poistetaan q reitiltä q i q j oheisen kuvan (i) muunnoksella, jos tilasta q ei ole siirtymää itseensä, ja kuvan (ii) muunnoksella, jos tilasta q on siirtymä itseensä: (i): r s q i q q j q i rs q j (ii): t r s q i q q j q i rt s q j 118/295

Samalla yhdistetään rinnakkaiset siirtymät seuraavasti: q i r q j q i r s q j s 119/295

2. Tiivistyksen päättyessä jäljellä olevaa 2-tilaista automaattia vastaava säännöllinen lauseke muodostetaan seuraavalla tavalla: (i): r r (ii): r 1 r 2 r 3 r 1 r 2(r 3 r 4 r 1 r 2) r 4 120/295

Esimerkki aa a a bb b b b b a ab a ba aa b (aa b)(ba) (bb a) ab bb a ba ab ab (aa b)(ba) (bb a) (ab (aa b)(ba) (bb a)) 121/295

3. KIELIOPIT JA MERKKIJONOJEN TUOTTAMINEN Kielioppi = muunnossysteemi merkkijonojen (kielen sanojen ) tuottamiseen tietystä lähtöjonosta alkaen, osajonoja toistuvasti annettujen sääntöjen mukaan uudelleenkirjoittamalla. Kielioppi on yhteydetön, jos kussakin uudelleenkirjoitusaskelessa korvataan yksi erityinen muuttuja- t. välikesymboli jollakin siihen liitetyllä korvausjonolla, ja korvaus voidaan aina tehdä symbolia ympäröivän merkkijonon rakenteesta riippumatta. Sovelluksia: rakenteisten tekstien kuvaaminen (esim. ohjelmointikielten BNF-syntaksikuvaukset, XML:n DTD/Schema-määrittelyt), yleisemmin rakenteisten olioiden kuvaaminen (esim. syntaktinen hahmontunnistus). 122/295

Yhteydettömillä kieliopeilla voidaan kuvata (tuottaa) myös ei-säännöllisiä kieliä. Esimerkki Yhteydetön kielioppi kielelle L match (lähtösymboli S): (i) S ε, (ii) S (S). Esimerkiksi merkkijonon ((())) tuottaminen: S (S) ((S)) (((S))) (((ε))) = ((())). 123/295

Esimerkki Kielioppi C-tyyppisen ohjelmointikielen aritmeettisille lausekkeille (yksinkertaistettu). E T E + T T F T F F a (E). Esimerkiksi lausekkeen (a + a) a tuottaminen: E T T F F F (E) F (E + T) F (T + T) F (F + T) F (a + T) F (a + F) F (a + a) F (a + a) a. 124/295