5 Kontekstittomat kielet ja pinoautomaatit

Koko: px
Aloita esitys sivulta:

Download "5 Kontekstittomat kielet ja pinoautomaatit"

Transkriptio

1 5 Kontekstittomat kielet ja pinoautomaatit Kontekstittomat kielet (context-free languages, yhteydettömät kielet) voidaan kuvata kontekstittomilla kieliopeilla (context-free grammar) ja tunnistaa epädeterministisillä pinoautomaateilla (pushdown automaton). Verrattuna edelliseen lukuun, korvaamme säännölliset lausekkeet näillä kieliopeilla, ja epädeterministiset äärelliset automaatit näillä pinoautomaateilla. Pinoautomaatti on kuten äärellinen automaatti, johon on lisätty rajoittamattoman suuri muisti. Tämä muisti on TRA-kurssilta tuttu pino (stack). Tämä rajoittamattoman suuri muisti tarkoittaa, että pino-operaatiot eivät koskaan jumiudu virheilmoitukseen Out Of Memory error. Joskus kirjallisuudessa näitä pinoja kutsutaan nimellä pushdown store/stack: Niissä voi katsella vain pinon päällimmäistä tietoalkiota, sen alla olevat jäävät piiloon (kunnes ne nousevat päällimmäiseksi). Silloin yleisnimi stack varataankin tietorakenteelle, jota suomeksi kutsutaankin nimellä avopino: Niissä koko pinon sisältöä voi selailla, mutta vain päällimmäisen alkion voi poistaa. Tavoitteet: Opitaan mitä ovat kontekstittomat kielet ja pinoautomaatit, ja mikä on niiden välinen suhde. Opitaan muodostamaan kielioppi yksinkertaisille kontekstittomille kielille. Opitaan jäsentämisen perusideat. Johdatteleva esimerkki: Miten kuvaisit seuraavat kielet? Sisäkkäisten sulkulausekkeiden kieli: if else-parien muodostama kieli: L ( ) = { ( k ) k : k 0 } L if-else = { if k else l : l k } Ne eivät ole säännöllisiä, joten säännöllisillä lausekkeilla se ei onnistu. Ratkaisuyritys: Annetaan kielelle L ( ) rekursiivinen kuvaus: Merkitään S = mielivaltainen sisäkkäinen sulkumerkkijono. Tällöin S on sisäkkäinen sulkumerkkijono, jos 1. S = ε tai 2. S on muotoa (S ), missä myös S on sisäkkäinen sulkumerkkijono. Toinen kuvaustapa (ensimmäinen kontekstiton kielioppimme): 80

2 1. S ε 2. S (S) Esimerkiksi merkkijonon ((())) tuottaminen: S (S) ((S)) (((S))) (((ε))) = ((())) Vastaava jäsennyspuu (tähän palataan vielä): S S S ( ( ( ε ) ) ) Kontekstittoman kieliopin idea On annettu joukko muuttujasymboleita ja muunnossääntöjä tämän muuttujasymbolin esiintymän saa korvata tuolla merkkijonolla joka voi vuorostaan sisältää uusia muuttujasymbolien esiintymiä. Yksi näistä muuttujasymboleista on erityinen aloitussymboli josta lähdetään liikkeelle. Muunnetaan merkkijonoa näillä säännöillä, kunnes siinä ei enää esiinny muuttujasymboleita. Silloin voidaan lukea näin tuotettu lopullinen merkkijono. Esimerkki 32. Yksinkertainen kielioppi aritmeettisille lausekkeille: E T E + T T F T F F a (E). Esimerkiksi ensimmäinen rivi luetaan muuttujasymboli E voidaan korvata merkkijonolla T tai merkkijonolla E + T jossa T on toinen muuttujasymboli ja + merkki. 81

3 Se tuottaa vaikkapa aritmeettisen lausekkeen (a + a) a seuraavasti: 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 Siinä alleviivattu muuttujasymbolin esiintymä on korvattu. Kontekstittoman kieliopin formaali määritelmä Määritelmä 6. Kontekstiton kielioppi on nelikko jossa G = (V, Σ, P,S) äärellinen joukko V on kieliopin aakkosto; Σ V on kieliopin päätemerkkien joukko; sen komplementti N = V \ Σ on kieliopin välikemerkkien eli -symbolien joukko (joita edellä kutsuimme muuttujasymboleiksi); äärellinen joukko P N V on kieliopin sääntöjen eli produktioiden joukko; ja S N on kieliopin lähtösymboli. Sääntöä (A, ω) P merkitään A ω. Sen voi lukea välike A voi tuottaa/johtaa merkkijonon ω. Intuitiivisesti kontekstiton kielioppi G = (V, Σ, P, S) tuottaa merkkijonoja Σ seuraavalla epädeterministisellä algoritmilla: 1 r S 2 while r sisältää yhä välikemerkkien esiintymiä 3 do valitse mikä tahansa (siis vaikkapa ensimmäinen tai viimeinen) sellainen esiintymä joten r on siis muotoa αaβ jossa A N on se valittu esiintymä, α V on sitä ennen tuleva osa, ja β V on sen jälkeen tuleva osa 4 valitse mikä tahansa tämän valitun esiintymän sääntö A ω P 5 r αωβ 6 tulosta näin saatu r Silloin kieliopin G tuottama formaali kieli L(G) = kaikki ne merkkijonot r jotka tämä algoritmi voi tulostaa valitsemalla säännöt sopivasti rivillään 4. 82

4 Kontekstittoman kielen formaali määritelmä Merkkijono αaβ V, jossa A N, voi tuottaa tai johtaa suoraan merkkijonon αωβ V, jos kieliopissa G on sääntö A ω P. Tätä merkitään Esimerkiksi sekä että αaβ G αωβ T F G F F T F G T a esimerkin 32 kieliopissa aritmeettisille lausekkeille. Merkkijono γ 0 V, voi tuottaa tai johtaa merkkijonon γ n V, jos on olemassa jono merkkijonoja V siten, että γ 0 G γ 1 G γ 2 G G γ n eli jos merkkijono γ 0 voi tuottaa suoraan merkkijonon γ 1 joka voi tuottaa suoraan merkkijonon γ 2 joka voi tuottaa suoraan merkkijonon...joka voi tuottaa suoraan merkkijonon γ n. Tätä merkitään Esimerkiksi koska on jono γ 0 γ n G T F (E) a G T F G F F G (E) F G (E) a esimerkin 32 kieliopissa aritmeettisille lausekkeille. Erikoistapauksena jokainen merkkijono γ V voi tuottaa itsensä eli tyhjällä jonolla (jossa n = 0). Esimerkiksi γ γ G T F T F G esimerkin 32 kieliopissa aritmeettisille lausekkeille. 83

5 Merkkijono γ V on kieliopin G lausejohdos, jos γ voidaan johtaa sen lähtösymbolista S: S γ. G Esimerkiksi (E) a ja (a + a) a ovat lausejohdoksia esimerkin 32 kieliopissa aritmeettisille lausekkeille. Kieliopin G lause on sellainen sen lausejohdos, joka koostuu pelkästään sen päätemerkeistä: S γ ja γ Σ. G Esimerkiksi (a + a) a on lause esimerkin 32 kieliopissa aritmeettisille lausekkeille. Kieliopin G tuottama tai kuvaama kieli koostuu sen lauseista: { } L(G) = γ Σ : S γ. G Eli L(G) on kaikkien niiden lauseiden (merkkijonojen) joukko, jotka voidaan tuottaa kieliopilla G aloittamalla sen lähtösymbolista S. Määritelmä 7. Formaali kieli L Σ on kontekstiton, jos se voidaan tuottaa jollakin kontekstittomalla kieliopilla. Kontekstista Sana konteksti (englanniksi context ) on suomeksi lauseyhteys. Siten sanan kontekstiton tilalla käytetäänkin joskus sanoja yhteydetön tai yhteysvapaa. Kontekstiton viittaa siihen, että kieliopin säännöt ovat muotoa A ω, mikä voidaan tulkita siten, että muuttuja A voi tuottaa merkkijonon ω, olipa sen ympärillä mitä tahansa. Sääntöjä siis voidaan soveltaa kontekstista riippumatta. Kontekstittoman kieliopin yleistys on konteksti(lli)nen kielioppi (context-sensitive grammar). Tällaisen kieliopin säännöt ovat muotoa αaβ αωβ jossa α, β, ω V. Tällainen sääntö tulkitaan siten, että muuttuja A voidaan korvata merkkijonolla ω jos sen edessä on α ja perässä β eli jos A on lauseyhteydessä α...β. Lisäksi vaaditaan että Esimerkiksi kieli säännön vasemman puolen pituus sen oikean puolen pituus. (4) {a n b n c n : n N} ei ole kontekstiton, mutta se voidaan esittää käyttämällä kontekstisia sääntöjä. 84

6 Kontekstisia kielioppeja ei käsitellä tällä kurssilla. Nekin ovat silti kiintoisia... automaattien teoriassa: Kuten jo vihjattiin, kontekstittomat kielet voidaan tunnistaa automaateilla joilla on tavallinen pino. Kontekstiset taas automaateilla joilla on avopino. laskennan vaativuusteoriassa: Kontekstiset kielet ovat ne, jotka voidaan tunnistaa käyttämällä realistinen eli polynominen määrä muistia. Jos pituusehdosta (4) luovutaan, niin saadaan edelleen rajoittamattomat kieliopit ja kielet, ja silloin saavutetaan laskettavuuden ääriraja. Vakiintuneita merkintätapoja Välikesymboleita merkitään isoilla kirjaimilla: A, B, C,..., S, T Päätemerkkeinä käytetään pieniä kirjaimia a, b,c,...,s,t; numeromerkkejä 0, 1,...,9; erikoismerkkejä; varattuja sanoja kuten if,for,end,... lihavoituina tai alleviivattuina. Mielivaltaisina merkkeinä (kun välikkeitä ja päätemerkkejä ei erotella) käytetään X, Y, Z. Päätemerkkijonoina käytetään u, v, w, x, y, z. Sekamerkkijonoina käytetään α, β, γ,...,ω. Kielioppi esitetään usein pelkkänä sääntöjoukkona: Tällöin A 1 ω ω 1k1 A 2 ω ω 2k2. A m ω m1... ω mkm välikesymbolit päätellään joko edellisten merkintäsopimusten mukaan tai siitä, että ne esiintyvät sääntöjen vasempina puolina lähtösymboli on ensimmäisen säännön vasempana puolena esiintyvä välike; tässä siis A 1. Esimerkki 33. Sisäkkäisten sulkujonojen muodostaman kielen L ( ) = {( k ) k k 0} tuottaa kielioppi G ( ) = ({S, (, )}, {(, )}, {S ε, S (S)}, S) Esimerkki 34. Tasapainoisten sulkujonojen muodostaman kielen tuottaa kielioppi G ( ) = ({S, (, )}, {(, )}, {S ε, S (S), S SS}, S) Esimerkiksi ()(()) on tasapainoinen muttei sisäkkäinen sulkujono. Tämän mahdollistaa uuden säännön lisäämisen edellisen esimerkin 33 kielioppiin. 85

7 Esimerkki 35. Kielen {a i b k c k i, k = 0, 1,...} voi tuottaa kieliopilla G = (V, Σ, P, S), jossa V = {S,A, B,a, b,c} Σ = {a, b,c} P = {S AB, A aa, A ε, B bbc, B ε}. Esimerkki 36. Yksinkertaisten aritmeettisten lausekkeiden muodostaman kielen L expr tuottaa kielioppi G expr = (V, Σ, P,E) (5) jossa V = {E,T, F,a, +,, (, )}, Σ = {a, +,, (, )}, P = {E T, E E + T, T F, T T F, F a, F (E)}. Kieliopilla (5) voidaan johtaa esim. seuraavat lausejohdokset: E G E + T G T + T G T F + T G F F + T G a F + T G a (E) + T G a (T) + T G a (F) + T G a (a) + T G a (a) + F G a (a) + a. Toinen kielioppi kielen L expr tuottamiseen on jossa V = {E,a, +,, (, )}, Σ = {a, +,, (, )}, G expr = (V, Σ, P,E) (6) P = {E E + E, E E E, E a, E (E)} Esimerkki 37. Tarkastellaan suomen kielen virkettä, joka koostuu yksinkertaisesta päälauseesta sekä nollasta tai useammasta sisäkkäisestä relatiivilauseesta: L rel = {subj( joka pred attr obj) pred attr obj} 86

8 Tällaisia virkkeitä voidaan tuottaa esim. seuraavilla kontekstittoman kieliopin G rel säännöillä: VIRKE SUBJ SL PRED ATTR OBJ SL joka PRED ATTR OBJ SL ε SUBJ poika tyttö jänis susi peikko PRED pelkäsi metsästi ATTR suurta pientä vihaista hirmuista arkaa OBJ poikaa tyttöä jänistä sutta peikkoa Mitä virkkeitä voit johtaa lähtösymbolista VIRKE? Esimerkiksi: Kontekstittomat kieliopit ovat luontaisia positionaalisille kielille, jossa kuka teki mitä kenelle ilmaistaan niiden paikoilla lauseessa. Esimerkiksi englannin kielessä on sanajärjestys on valtaosin subjekti-verbiobjekti (SVO) kuten yllä. Mutta suomen kielessä sanajärjestys onkin vapaa ja kuka teki mitä kenelle ilmaistaankin sijamuodoilla. Esimerkki 38. Ohjelmointikielten syntaksin kuvaus. Pascalin osajoukko: lause ehtolause koottu-lause sijoitus kutsu ehtolause if ehto then lause else lause ehto x=0 koottu-lause begin lausejono end lausejono lause lause ; lausejono sijoitus x:=0 kutsu a b c Tästä on hyötyä ohjelmoijalle (syntaksi pitää osata, jos aikoo ohjelmoida), mutta myös kääntäjä (tai yksi sen osa, jäsentäjä (englanniksi parser )) voidaan laatia suoraviivaisesti perustuen kielioppiin. Oletus on, että esim äärellisellä automaatilla (tai transduktorilla) ohjelman lähdekoodi on ensin pilkottu valmiiksi yllä kuvattuihin osiin (varatut sanat, muuttujat, aliohjelmien nimet, vakiot, jne). Tehtävä 36. Laadi kontekstiton kielioppi, joka tuottaa rajattoman monista sisäkkäisistä for-silmukoista, alkeisoperaatioista a ja kokonaislukuvakioista N koostuvat ohjelmointikielen lauseet, kuten for (i=n; i<n; i++) { for (j=n; j<n; j++) { a } } 5.1 Kontekstittomien kielten sulkeumaominaisuuksista Kontekstittomia kielioppeja on helppo tuottaa soveltamalla monia vastaavia operaatioita kuin säännöllisissä lausekkeissa. Huomaa: Kontekstittomat kielet eivät kuitenkaan ole suljettu kaikkien samojen operaatioiden suhteen kuin säännölliset! 87

9 Lause 8. Jos A ja B ovat kontekstittomia kieliä, niin myös niiden yhdiste A B, tulo AB ja sulkeuma A ovat. Todistus: Tarkastellaan esimerkkinä yhdistettä A B; muut kohdat menevät samaan tapaan. Olkoot siis A ja B aakkoston Σ kontekstittomia kieliä. Siis A = L(G A ) ja B = L(G B ) joillain kontekstittomilla kieliopeilla G A = (V A, Σ, P A, S A ) ja G B = (V B, Σ, P B, S B ). Olkoon S / N A N B. Määritellään G = (V A V B {S}, Σ, P, S), missä P = P A P B {S S A } {S S B }. Selvästi L(G) = A B. Toisaalta, toisin kuin säännöllisten kielten luokka, kontekstittomien kielten luokka ei ole suljettu leikkauksen ja komplementin suhteen. Toisaalta taas jos kieli A on säännöllinen, ja kieli B kontekstiton, niin niiden leikkaus A B on kontekstiton. Joitakin epäsäännöllisiä kieliä, kuten {0 n 1 n : n N} tai {w {0, 1} : w = w R } on helppo tuottaa kontekstittomalla kieliopilla. Toisaalta esimerkiksi kopiokieli {ww: w {0, 1} } ei ole kontekstiton (vaan kontekstinen). Miten keksiä annetulle kielelle kielioppi? On annettu kontekstiton kieli L, ja laadittava sen tuottava kontekstiton kielioppi G. Millaisen kielen määrittely kuvaa? Yritä esittää L useamman yksinkertaisemman kielen yhdisteenä (kuten L = L 1 L 2 L 3 ), tulona (kuten L = L 1 L 2 ) tai sulkeumana (kuten L = (L 1 L 2 ) ). Laadi näille osakielille L 1, L 2,... kieliopit. Olkoot niiden alkusymbolit S 1, S 2 ja S 3. Laadi sitten koko kielen L kielioppi seuraavasti: Muita usein toistuvia rakenteita: Kieli Säännöt L = L 1 L 2 L 3 S S 1 S 2 S 3 L = L 1 L 2 S S 1 S 2 L = (L 1 ) S S 1 S ε L = (L 1 L 2 ) S SA ε, A S 1 S 2 Sääntö Kieli A a b {a, b} A aa ε L(a ) = {ε, a,aa, aaa,...} B bbc ε {b n c n : n = 0, 1, 2,...} B bbbc ε {b 2n c n n = 0, 1,...} Tehtävä 37. Laadi kielioppi seuraaville kielille: 88

10 (0 1) 3. {0 n 1 n : n N} {1 n 0 n : n N} 4. {ww R : w {0, 1} } 5. {w {0, 1} : w = w R } 5.2 Säännölliset kielet ja kontekstittomat kieliopit Säännölliset kielet sisältyvät aidosti kontekstittomiin kieliin, jotka vuorostaan sisältyvät aidosti kontekstisiin kieliin. Siis jokainen säännöllinen kieli voidaan kuvata kontekstittomalla kieliopilla jopa lineaarisella kontekstittomalla kieliopilla, jonka rakenne on yksinkertaisempi kuin yleinen kontekstiton kielioppi. tyyppi 2: kontekstittomat kielet tunnistus: pinoautomaatti tyyppi 3: säännölliset kielet tunnistus: äärellinen automaatti rajallinen muisti äärelliset kielet Lineaariset kieliopit Määritelmä 8. Kontekstiton kielioppi on oikealle lineaarinen jos sen kaikki produktiot ovat muotoa A ε tai A ab, ja vasemmalle lineaarinen jos sen kaikki produktiot ovat muotoa A ε tai A Ba. Intuitiivisesti kielioppi on oikealle lineaarinen jos välikesymboli saa esiintyä vain säännön oikeassa laidassa eikä missään muualla. Oikealle lineaariset kieliopit ja epädeterministiset äärelliset automaatit vastaavat toisiaan Äärellistä automaattia vastaava lineaarinen kielipppi Lause 9. Jokainen säännöllinen kieli voidaan tuottaa oikealle lineaarisella kieliopilla. Todistus: Olkoon kieli L Σ säännöllinen, ja M = (Q, Σ, δ,q 0, F) sen tunnistava äärellinen automaatti. Ideana on muodostaa kielioppi G M joka tuottaa samat merkkijonot jotka M tunnistaa. Silloinhan L(G M ) = L(M) = L kuten halutaan. Siten kieliopin G M pääteaakkostoksi on valittava automaatin M syöteaakkosto eli Σ. 89

11 Luodaan kielioppiin G M oma välike A q jokaiselle automaatin M tilalle q Q. Muita välikkeitä ei kielioppiin G M tule. Kieliopin L G lähtösymboliksi tulee A q0 eli automaatin M alkutilaa q 0 vastaava välike. Kieliopin G M säännöt suunnitellaan oikealle lineaarisiksi ja siten, että siinä on lausejohdos ua p täsmälleen silloin kun automaatissa M päästään alkutilasta q 0 tilaan p lukemalla syötemerkkijono u Σ. Tai toisin merkiten, kieliopin G M lausejohdokset ovat muotoa ua δ (p 0,u). Tämä saavutetaan siten, että jokainen automaatin M siirtymä p c q tuottaa kielioppiin G M säännön A p ca q. Silloinhan ua p G M uca q kuten halusimmekin. Automaatin M pysähtyminen esitetään siten, että lausejohdoksen oikeassa laidassa oleva ainoa välike katoaa; silloinhan merkkijono u on sellainen jonka M hyväksyy, joten sen pidentäminen lisämerkeillä c voidaan lopettaa. Siis siten, että kielioppiin G M lisätään sääntö A q ε jokaiselle automaatin M hyväksyvälle tilalle q F. Kielioppi G M on nyt valmis. Esimerkki 39. Kuvassa on yksinkertainen äärellinen automaatti, joka hyväksyy kielen L = {w {a, b} : wsisältää vähintään yhden merkin b}. a a, b b 1 2 Automaattia vastaava kielioppi on: A 1 aa 1 ba 2 A 2 ε aa 2 ba Lineaarista kielioppia vastaava äärellinen automaatti Lause 10. Jokainen oikealle lineaarisella kieliopilla tuotettava kieli on säännöllinen. Todistus: Tehdään edellisen lauseen 9 todistuksen konstruktio toiseen suuntaan. Olkoon siis G = (V, Σ, P, S) oikealle lineaarinen kielioppi. Muodostetaan kielen L(G) tunnistava epädeterministinen äärellinen automaatti M G = (Q, Σ, δ,q S, F) seuraavasti: Tilat vastaavat kieliopin välikkeitä: Q = {q A : A V \ Σ} 90

12 d +, d q S q A q B d Kuva 17: Kokonaislukuautomaatti niiden kieliopista. Alkutila on lähtösymbolia S vastaava tila q S. Syöteaakkosto on pääteaakkosto Σ. Siirtymäfunktio δ jäljittelee produktioita siten, että produktiosta A ab tulee siirtymä q A a q B (eli q B δ(q A, a)). Lopputiloja ovat ne tilat, joita vastaaviin välikkeisiin liittyy ε-produktio: F = {q A Q: A ε P } Yhteenvetona lineaaristen kielioppien ja äärellisten automaattien vastaavuuksista: Äärellinen automaatti Lineaarinen kielioppi tila q välikesymboli A q lähtötila q 0 lähtösymboli A q0 siirtymä q a q sääntö A q aa q hyväksyvä tila q F sääntö A q ε Esimerkki 40. Olkoon d lyhenne lukumerkille {0, 1,..., 9}. Tarkastellaan seuraavaa oikealle lineaarista kielioppia: S +A A db A db B db ε Automaattiin tulee kolme tilaa: q S, q A ja q B. Lähtösymbolia S vastaa alkutila q S ja säännöstä B ε tiedämme, että q B on (ainoa) lopputila. Muita sääntöjä vastaavat tilasiirtymät q S + q A q S q A q S d q B q A d q B q B d q B Tuloksena saadaan kuvan 17 tuttu automaatti, joka tunnistaa etumerkilliset kokonaisluvut. 91

13 Tehtävä 38. Piirrä seuraavia kielioppeja vastaavat äärelliset automaatit: 1. Lauseke: a, kielioppi: S as ε. 2. Lauseke: a + = aa, kielioppi: S as a. 3. Lauseke: (ab a) bb, kielioppi: S aa bb A as ba B bb ε 4. Lauseke: (aa), kielioppi: S asa ε. 5. Lauseke: (b ab ab ), kielioppi: S bs aa ε A ba ab B bb aa ε Kielioppi voisi olla myös: S BaBaBS ε B bb ε 6. Lauseke: ( )( ), kielioppi: S DN N DN ε D Muita sovelluksia ovat esimerkiksi pseudotiedettä suoltava puppugeneraattori http: //pdos.csail.mit.edu/scigen/......sekä kasvikieliopit (nimeltään L- eli Lindenmayer-systeemit): 92

14 Vastaavantapaisia, hyödyllisempiä, sovelluksia on muitakin, kuten neuroverkkojen rakenteen generointi kieliopilla (joka on voitu generoida vaikkapa geneettisillä algoritmeilla), yms. 5.3 Pinoautomaatti Pinoautomaatti (push-down automaton, PDA) on äärellinen automaatti, johon on lisätty rajoittamaton määrä muistia pinon muodossa kuvan 18 tapaan. Muistutus kurssilta TRA: Pino on tietorakenne, jolla on seuraavat operaatiot: Luo tyhjä pino. Testaa onko pino tyhjä vai onko siinä tietoalkioita. Vie pinoon jokin tietoalkio x eli operaatio push(x). Poista epätyhjästä pinosta sinne viimeiseksi viety tietoalkio eli operaatio pop. Pinon avulla voidaan pitää kirjaa luetuista merkeistä ja tehdä monia muitakin asioita... Kielen voi tunnistaa pinoautomaatilla täsmälleen silloin kun se on kontekstiton. Syöte hyväksytään jos sen lopussa ollaan hyväksyvässä tilassa. Esimerkki 41. Epäsäännöllisen kielen {0 n 1 n : n N} voi hyväksyä pinon avulla seuraavaan tapaan: 1 alussa pino on tyhjä 2 while seuraava luettu syötemerkki on 0 3 do push(0) 4 while seuraava luettu syötemerkki on 1 and pino ei ole tyhjä 5 do pop 6 return onko koko syöte luettu and pino jälleen tyhjä Sehän tutkii, vastaako jokaista syötteestä pinoon kopioitua merkkiä 0 syötemerkki 1. 93

15 syötenauha tutkittava syöte a a a a b b b b... nauhapää ohjausyksikkö q 0 q 3 q 1 q 2 δ A A A A_ pino Kuva 18: Kaavakuva pinoautomaatista. Pinoautomaatin formaali määritelmä Määritelmä 9. Pinoautomaatti on kuusikko M = (Q, Σ, Γ, δ,q 0, F) jossa Q on tilojen äärellinen joukko; Σ on äärellinen syöteaakkosto; Γ on äärellinen pinoaakkosto; funktio δ : Q (Σ {ε}) (Γ {ε}) P(Q (Γ {ε})) on (joukkoarvoinen) siirtymäfunktio; q 0 Q on alkutila; ja F Q on hyväksyvien tilojen joukko. Siirtymäfunktion tyyppi Siirtymäfunktiolla δ(q, σ, γ) on nyt 3 argumenttia: 1. q Q on nykyinen tila, kuten aikaisemminkin; 94

16 2. σ Σ on seuraava syötemerkki, kuten aikaisemminkin; ja 3. γ Γ on pinon päällimmäinen merkki. Jokaisella askeleellaan pinoautomaatti siis voi käyttää näitä kaikkia kolmea tietoa valitessaan mitä tehdä seuraavasti......mutta sen ei ole pakko käyttää seuraavaa syötemerkkiä σ ja/tai pinon päällimmäistä merkkiä γ: Jos merkkiä ei käytetä, niin sen tilalla on argumenttina ε. Jos merkki käytetään, niin se myös kulutetaan: siis seuraava syötemerkki σ luetaan pois syötteestä ja/tai pinon päällimmäinen merkki γ popataan pois pinosta. Siirtymäfunktion arvo δ(q, σ, γ) on (äärellinen) joukko pareja (q, γ ) joissa q Q on pinoautomaatin seuraava tila, ja γ Γ on pinoon seuraavaksi pushattava merkki. Kuten γ yllä, myös tämä γ voi puuttua, ja silloin sen tilalla onkin ε. Siirtymäfunktion arvot Koska seuraava syötemerkki σ, pinon päällimmäinen merkki γ ja seuraava pinoon vietävä merkki γ voivat myös puuttua, siirtymiä on yhteensä 8 erilaista: 1. (q, γ ) δ(q, σ, γ) eli mikään niistä ei puutu: 1 lue syötteestä sen seuraava merkki σ 2 poppaa γ pois pinosta 3 pushaa γ pinoon Siten merkki σ luetaan syötteestä ja merkki γ pinon päällä korvautuu merkillä γ. 2. (q, γ ) δ(q, σ, ε) eli vain γ puuttuu: Vain rivi 2 jää pois, eli merkki σ luetaan syötteestä ja pino kasvaa merkillä γ. 3. (q, γ ) δ(q, ε,γ) eli vain σ puuttuu: Vain rivi 1 jää pois, eli syötettä ei lueta mutta merkki γ korvautuu pinon päällä merkillä γ. 4. (q, ε) δ(q, σ, γ) eli vain γ puuttuu: Vain rivi 3 jää pois, eli merkki σ luetaan ja merkki γ poistuu pinon päältä. 5. (q, ε) δ(q, σ, ε) eli vain σ on jäljellä: Vain rivi 1 jää jäljelle, eli merkki σ luetaan mutta pino ei muutu. 6. (q, ε) δ(q, ε,γ) eli vain γ on jäljellä: Vain rivi 2 jää jäljelle, eli syötettä ei lueta mutta merkki γ poistuu pinon päältä. 7. (q, γ ) δ(q, ε,ε) eli vain γ on jäljellä: Vain rivi 1 jää jäljelle, eli syötettä ei lueta mutta pino kasvaa merkillä γ. 8. (q, ε) δ(q, ε,ε) eli kaikki ne puuttuvat: Automaatti siirtyy tilasta q tilaan q lukematta syötettään tai muuttamatta pinoaan eli tekee ε-siirtymän. 95

17 Pinoautomaatin laskennan eteneminen Pinoautomaatin M tilanne on kolmikko (q, w,α) Q Σ Γ eli siinä on nykyinen tila q Q vielä lukematon syöte w Σ pinon nykyinen sisältö α Γ kirjoitettuna merkkijonoksi siten, että sen päällimmäinen merkki tulee ensimmäisenä (vasemmalta oikealle lukiessa) jne. Alkutilanne syötteellä x on kolmikko (q 0, x,ε) eli pino on alussa tyhjä. Tilanne (q, σw, γα), jossa σ Σ {ε} γ Γ {ε}, ja voi johtaa suoraan tilanteeseen (q, w,γ α) jos Tätä merkitään (q, γ ) δ(q, σ, γ). (q, σw, γα) (q, w,γ α). M Tilanne (q 0, w 0, α 0 ) voi johtaa tilanteeseen (q n, w n, α n ) jos on olemassa tilannejono (q 0, w 0, α 0 ) (q 1, w 1, α 1 ) (q 2, w 2, α 2 ) M M M Tätä merkitään (q 0, w 0, α 0 ) (q n, w n, α n ). M Pinoautomaatti M hyväksyy syötemerkkijonon x Σ jos joillakin q F F ja α Γ. (q 0, x,ε) (q F, ε,α) M (q n, w n, α n ). M Toisin sanoen, jos sen alkutilanne syötteellä x voi johtaa johonkin sellaiseen tilanteeseen, jossa koko syöte x on luettu ja ollaan jossakin hyväksyvässä tilassa q F. Muuten M hylkää tämän syötteen x. Pinoautomaatin hyväksymä kieli on L(M) = {x Σ : M hyväksyy syötteen x} eli sen hyväksymät syötemerkkijonot x. 96

18 Epäoleellisia yksityiskohtia Tässä määritelmässä pinon ei tarvitse olla tyhjä laskennan päättyessä. Toisissa lähteissä taas vaaditaan pinonkin olevan tyhjä (eli α = ε) ennen kuin voidaan hyväksyä. Tämä ei kuitenkaan ole oleellinen ero, koska voimmehan lisätä loppuun silmukan joka tyhjentää pinon. Tässä määritelmässä ei ole testiä onko pino tyhjä vaiko ei? Tällainen testi on kuitenkin helppo lisätä tarvittaessa: Lisätään pinoaakkostoon Γ uusi symboli $ ja aloitetaan automaatin laskenta viemällä se pinon pohjimmaiseksi merkiksi. Sen jälkeen voidaan tämä testi suorittaa kysymällä onko pinon päällimmäinen merkki $ vaiko ei kunhan sitä ei koskaan poisteta pinosta (paitsi juuri ennen syötteen x hyväksymistä, mikäli pino pitää tyhjentää ennen sitä kuten yllä). Kaksi pinoa olisi liikaa Jos pinoaakkostossa Γ on pohjamerkin $ lisäksi vain yksi muu merkki, niin silloin kyseessä on yksilaskuriautomaatti (one-counter automaton): Sellaisella pinolla voi ylläpitää yhtä laskuria N ja kysyä onko sen arvo = 0 vaiko > 0. Käytimme tätä ominaisuutta aikaisemmassa esimerkissä 41. Yhdellä laskurilla voi tunnistaa joitakin epäsäännöllisiä kieliä, mutta ei kaikkia kontekstittomia kieliä. Olemme määritelleet automaatin, jolla on yksi pino. Entäpä jos pinoja olisikin useampia? Ehkä yllättäen: Jo kahdella pinolla hyppäisimme kontekstittomista kielistä aina rekursiivisesti lueteltaviin kieliin saakka eli laskettavuuden äärirajoille. Entäpä jos sallisimmekin useampia laskureita nehän ovat yleisiä pinoja yksinkertaisempia? Ehkä vieläkin yllättävämmin: Jo kahdella laskurillakin hyppäisimme yhtä kauas. Pinoautomaatin tilasiirtymäkaavio Pinoautomaatille voidaan piirtää muuten samanlainen tilasiirtymäkaavio kuin äärelliselle automaatillekin, mutta nyt tilasiirtymänuoli koristellaankin (pelkän syötemerkin a Σ sijaan) kolmella eri tiedolla: q σ,γ/γ q tarkoittaa, että pinoautomaatti voi siirtyä tilasta q Q tilaan q Q lukemalla seuraavan syötemerkin σ Σ ja korvaamalla pinossa sen päällimmäisen merkin γ Γ merkillä γ Γ. (Kuva 19.) Kukin näistä eri tiedoista σ, γ ja γ voi myös puuttua, jolloin sen tilalla onkin ε. 97

19 q Tila q q 0 Alkutila Hyväksyvä tila Hylkäävä lopputila a, γ/γ q q Tilasiirtymä δ(q, a,γ) = (q, γ ) Kuva 19: Pinoautomaatin tilasiirtymäkaavion merkinnät. Esimerkki 42. Kieli {a k b k : k 0} voidaan tunnistaa seuraavanlaisella pinoautomaatilla M = ({q 1, q 2, q 3, q 4 }, {a, b}, {a, $}, δ,q 1, {q 1, q 4 }) jossa on käytetty pinon pohjamerkkiä $. δ(q 1, ε,ε) = {(q 2, $)}, δ(q 2, a,ε) = {(q 2, a)}, δ(q 2, b,a) = {(q 3, ε)}, δ(q 3, b,a) = {(q 3, ε)}, δ(q 3, ε, $) = {(q 4, ε)}, δ(q, σ, γ) = muilla (q, σ, γ). ε, ε/$ q 1 q 2 q 4 q 3 ε, $/ε b, a/ε a, ε/a b, a/ε Esimerkiksi syötteellä aabb esimerkin 42 automaatilla on seuraava laskenta: (q 1, aabb,ε) (q 2, aabb, $) (q 2, abb,a$) (q 2, bb,aa$) (q 3, b,a$) (q 3, ε, $) (q 4, ε,ε). Koska q 4 F = {q 1, q 4 }, on siis aabb L(M). 98

20 5.3.1 Deterministiset ja epädeterministiset pinoautomaatit Determinismin intuitio on, että laskulaitteella on aina korkeintaan yksi mahdollinen seuraava askel Epädeterminismin intuitio taas on, että mahdollisia askeleita onkin useita, ja laskulaite arvaa tai tietää mikä niistä on tällä hetkellä se oikea valinta, joka aikanaan johtaa syötteen hyväksymiseen. Määritelmä 10. Pinoautomaatti M on deterministinen, jos jokaisella tilanteella (q, w, α) on korkeintaan yksi mahdollinen seuraaja (q, w, α ), jolla (q, w,α) (q, w, α ). M Tämän määritelmän 10 mukaan pinoautomaatti on epädeterministinen, jos siinä on kaksi eri siirtymää p σ 1,δ 1 /δ 1 p σ 2,δ 2 /δ 2 joilla σ 1 σ 2, δ 1 δ 2 ja δ 1 δ 2, missä a b tarkoittaa että merkit a ja b ovat samat tai ainakin toinen niistä on ε. Silloin automaatti voisi soveltaa sopivassa tilanteessa kuten (p, σ 1 σ 2...,γ 1 γ 2...) kumpaa tanhansa niistä ja ne johtaisivat kahteen eri seuraavaan tilanteeseen. Huomaa, että tämän määritelmän 10 mukainen epädeterministinen pinoautomaatti ei välttämättä koskaan oikeasti teekään epädeterminististä arvausta: Vaikka siinä olisikin kaksi tällaista siirtymää, niin sen rakenne voikin kokonaisuudessaan olla sellainen, ettei tällaista sopivaa tilannetta koskaan ilmene sen laskennoissa esimerkiksi jos tilassa q ei koskaan pino olekaan muotoa γ 1 γ Huomaa: Toisin kuin äärelliset automaatit, epädeterministiset pinoautomaatit ovat tunnistusvoimaltaan aidosti vahvempia kuin deterministiset! Eli on olemassa kontekstittomia kieliä, jotka voidaan tunnistaa jollakin epädeterministisellä muttei millään determistisellä pinoautomaatilla. Eräs tällainen kieli on { ww R : w {a, b} }. (7) Intuitiivisesti, epädeterministinen pinoautomaatti arvaa tai tietää syötteensä keskikohdan, jossa sen alkuosa w on luettu ja voidaan alkaa lukemaan sen loppuosaa w R. Deterministisen automaatin pitäisi jotenkin pystyä havaitsemaan tämä keskikohta omin päin ja siihen se ei pystykään. Mutta jos tämä keskikohta onkin merkitty, niin kielestä tuleekin deterministinen: { wcw R : w {a, b} }. Toinen tapa ajatella tätä eroa on, että epädeterminististä pinoautomaattia ei välttämättä pystykään determinisoimaan. Intuitiivisesti kyse on seuraavasta: Tilanne: Epädeterministisen pinoautomaatin yksi siirtymä haluaa pushata jotakin pinoonsa kun taas toinen popata jotakin pois siitä. 99

21 Ongelma: Mitä determinisoidun automaatin pitäisi silloin tehdä? Senhän pitäisi jotenkin pystyä seuraamaan molempia vaihtoehtoja! Esimerkki 43. Epädeterministinen kontekstiton kieli (7) voidaan tunnistaa seuraavalla periaatteella: 1. Syötteen ensimmäisen puolikkaan ajan laitetaan merkkejä pinoon. 2. Syötteen keskikohta arvataan epädeterministisesti. 3. Syötteen toisen puolikkaan ajan poimi merkkejä pinosta ja vertaa juuri luettuun merkkiin. ε, ε/$ q 1 q 2 a, ε/a b, ε/b ε, ε/ε q 4 ε, $/ε q 3 a, a/ε b, b/ε Esimerkiksi syötteellä abba esimerkin 43 epädeterministisellä pinoautomaatilla on seuraava hyväksyvä laskenta: (q 1, abba,ε) (q 2, abba, $) (vaihe 1) (q 2, bba,a$) (q 2, ba,ba$) (arvaus 2) (q 3, ba,ba$) (vaihe 3) (q 3, a,a$) (q 3, ε, $) (q 4, ε,ε) jonka lopputila q 4 F = {q 1, q 4 } on siis hyväksyvä. Deterministinen kontekstiton kieli Määritelmä 11. Kontekstiton kieli on deterministinen, jos se voidaan tunnistaa jollakin deterministisellä pinoautomaatilla, muuten se on epädeterministinen. Esimerkiksi edellä tarkasteltu kieli (7) ja kieli ovat epädeterministisiä. L 2 = { a n b m c k : n m tai m k } Deterministiset kielet ovat tärkeä kieliluokka, sillä ne voi hyväksyä eli jäsentää tehokkaammin kuin epädeterministiset kielet. Siksi jos voimme itse suunnitella kielen (kuten vaikkapa määritellessämme uutta ohjelmointikieltä) teemme siitä deterministisen. 100

22 1. Alusta pinon sisällöksi S$, jossa S on kieliopin lähtösymboli ja $ pinon pohjamerkki. 2. Toista seuraavaa: (a) Jos pinon huipulla on muuttujasymboli A, niin valitse epädeterministisesti jokin sääntö A w. Korvaa A merkkijonolla w. (b) Jos pinon huipulla on päätesymboli, niin poista se pinosta ja vertaa seuraavaan syötemerkkiin. Jos ne eroavat, hylkää. (c) Jos pino on tyhjä (eli sen huipulla on $) niin hyväksy jos syötekin on loppu; muuten hylkää. Kuva 20: Generoi-ja-testaa -algoritmi Pinoautomaatit ja kontekstittomat kielet Lause 11. Kaikki kontekstittomat kielet voidaan tunnistaa (epädeterministisillä) pinoautomaateilla ja kaikki pinoautomaattien tunnistamat kielet ovat kontekstittomia. Todistus: On menetelmät, joilla voi muuntaa mielivaltaisen kontekstittoman kieliopin pinoautomaatiksi ja päinvastoin. 1. Ensin esitetään muunnos kieliopista automaatiksi. 2. Sitten luonnostellaan myös päinvastainen muunnos automaatista kieliopiksi. Kieliopista pinoautomaatiksi Perusidea on laatia annetun kieliopin pohjalta pinoautomaatti, joka toteuttaa seuraavan algoritmin: Generoi: Tuota epädeterministisesti pinoon merkkijono w Σ, jolla S w. Testaa: Vertaa pinon merkkijonoa w syötteeseen merkki kerrallaan. Jos löytyy ero, hylkää. Jos pino tyhjenee samaan aikaan, kun syöte loppuu, niin hyväksy. Toisin sanoen, generointivaihe arvaa minkä syötteen automaatti sai, ja testausvaihe tarkistaa että arvaus meni oikein. Epädeterminismi on oleellista: valitsemalla generoimisvaiheessa sovellettavat säännöt epädeterministisesti varmistetaan, että jokaisella kieleen kuuluvalla merkkijonolla w on mahdollisuus tulla tuotetuksi. Toteutusta rajoittaa, että automaatin tietorakenne on pino, josta vain huippu on kulloinkin näkyvissä. Siksi generointi- ja testausvaihe pitää lomittaa: Aina kun pinon huipulle saadaan päätesymboleita, käydään vertaamassa niitä syötteeseen ennen generoinnin jatkamista. Saadaan kuvan 20 tarkennettu algoritmi joka pitää vielä koodata pinoautomaatiksi. Tämän pinoautomaatin pinoaakkostoksi tulee siis kieliopin koko aakkosto sekä pinon pohjamerkki Γ = V {$} (jossa siis $ V ). 101

23 syöteaakkostoksi tulee puolestaan kieliopin päätemerkkien joukko Σ. Esimerkki 44. Tarkastellaan kielioppia S Sa T T btc ε ja merkkijonoa bbcca, joka voidaan johtaa seuraavasti: S Sa Ta btca bbtcca bbcca. Haluamme siis muodostaa esimerkissä 44 pinoautomaatin, joka syötteellä bbcca vuorotellen soveltaa pinoon ylläolevan johdon sääntöjä ja poistaa pinosta syötettä vastaavia päätemerkkejä. Pinon käyttäytymisen pitäisi siis olla kuten vieressä: jäljellä oleva syöte pinon sisältö bbcca ε bbcca $ bbcca S$ bbcca Sa$ bbcca Ta$ bbcca bt ca$ bcca Tca$ bcca bt cca$ cca Tcca$ cca cca$ ca ca$ a a$ ε $ ε ε Otamme käyttöön merkinnän (q, γ ) δ(q, σ, γ) myös siinä tapauksessa, että γ = g 1 g 2 g 3...g m Γ onkin kokonainen m pinomerkin jono (kun aiemmin sallittiin vain korkeintaan yksi pinomerkki eli m 1). Tämä merkintä luetaan seuraavasti: Jos automaatti on tilassa q, niin voidaan siirtyä tilaan q lukemalla syötemerkki σ ja korvaamalla pinon päällä pinomerkki γ tällä pinomerkkijonolla g 1 g 2 g 3...g m. Automaattina tämä tulkitaan kuten alla. σ,γ/g 1...g m σ,γ/g m ε, ε/g m 1 ε, ε/g 1 q q q q Huomaa: Pinomerkkijono viedään pinoon takaperin eli push(g m ); push(g m 1 ); push(g m 2 );...; push(g 1 ) jotta pinon päälle muodostuu tämä haluttu pinomerkkijono g 1 g 2 g 3...g m etuperin. Automaattiimme tulee alkutila q start toistotila q loop, hyväksyvä tila sekä muita tiloja. 1. Toteutettavan algoritmimme kuvassa 20 ensimmäinen askel oli pinon alustus. Se voidaan toteuttaa seuraavasti: 102

24 start ε, ε/s$ ε, ε/$ ε, ε/s loop start loop 2. Sen toinen askel toisti seuraavaa: (a) Jos pinon huipulla on muuttujasymboli A, niin valitse epädeterministisesti sääntö A w. Korvaa A merkkijonolla w. Siis kaikilla säännöillä A w lisätään siirtymä: loop ε, A/w Nyt käytetään siis äsken käyttöön otettua merkintää, jolla pinoon viedään kokonainen pinomerkkijono w, eli silmukalle ilmestyy w 1 välitilaa, joita tässä kuvassa ei näy. (b) Jos pinon huipulla on päätesymboli, poista se pinosta ja vertaa seuraavaan syötemerkkiin. Jos ne eroavat, hylkää. Siis kaikilla päätemerkeillä a Σ tulee siirtymä: loop a, a/ε (c) Jos pinon huipulla on $, hyväksy jos syöte on loppu; muuten hylkää. loop ε, $/ε Muita siirtymiä ei tule, eli automaattimme on nyt valmis. Tehtävä 39. Muunna kielioppi S Sa T T btc ε pinoautomaatiksi. Pinoautomaatista kieliopiksi Hahmotellaan myös muunnos toiseen suuntaan eli annetusta pinoautomaatista sitä vastaavaksi kontekstittomaksi kieliopiksi. Oletetaan yksinkertaisuuden vuoksi, että automaatti tyhjentää pinonsa ennen kuin hyväksyy syötteensä. Oletetaan myös, ettei siinä ole operaatioita korvaa pinon päällä merkki γ merkillä γ. Sellainen operaatio p σ,γ/γ q voidaan nimittäin toteuttaa erillisellä poppush-yhdistelmällä p σ,γ/ε ε,ε/γ q. 103

25 Ajatellaan sitten, että automaatin jokaiseen siirtymään p σ,γ/γ q on liitetty sivuvaikutuksena tulosta σ, γ/γ. Tässä laatikko ilmaisee, että kunkin tulosteen ajatellaan olevan yksi (mutkikas) merkki. Automaatti siis tulostaa sivuvaikutuksenaan sen, mitä se tekee pinolleen ja syötteelleen. Sitten aletaan laatimaan kielioppia, jotka tuottaa täsmälleen nämä sivuvaikutuksena tulostuvat laatikkomerkkijonot. Laaditaan ensin kielioppi kaikille sellaisille laatikkomerkkijonoille, joissa jokaista push-operaatiota seuraa myöhemmin sen kumoava pop-operaatio. Jokainen tulostuva laatikkomerkkijono on sellainen oletusten nojalla, mutta jokaista sellaista ei automaatti välttämättä voi tulostaa. Tämän kieliopin voi muodostaa samaan tapaan kuin esimerkin 34 tasapainoiset sulkumerkkijonot. Nyt vain sulkumerkkejä on monia erilaisia: push(γ) on avaava sulkumerkki lajia γ ja sitä vastaava pop(γ) on sulkeva sulkumerkki lajia γ. Vastaavasti ASCII-aakkostossa on kolmen eri lajin sulkumerkkipareja:(...),[...] ja {...}. Kieliopiksi saadaan A ε A AA A σ,ε/ε A jokaiselle σ Σ {ε} A σ,γ/ε A σ, ε/γ jokaiselle eri lajille γ Γ. Tulkitaan sitten pinoautomaatti tavalliseksi äärelliseksi automaatiksi, jonka syöteaakkostona ovat nämä laatikot. σ,γ/γ Toisin sanoen, tulkitaan jokainen siirtymä p σ,γ/γ q siirtymäksi p q. Nyt etsimämmäe laatikkomerkkijonokieli on tämän kieliopin tuottaman kielen ja tämän äärellisen automaatin hyväksymän kielen leikkaus. Tässä vaiheessa tekisi mieli vedota aiemmin mainitsemaamme tulokseen, että kontekstittoman ja säännöllisen kielen leikkaus on kontekstiton mutta sen todistamisessa voimme vuorostaan tarvita tätä tulosta, jolloin tekisimme kehäpäätelmän! Siksi teemme leikkauksen tässä todistuksessa käsin onneksi kielioppi on yksinkertainen. Otetaan käyttöön välikkeet B p q joiden ylä- ja alaindeksit ovat automaatin tiloja eli p, q Q. 104

26 Määritellään uusi kielioppi siten, että tällainen välike B p q tarkoittaa niitä laatikkomerkkijonoja jotka voidaan tuottaa välikkeestä A ja jotka voivat esiintyä jollakin polulla tilasta p tilaan q. B p p ε B p r B p qb q r B p r σ,ε/ε B q r σ, ε/γ s sekä tiloille p, q,r, s Q ja pinomer- kaikille siirtymille p keille γ Γ. kaikilla p Q B p s σ,γ/ε B q r σ, ε/γ kaikilla p, q,r Q σ,γ/ε q ja r jokaiselle siirtymälle p σ,ε/ε q ja r Q Nyt etsimämme laatikkomerkkijonokieli voidaan tuottaa lisäämällä lähtösymboli S ja sille säännöt S B p 0 p f joissa p 0 on automaatin alkutila ja p f F mikä tahansa sen hyväksyvä tila. Lopuksi muunnamme vielä laatikkomerkkijonon vastaavaksi syötemerkkijonoksi. Tämä voidaan tehdä lisäämällä jokaiselle laatikkomerkille muuntosääntö σ, γ/γ σ eli tulkitsemalla nekin välikesymboleiksi jota tuottavat siinä luetun syötemerkin σ (tai eivät mitään kun sellaista ei ole eli kun σ = ε). Tehtävä 40. Laadi pinoautomaatti, joka tunnistaa seuraavanlaiset ohjelmointikielen rakenteet: merkkijonossa jokaista avaavaa aaltosulkua { vastaa sulkeva aaltosulku } jokaista else:ä vastaa if, mutta if:iin ei ole pakko liittyä else-haaraa if-lauseen ehto esitetään päätemerkillä c muut komennot esitetään päätemerkillä a, jota seuraa puolipiste ; Laillinen: { } if c { if c a; else a; } Laiton: } if c { if c { a; else a; } Aakkosto koostuu siis seuraavista merkkijonoista: Σ = { {, }, if, else, c, a; }. Kielioppina tämän voi esittää esim. seuraavasti: S {S} if c ST a; T else S ε 105

27 5.4 Kielioppien jäsennysongelma Annettu kielioppi G ja merkkijono x. Onko x L(G)? Esimerkkejä jäsennysongelmista: Kuuluuko virke jänis joka pelkäsi arkaa peikkoa metsästi suurta sutta esimerkin 37 relatiivilausekieleen L rel? Onko ( ) 7 1 laillinen aritmeettinen lauseke? Onko seuraava funktio C-kielen syntaksin mukainen? float laske(int x, int y) { if (x >= y) return x-y; else return y-x; } Kontekstittomien kielten jäsennys on tärkeä osa ohjelmointikielten kääntämisessä. Yleisemmin, jäsentäminen on tapa testata kuuluuko annettu merkkijono annettuun kieleen, riippumatta varsinaisesta sovelluksesta. Jäsentimet Jäsennysongelma voidaan ratkaista jäsennysalgoritmilla eli jäsentimellä eli jäsentäjällä (englanniksi parser mutta suomeksi jäsentäminen ei ole parsimista!). On useita vaihtoehtoisia menetelmiä erityyppisille kieliopeille: Lineaariset kieliopit eli säännölliset kielet: äärellinen automaatti. LL(1)-kielet: Rekursiivinen LL(1)-jäsennin. Deterministiset kielet: deterministinen pinoautomaatti tai rekursiivinen LR(1)- jäsennin. Vahvemmat kontekstittomat kielet: CYK-algoritmi. Ensin tutustumme jäsennyksen peruskäsitteisiin. Johdot Olkoon merkkijono γ V kieliopin G = (V, Σ, P, S) lausejohdos. Sen johdoksi kieliopissa G kutsutaan lähtösymbolista S merkkijonoon γ johtavaa suorien johtojen jonoa S γ 1 γ 2 γ 3 γ Johdon pituus on siihen kuuluvien suorien johtojen määrä eli -askelten lukumäärä. Johto γ γ on vasen johto jos kussakin johtoaskelessa on produktiota sovellettu merkkijonon vasemmanpuoleisimpaan välikkeeseen; sitä merkitään γ γ lm 106

28 oikea johto jos kussakin johtoaskelessa on produktiota sovellettu merkkijonon oikeanpuoleiseen välikkeeseen; sitä merkitään γ γ. rm Johto ei välttämättä ole oikea eikä vasen, vaan se voi olla niiden sekamuoto (eli joskus lavennetaan vasemman- ja joskus oikeanpuoleisin välike) tai ei kumpaakaan (eli joskus lavennetaan välike joka on vasemman- ja oikeanpuoleisimman välissä). Esimerkki 45. Tarkastellaan kielioppia G expr : E E + T T T T F F F a (E) Lauseelle a + a a voidaan antaa esimerkiksi seuraavanlaiset johdot kieliopissa: (i) E E + T T + T F + T a + T a + T F a + F F a + a F a + a a (ii) E E + T T + T T + T F T + F F F + F F F + a F a + a F a + a a (iii) E E + T E + T F E + T a E + F a E + a a T + a a F + a a a + a a Näistä (i) on vasen johto, (iii) oikea johto ja (ii) ei ole kumpaakaan. Jäsennyspuu Eli syntaksipuu, eli johtopuu (englanniksi parse tree, syntax tree, derivation tree). Vaihtoehtoinen esitystapa johdoille. Kertoo vain, miten välikkeet on lavennettu, ei missä järjestyksessä lavennukset on tehty. Esimerkiksi kaikkia kolmea edellä esimerkissä 45 mainittua johtoa vastaa sama kuvan 21 jäsennyspuu. Määritelmä 12. Olkoon G = (V, Σ, P, S) kontekstiton kielioppi. Kieliopin G mukainen jäsennyspuu on järjestetty puu jolla on seuraavat ominaisuudet: 1. puun solmut on nimetty joukon V {ε} alkioilla siten, että sisäsolmujen nimet ovat välikkeitä (eli joukosta N = V \ Σ); juurisolmun nimenä on lähtösymboli S; lehtisolmujen nimet ovat päätemerkkejä (eli joukosta Σ {ε}); 2. jos A on puun jonkin sisäsolmun nimi, ja X 1,...,X k ovat sen jälkeläisten nimet järjestyksessä (vasemmalta oikealle) niin A X 1...X k on kieliopin G:n produktio. (Järjestetyssä puussa solmun kuten A lasten keskinäisellä järjestyksellä on väliä, eli että sillä on ensimmäinen lapsi nimeltään X 1, toinen lapsi nimeltään X 2, jne.) 107

29 E E T T T F F F a + a * a Kuva 21: Esimerkki jäsennyspuusta. Jäsennyspuun τ tuotos on se päätemerkkijono, joka saadaan liittämällä yhteen sen lehtisolmujen nimet esijärjestyksessä ( vasemmalta oikealle ). Esimerkiksi edellisen kuvan 21 jäsennyspuun tuotos on a + a a. Jäsennyspuu on hyvä esitys sille miten sen tuotos on saatu kieliopin säännöillä. Tehtävä 41. Muistetaan aiempi kielioppimme: Anna ohjelman johto ja jäsennyspuu. Johdot ja jäsennyspuu lause ehtolause koottu-lause sijoitus kutsu ehtolause if ehto then lause else lause ehto x=0 koottu-lause begin lausejono end lausejono lause lause ; lausejono sijoitus x:=0 kutsu a b c if x=0 then a else begin x:=0 ; b end Lausekkeen johdosta voidaan aina muodostaa jäsennyspuu ja päinvastoin: 108

30 1. Kun annetaan johto S γ, niin voidaan muodostaa jäsennyspuu τ, jonka tuotos on γ. 2. Kun annetaan jäsennyspuu τ, niin voidaan muodostaa sen tuotoksen γ vasen ja oikea johto S γ ja S γ. lm rm Johdosta jäsennyspuuksi Olkoon annettuna johto S = γ 0 γ 1 γ 2 γ 3 γ n = γ jonka tuotos on γ, niin siitä voidaan muodostaa jäsennyspuu τ seuraavasti: 1 aluksi τ koostuu vain juurisolmusta nimeltään S 2 for j 0, 1, 2,...,n 1 3 do olkoon seuraava johdos γ j+1 saatu nykyisestä johdoksesta γ j korvaamalla sen k:s symboli merkkijonolla g 1 g 2 g 3...g m 4 l k:s lehti puussa τ vasemmalta oikealle laskien 5 synnytä lehdelle l lapset nimiltään g 1, g 2, g 3,...,g m Tämän for-silmukan invariantti on, että nykyinen johdos γ j luettelee aina nykyisen puun τ lehtien nimet vasemmalta oikealle (lukuunottamatta ε-lehtiä). Kun käytetään esimerkin 45 vasenta johtoa (i) ja merkitään jokaisen solmun viereen monesko johdos sen synnytti, niin saadaan: 0 E 1 1 E T T T F 3 F 6 F a + a * a Tehtävä 42. Kielioppi S SS (S) ε tuottaa kaikki oikein muodostetut sulkulausekkeet (siis päätesymbolit ovat vasen ja oikea sulkumerkki). Sulkulauseke on oikein muodostettu, jos vasemmat ja oikeat sulkumerkit voidaan pariuttaa siten, että mikään pari ei mene ristiin. 109

31 Sulkulausekkeen ()(()()) eräs johto on S SS (S)S ()S ()(S) ()(SS) Piirrä vastaava jäsennyspuu. Jäsennyspuusta johdoiksi ()((S)S) ()(()S) ()(()(S)) ()(()()) Olkoon τ kieliopin G mukainen jäsennyspuu. Siitä saadaan tuotoksensa x vasen johto käymällä puun solmut läpi esi järjestyksessä ( ylhäältä alas, vasemmalta oikealle ) ja laventamalla vastaan tulevat välikkeet järjestyksessä puun osoittamalla tavalla oikea johto käymällä puu läpi käänteisessä esijärjestyksessä ( ylhäältä alas, oikealta vasemmalle ). Yleensä käytämme vasenta johtoa. Oikeaa johtoa käytetään myös tietyn tyyppisten (ohjelmointikielten) kielioppien jäsentämiseen. Tehtävä 43. Kirjoita edellisen tehtävän 42 jäsennyspuuta vastaava oikea johto. Esimerkiksi kun kuvan 21 esimerkkipuumme solmut numeroidaan esijärjestyksessä, niin saadaan 1 E 2 E 7 T T T F 4 F 9 F a + a * a ja vasemman johdon rakentaminen etenee siis tässä numerojärjestyksessä. 110

32 Menetelmät ovat yksikäsitteisiä Jos muodostetaan annetusta vasemmasta (tai oikeasta) johdosta S x (tai S x) lm rm ensin jäsennyspuu edellä mainitulla tavalla, ja sitten jäsennyspuusta vasen (oikea) johto, niin saadaan takaisin alkuperäinen johto. Lause 12. Olkoon G = (V, Σ, P, S) kontekstiton kielioppi. Tällöin: (i) jokaisella kieliopin G lausejohdoksella γ on sen mukainen jäsennyspuu τ, jonka tuotos on γ; (ii) jokaista kieliopin G mukaista jäsennyspuuta τ, jonka tuotos on päätemerkkijono x, vastaavat yksikäsitteiset vasen ja oikea johto S x ja S x. lm rm Seuraus: Jokaisella kieliopin G lauseella on vasen ja oikea johto. Tai siis kontekstittoman kieliopin tuottamien lauseiden jäsennyspuut, vasemmat ja oikeat johdot vastaavat yksikäsitteisesti toisiaan, joten riittää antaa vain yksi vaihtoehtoisista jäsennyksen esitystavoista. Kieliopin moniselitteisyys Samalla lauseella voi olla kieliopissa useita erilaisia jäsennyksiä. Esimerkiksi lauseella a + a a kieliopissa G expr: E E E + E E E a E E E + E a a a a a Määritelmä 13. Kontekstiton kielioppi G on moniselitteinen (englanniksi ambiguous ), jos jollakin sen lauseella x on kaksi erilaista sen mukaista jäsennyspuuta. Muuten kielioppi on yksiselitteinen ( unambiguous ). Kontekstiton kieli, jonka voi tuottaa vain moniselitteisellä kieliopilla, on luonnostaan moniselitteinen ( inherently ambiguous ). Esimerkki 46. Aritmeettisia lausekkeita kuvaavalle kielelle annettiin kaksi kielioppia. Niistä G expr on yksiselitteinen: E T E + T T F T F F a (E). Se toinen kielioppi G expr nähtiin edellä moniselitteiseksi: E E + E E E a (E) Itse kieli L expr = L(G expr) ei kuitenkaan ole luonnostaan moniselitteinen, koska sillä on myös yksiselitteinen kielioppi G expr. 111

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

uv n, v 1, ja uv i w A kaikilla 2.8 Säännöllisten kielten rajoituksista Kardinaliteettisyistä on oltava olemassa (paljon) ei-säännöllisiä kieliä: kieliä on ylinumeroituva määrä, säännöllisiä lausekkeita vain numeroituvasti. Voidaanko

Lisätiedot

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

Testaa: Vertaa pinon merkkijono syötteeseen merkki kerrallaan. Jos löytyy ero, hylkää. Jos pino tyhjenee samaan aikaan, kun syöte loppuu, niin Yhteydettömien kielioppien ja pinoautomaattien yhteys [Sipser s. 117 124] Todistamme, että yhteydettömien kielioppien tuottamat kielet ovat tasan samat kuin ne, jotka voidaan tunnistaa pinoautomaatilla.

Lisätiedot

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

Rekursiivinen Derives on periaatteessa aivan toimiva algoritmi, mutta erittäin tehoton. Jos tarkastellaan esim. kieliopinpätkää Rekursiivinen Derives on periaatteessa aivan toimiva algoritmi, mutta erittäin tehoton. Jos tarkastellaan esim. kieliopinpätkää S AB CA... A CB...... ja kutsua Derives(S, abcde), niin kutsu Derives(B,

Lisätiedot

Yhteydettömät kieliopit [Sipser luku 2.1]

Yhteydettömät kieliopit [Sipser luku 2.1] Yhteydettömät kieliopit [ipser luku 2.1] Johdantoesimerkkinä tarkastelemme kieltä L = { a n b m a n n > 0, m > 0 }, joka on yhteydetön (mutta ei säännöllinen). Vastaavan kieliopin ytimenä on säännöt eli

Lisätiedot

Rajoittamattomat kieliopit

Rajoittamattomat kieliopit Rajoittamattomat kieliopit Ohjelmoinnin ja laskennan perusmalleista muistetaan, että kieli voidaan kuvata (esim.) kieliopilla joka tuottaa sen, tai automaatilla joka tunnistaa sen. säännölliset lausekkeet

Lisätiedot

Yhteydettömän kieliopin jäsennysongelma

Yhteydettömän kieliopin jäsennysongelma Yhteydettömän kieliopin jäsennysongelma Yhteydettömän kieliopin jäsennysongelmalla tarkoitetaan laskentaongelmaa Annettu: yhteydetön kielioppi G, merkkijono w Kysymys: päteekö w L(G). Ongelma voidaan periaatteessa

Lisätiedot

Pinoautomaatit. Pois kontekstittomuudesta

Pinoautomaatit. Pois kontekstittomuudesta TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 3. joulukuuta 2015 Sisällys Pinoautomaatti NFA:n yleistys automaatilla on käytössään LIFO-muisti 1 eli pino Pino

Lisätiedot

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

ICS-C2000 Tietojenkäsittelyteoria. Tähän mennessä: säännölliset kielet. Säännöllisten kielten pumppauslemma M := ICS-C2000 Tietojenkäsittelyteoria Luento 5: Säännöllisten kielten pumppauslemma; yhteydettömät kieliopit Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan laitos Alue ja aiheet: Orposen prujun

Lisätiedot

ICS-C2000 Tietojenkäsittelyteoria

ICS-C2000 Tietojenkäsittelyteoria ICS-C2000 Tietojenkäsittelyteoria Luento 5: Säännöllisten kielten pumppauslemma; yhteydettömät kieliopit Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan laitos Kevät 2016 Alue ja aiheet: Orposen

Lisätiedot

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

Olkoon G = (V,Σ,P,S) yhteydetön kielioppi. Välike A V Σ on tyhjentyvä, jos A. NULL := {A V Σ A ε on G:n produktio}; 3.6 Cocke-Younger-Kasami -jäsennysalgoritmi Osittava jäsentäminen on selkeä ja tehokas jäsennysmenetelmä LL(1)-kieliopeille: n merkin mittaisen syötemerkkijonon käsittely sujuu ajassa O(n). LL(1)-kieliopit

Lisätiedot

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

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä 2013 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 6. kesäkuuta 2013 Sisällys Aikataulumuutos Tämänpäiväinen demotilaisuus on siirretty maanantaille klo 14:15 (Ag Delta).

Lisätiedot

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

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen: Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen: S A S B Samaan jäsennyspuuhun päästään myös johdolla S AB Ab ab: S A S B Yhteen jäsennyspuuhun liittyy aina tasan yksi vasen

Lisätiedot

2. Yhteydettömät kielet

2. Yhteydettömät kielet 2. Yhteydettömät kielet Yhteydettömät eli kontekstittomat kielet (context-free language, CFL) ovat säännöllisiä kieliä laajempi luokka formaaleja kieliä. Ne voidaan esittää yhteydettömillä kieliopeilla

Lisätiedot

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

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut T-79.148 Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut 4. Tehtävä: Laadi algoritmi, joka testaa onko annetun yhteydettömän kieliopin G = V, Σ, P, S tuottama

Lisätiedot

S BAB ABA A aas bba B bbs c

S BAB ABA A aas bba B bbs c T-79.148 Kevät 2003 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut 4. Tehtävä: Laadi algoritmi, joka testaa onko annetun yhteydettömän kieliopin G = V, Σ, P, S) tuottama

Lisätiedot

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista Antti-Juhani Kaijanaho 15. maaliskuuta 2012 1 Apumääritelmä Määritelmä 1. Olkoon Σ merkistö, jolla on olemassa täydellinen järjestys ( ) Σ 2.

Lisätiedot

Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja 582206 Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja 1. Tarkastellaan yhteydetöntä kielioppia S SAB ε A aa a B bb ε Esitä merkkijonolle aa kaksi erilaista jäsennyspuuta ja kummallekin siitä vastaava

Lisätiedot

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

M =(K, Σ, Γ,, s, F ) Σ ={a, b} Γ ={c, d} = {( (s, a, e), (s, cd) ), ( (s, e, e), (f, e) ), (f, e, d), (f, e) Tik-79.148 Kevät 2001 Tietojenkäsittelyteorian perusteet Laskuharjoitus 7 Demonstraatiotehtävien ratkaisut 1. Pinoautomaatti M = K Σ Γ s F missä K Σ s ja F on määritelty samalla tavalla kuin tilakoneellekin.

Lisätiedot

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

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 6. lokakuuta 2016 TIETOTEKNIIKAN LAITOS .. TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 6. lokakuuta 2016 Sisällys. Harjoitustehtävätilastoja Tilanne 6.10.2016 klo 8:28 passed potential redo submitters

Lisätiedot

Esimerkki 2.28: Tarkastellaan edellisen sivun ehdot (1) (3) toteuttavaa pinoautomaattia, jossa päätemerkit ovat a, b ja c ja pinoaakkoset d, e ja $:

Esimerkki 2.28: Tarkastellaan edellisen sivun ehdot (1) (3) toteuttavaa pinoautomaattia, jossa päätemerkit ovat a, b ja c ja pinoaakkoset d, e ja $: Esimerkki 2.28: Tarkastellaan edellisen sivun ehdot (1) (3) toteuttavaa pinoautomaattia, jossa päätemerkit ovat a, b ja c ja pinoaakkoset d, e ja $: a, ε d b, d ε ε, ε $ b, d ε 1 2 3 6 c, ε e c, ε e c,

Lisätiedot

Chomskyn hierarkia ja yhteysherkät kieliopit

Chomskyn hierarkia ja yhteysherkät kieliopit Chomskyn hierarkia ja yhteysherkät kieliopit Laskennan teorian opintopiiri Tuomas Hakoniemi 21. helmikuuta 2014 Käsittelen tässä laskennan teorian opintopiirin harjoitustyössäni muodollisten kielioppien

Lisätiedot

Automaatit. Muodolliset kielet

Automaatit. Muodolliset kielet Automaatit Automaatit ovat teoreettisia koneita, jotka käsittelevät muodollisia sanoja. Automaatti lukee muodollisen sanan kirjain kerrallaan, vasemmalta oikealle, ja joko hyväksyy tai hylkää sanan. Täten

Lisätiedot

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

4. Tehtävässä halutaan todistaa seuraava ongelma ratkeamattomaksi: T-79.148 Kevät 2004 Tietojenkäsittelyteorian perusteet Harjoitus 12 Demonstraatiotehtävien ratkaisut 4. Tehtävässä halutaan todistaa seuraava ongelma ratkeamattomaksi: Hyväksyykö annettu Turingin kone

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013 TIEA241 Automaatit ja kieliopit, kesä 2013 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 29. toukokuuta 2013 Sisällys Chomskyn hierarkia (ja muutakin) kieli LL(k) LR(1) kontekstiton kontekstinen rekursiivisesti

Lisätiedot

Turingin koneen laajennuksia

Turingin koneen laajennuksia Turingin koneen laajennuksia Turingin koneen määritelmään voidaan tehdä erilaisia muutoksia siten että edelleen voidaan tunnistaa tasan sama luokka kieliä. Moniuraiset Turingin koneet: nauha jakautuu k

Lisätiedot

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Hahmon etsiminen syotteesta (johdatteleva esimerkki) Hahmon etsiminen syotteesta (johdatteleva esimerkki) Unix-komennolla grep hahmo [ tiedosto ] voidaan etsia hahmon esiintymia tiedostosta (tai syotevirrasta): $ grep Kisaveikot SM-tulokset.txt $ ps aux

Lisätiedot

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. 31. maaliskuuta 2011 TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 31. maaliskuuta 2011 Sisällys Sisällys Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti

Lisätiedot

Osoitamme, että jotkut kielet eivät ole säännöllisiä eli niitä ei voi tunnistaa äärellisellä automaatilla.

Osoitamme, että jotkut kielet eivät ole säännöllisiä eli niitä ei voi tunnistaa äärellisellä automaatilla. Ei-säännöllisiä kieliä [Sipser luku 1.4] Osoitamme, että jotkut kielet eivät ole säännöllisiä eli niitä ei voi tunnistaa äärellisellä automaatilla. Tulos ei sinänsä ole erityisen yllättävä, koska äärellinen

Lisätiedot

1. Universaaleja laskennan malleja

1. Universaaleja laskennan malleja 1. Universaaleja laskennan malleja Laskenta datan käsittely annettuja sääntöjä täsmällisesti seuraamalla kahden kokonaisluvun kertolasku tietokoneella, tai kynällä ja paperilla: selvästi laskentaa entä

Lisätiedot

T Syksy 2006 Tietojenkäsittelyteorian perusteet T Harjoitus 7 Demonstraatiotehtävien ratkaisut

T Syksy 2006 Tietojenkäsittelyteorian perusteet T Harjoitus 7 Demonstraatiotehtävien ratkaisut T-79.1001 Syksy 2006 Tietojenkäsittelyteorian perusteet T Harjoitus 7 Demonstraatiotehtävien ratkaisut Lemma (Säännöllisten kielten pumppauslemma). Olkoon A säännöllinen kieli. Tällöin on olemassa n 1

Lisätiedot

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

Äärellisten automaattien ja säännöllisten kielten ekvivalenssi Äärellisten automaattien ja säännöllisten kielten ekvivalenssi Osoitamme seuraavan keskeisen tuloksen: Lause 1.8: [Sipser Thm. 1.54] Kieli on säännöllinen, jos ja vain jos jokin säännöllinen lauseke esittää

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 2. helmikuuta 2012 TIEA241 Automaatit ja, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 2. helmikuuta 2012 Sisällys Sisällys Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti lueteltava

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012 TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 12. tammikuuta 2012 Sisällys Sisällys Äärellisiä automaatteja PUSH ON PUSH OFF Q T Q J C C H S C,Q C,Q 0 50s 1e

Lisätiedot

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 10. kesäkuuta 2013

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 10. kesäkuuta 2013 TIEA241 Automaatit ja kieliopit, kesä 2013 etenevä Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 10. kesäkuuta 2013 Sisällys etenevä etenevä Chomskyn hierarkia (ja muutakin) kieli säännöllinen LL(k) LR(1)

Lisätiedot

Ei-yhteydettömät kielet [Sipser luku 2.3]

Ei-yhteydettömät kielet [Sipser luku 2.3] Ei-yhteydettömät kielet [Sipser luku 2.3] Yhteydettömille kielille pätee samantapainen pumppauslemma kuin säännöllisille kielille. Siinä kuitenkin pumpataan kahta osamerkkijonoa samaan tahtiin. Lause 2.25

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015 ja ja TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho NFA:ksi TIETOTEKNIIKAN LAITOS 16. marraskuuta 2015 Sisällys ja NFA:ksi NFA:ksi Kohti säännöllisiä lausekkeita ja Nämä tiedetään:

Lisätiedot

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

Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja 581336 Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja 1. S! axc X! axc X! by c Y! by c Y! " 2. (a) Tehtävänä on konstruoida rajoittamaton kielioppi, joka tuottaa kielen f0 n 1 n jn 1g. Vaihe1: alkutilanteen

Lisätiedot

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 26. marraskuuta 2015 Sisällys Tunnistamis- ja jäsennysongelma Olkoon G = (N, Σ, P, S) kontekstiton kielioppi ja

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015 TIEA24 Automaatit ja kieliopit, syksy 205 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 5. marraskuuta 205 Sisällys Käsiteanalyysiä Tarkastellaan koodilukkoa äärellisenä automaattina. Deterministinen äärellinen

Lisätiedot

Rajoittamattomat kieliopit (Unrestricted Grammars)

Rajoittamattomat kieliopit (Unrestricted Grammars) Rajoittamattomat kieliopit (Unrestricted Grammars) Laura Pesola Laskennanteorian opintopiiri 13.2.2013 Formaalit kieliopit Sisältävät aina Säännöt (esim. A -> B C abc) Muuttujat (A, B, C, S) Aloitussymboli

Lisätiedot

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

δ : (Q {q acc, q rej }) (Γ k {, }) Q (Γ k {, }) {L, R}. 42 Turingin koneiden laajennuksia 1 oniuraiset koneet Sallitaan, että Turingin koneen nauha koostuu k:sta rinnakkaisesta urasta, jotka kaikki kone lukee ja kirjoittaa yhdessä laskenta-askelessa: Koneen

Lisätiedot

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

(0 1) 010(0 1) Koska kieli on yksinkertainen, muodostetaan sen tunnistava epädeterministinen q 0 q 1 q 2 q3 T-79.48 Tietojenkäsittelyteorian perusteet Tentti 25..23 mallivastaukset. Tehtävä: Kuvaa seuraavat kielet sekä säännölisten lausekkeiden että determinististen äärellisten automaattien avulla: (a) L = {w

Lisätiedot

11.4. Context-free kielet 1 / 17

11.4. Context-free kielet 1 / 17 11.4. Context-free kielet 1 / 17 Määritelmä Tyypin 2 kielioppi (lauseyhteysvapaa, context free): jos jokainenp :n sääntö on muotoa A w, missäa V \V T jaw V. Context-free kielet ja kieliopit ovat tärkeitä

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 22. toukokuuta 2013 TIEA24 Automaatit ja kieliopit, kesä 3 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 22. toukokuuta 3 Sisällys Äärellisiä automaatteja ON PUSH PUSH OFF Q T J Q C C H S C,Q C,Q 0 40 60 80 00, 70 90 Deterministinen

Lisätiedot

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

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 13. lokakuuta 2016 Sisällys Harjoitustehtävätilastoa Tilanne 13.10.2016 klo 9:42 passed waiting redo submitters

Lisätiedot

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja 582206 Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja 1. Esitä tilakaaviona NFA N = (Q, Σ, δ, q 0, F ), missä Q = { q 0, q 1, q 2, q 3, q 4, q 5, q 6, q 7 }, Σ = { a, b, c }, F = { q 4 } ja δ on

Lisätiedot

Säännöllisten kielten sulkeumaominaisuudet

Säännöllisten kielten sulkeumaominaisuudet Säännöllisten kielten sulkeumaominaisuudet Osoitamme nyt, että säännöllisten kielten joukko on suljettu yhdisteen, konkatenaation ja tähtioperaation suhteen. Toisin sanoen jos A ja B ovat säännöllisiä,

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012 TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 19. tammikuuta 2012 Sisällys Sisällys Muistathan A B -konstruktion 0 k 1 i 2 s 3 s 4 a 5 0 k 1 o 2 i 3 r 4

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016 TIEA241 Automaatit ja, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 9. lokakuuta 2016 Sisällys Kontekstiton kielioppi Kontekstiton kielioppi koostuu joukosta päätemerkkejä (engl. terminal symbols),

Lisätiedot

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

6.5 Turingin koneiden pysähtymisongelma Lause 6.9 Kieli. H = {c M w M pysähtyy syötteellä w} 6.5 Turingin koneiden pysähtymisongelma Lause 6.9 Kieli H = {c w pysähtyy syötteellä w} on rekursiivisesti numeroituva, mutta ei rekursiivinen. Todistus. Todetaan ensin, että kieli H on rekursiivisesti

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 19. syyskuuta 2016 TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 19. syyskuuta 2016 Sisällys Neuvoja opintoihin tee joka päivä ainakin vähän uskalla mennä epämukavuusalueelle en

Lisätiedot

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

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

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 16. toukokuuta 2011 TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 16. toukokuuta 2011 Sisällys engl. random-access machines, RAM yksinkertaistettu nykyaikaisen (ei-rinnakkaisen)

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015 TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 30. marraskuuta 2015 Sisällys t Väitöstilaisuus 4.12.2015 kello 12 vanhassa juhlasalissa S212 saa tulla 2 demoruksia

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. lokakuuta 2016 TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 12. lokakuuta 2016 Sisällys Harjoitustehtävät loppukurssilla luentojen 14 18 harjoitustehtävistä on tehtävä yksi

Lisätiedot

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016 ICS-C2000 Tietojenkäsittelyteoria Kevät 2016 Kierros 7, 29. helmikuuta 4. maaliskuuta Demonstraatiotehtävien ratkaisut D1: Osoita, yhteydettömien kielten pumppauslemmaa käyttäen, että kieli {ww w {a,b}

Lisätiedot

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

Tarkastelemme ensin konkreettista esimerkkiä ja johdamme sitten yleisen säännön, joilla voidaan tietyissä tapauksissa todeta kielen ei-säännöllisyys. Ei-säännöllisiä kieliä [Sipser luku 1.4] Osoitamme, että joitain kieliä ei voi tunnistaa äärellisellä automaatilla. Tulos ei sinänsä ole erityisen yllättävä, koska äärellinen automaatti on äärimmäisen

Lisätiedot

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. 31. maaliskuuta 2011 TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 31. maaliskuuta 2011 Sisällys Sisällys Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. lokakuuta 2016 TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 3. lokakuuta 2016 Sisällys n tunnistin Jay : An Efficient Context-Free Parsing Algorithm. Communications of the

Lisätiedot

Kertausta 1. kurssikokeeseen

Kertausta 1. kurssikokeeseen Kertausta. kurssikokeeseen. kurssikoe on to 22.0. klo 9 2 salissa A (tai CK2). Koealueena johdanto ja säännölliset kielet luentokalvot 3 ja nämä kertauskalvot harjoitukset 6 Sipser, luvut 0 ja Edellisvuosien.

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. marraskuuta 2015 TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 12. marraskuuta 2015 Sisällys Muistathan A B -konstruktion 0 k 1 i 2 s 3 s 4 a 5 0 k 1 o 2 i 3 r 4 a 5 00 k 11 i

Lisätiedot

jäsennyksestä TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 29. syyskuuta 2016 TIETOTEKNIIKAN LAITOS Kontekstittomien kielioppien

jäsennyksestä TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 29. syyskuuta 2016 TIETOTEKNIIKAN LAITOS Kontekstittomien kielioppien TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 29. syyskuuta 2016 Sisällys Harjoitustehtävätilastoa Tilanne 29.9.2016 klo 8:41 (lähes kaikki kommentoitu) passed

Lisätiedot

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

M = (Q, Σ, Γ, δ, q 0, q acc, q rej ) 6. LASKETTAVUUSTEORIAA Churchin Turingin teesi: Mielivaltainen (riittävän vahva) laskulaite Turingin kone. Laskettavuusteoria: Tarkastellaan mitä Turingin koneilla voi ja erityisesti mitä ei voi laskea.

Lisätiedot

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. kesäkuuta 2013

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. kesäkuuta 2013 TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 12. kesäkuuta 2013 Sisällys t Chomskyn hierarkia (ja vähän muutakin) kieli säännöllinen LL(k) LR(1) kontekstiton

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 26. tammikuuta 2012 TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 26. tammikuuta 2012 Sisällys Luennon pähkinä Millä tavalla voidaan rakentaa tietokoneohjelma (tai kirjasto), joka

Lisätiedot

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja sekä muita TIEA241 Automaatit ja kieliopit, kesä 2013 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 19. kesäkuuta 2013 Sisällys Chomskyn hierarkia (ja vähän muutakin) kieli säännöllinen LL(k) LR(1) kontekstiton

Lisätiedot

Attribuuttikieliopit

Attribuuttikieliopit TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 3. toukokuuta 2011 Sisällys t Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti

Lisätiedot

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

9.5. Turingin kone. Turingin koneen ohjeet. Turingin kone on järjestetty seitsikko 9.5. Turingin kone Turingin kone on järjestetty seitsikko TM = (S, I, Γ, O, B, s 0, H), missä S on tilojen joukko, I on syöttöaakkosto, Γ on nauha-aakkosto, I Γ, O on äärellinen ohjeiden joukko, O S Γ

Lisätiedot

Lisää pysähtymisaiheisia ongelmia

Lisää pysähtymisaiheisia ongelmia Lisää pysähtymisaiheisia ongelmia Lause: Pysähtymättömyysongelma H missä H = { w111x w validi koodi, M w ei pysähdy syötteellä x } ei ole rekursiivisesti lueteltava. Todistus: Pysähtymisongelman komplementti

Lisätiedot

Muita universaaleja laskennan malleja

Muita universaaleja laskennan malleja Muita universaaleja laskennan malleja Tällä kurssilla Turingin kone on valittu algoritmikäsitteen formalisoinniksi. Toisin sanoen tulkitsemme, että laskentaongelmalle on olemassa algoritmi, jos ja vain

Lisätiedot

5.3 Ratkeavia ongelmia

5.3 Ratkeavia ongelmia 153 5.3 Ratkeavia ongelmia Deterministisen äärellisten automaattien (DFA) hyväksymisongelma: hyväksyykö annettu automaatti B merkkijonon w? Ongelmaa vastaava formaali kieli on A DFA = { B, w B on DFA,

Lisätiedot

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

Yllä osoitettiin, että säännöllisten kielten joukko on suljettu yhdisteen Yllä osoitettiin, että säännöllisten kielten joukko on suljettu yhdisteen suhteen, eli jos kielet A ja B ovat säännöllisiä, niin myös A B on. Tätä voi havainnollistaa seuraavalla kuvalla: P(Σ ) Säännölliset

Lisätiedot

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

Turingin koneet. Sisällys. Aluksi. Turingin koneet. Turingin teesi. Aluksi. Turingin koneet. Turingin teesi TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 17. kesäkuuta 2013 Sisällys Chomskyn hierarkia (ja vähän muutakin) kieli säännöllinen LL(k) LR(1) kontekstiton kontekstinen

Lisätiedot

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja 582206 Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja 1. Seuraavissa laskennoissa tilat on numeroitu sarakkeittain ylhäältä alas jättäen kuitenkin hyväksyvä tila välistä. Turingin koneen laskenta

Lisätiedot

follow(a) first(α j ) x

follow(a) first(α j ) x Tästä ensimmäisestä LL(1)-ehdosta (14) seuraa erityisesti, että korkeintaan yksi välikkeen A säännöistä voi tuottaa tyhjän merkkijonon ε eli tehdä välikkeestä A tyhjentyvän (eli nollautuvan). Toinen osa

Lisätiedot

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

on rekursiivisesti numeroituva, mutta ei rekursiivinen. 6.5 Turingin koneiden pysähtymisongelma Lause 6.9 Kieli H = { M pysähtyy syötteellä w} on rekursiivisesti numeroituva, mutta ei rekursiivinen. Todistus. Todetaan ensin, että kieli H on rekursiivisesti

Lisätiedot

ICS-C2000 Tietojenkäsittelyteoria

ICS-C2000 Tietojenkäsittelyteoria ICS-C2000 Tietojenkäsittelyteoria Luento 6: Jäsennyspuut, LL(1)-kielioppien jäsennys Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan laitos Alue ja aiheet: Orposen prujun luvut 3.3 3.5 Kielioppien

Lisätiedot

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

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 10. joulukuuta 2015 TIETOTEKNIIKAN LAITOS. TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 10. joulukuuta 2015 Sisällys TM vs yleiset kieliopit Lause Jokaiselle kielelle A seuraavat ovat yhtäpitävät: 1.

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy 2015. Antti-Juhani Kaijanaho. 3. joulukuuta 2015

TIEA241 Automaatit ja kieliopit, syksy 2015. Antti-Juhani Kaijanaho. 3. joulukuuta 2015 TIEA241 Automaatit ja, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 3. joulukuuta 2015 Sisällys Formaalisti Määritelmä Nelikko G = (V, Σ, P, S) on kontekstiton kielioppi (engl. context-free

Lisätiedot

Chomskyn hierarkia. tyyppi 0 on juuri esitelty (ja esitellään kohta lisää) tyypit 2 ja 3 kurssilla Ohjelmoinnin ja laskennan perusmallit

Chomskyn hierarkia. tyyppi 0 on juuri esitelty (ja esitellään kohta lisää) tyypit 2 ja 3 kurssilla Ohjelmoinnin ja laskennan perusmallit Chomskyn hierarkia Noam Chomskyn vuonna 1956 esittämä luokittelu kieliopeille niiden ilmaisuvoiman mukaan tyyppi kieli kielioppi tunnistaminen 0 rekurs. lueteltava rajoittamaton Turingin kone 1 kontekstinen

Lisätiedot

Tietotekniikan valintakoe

Tietotekniikan valintakoe Jyväskylän yliopisto Tietotekniikan laitos Tietotekniikan valintakoe 2..22 Vastaa kahteen seuraavista kolmesta tehtävästä. Kukin tehtävä arvostellaan kokonaislukuasteikolla - 25. Jos vastaat useampaan

Lisätiedot

Täydentäviä muistiinpanoja jäsennysalgoritmeista

Täydentäviä muistiinpanoja jäsennysalgoritmeista äydentäviä muistiinpanoja jäsennysalgoritmeista Antti-Juhani Kaijanaho 7. helmikuuta 2012 1 simerkki arleyn algoritmin soveltamisesta arkastellaan kielioppia G : + () c ja sovelletaan arleyn algoritmia

Lisätiedot

LR-jäsennys. Antti-Juhani Kaijanaho. 3. lokakuuta 2016

LR-jäsennys. Antti-Juhani Kaijanaho. 3. lokakuuta 2016 LR-jäsennys Antti-Juhani Kaijanaho 3. lokakuuta 2016 Tämä lisämoniste esittelee Yaccin, CUPin ja muiden vastaavien ohjelmien käyttämän LR-jäsennysmenetelmäperheen. Se ei kuulu kurssin koealueeseen. Tehtävänä

Lisätiedot

Rekursiiviset palautukset [HMU 9.3.1]

Rekursiiviset palautukset [HMU 9.3.1] Rekursiiviset palautukset [HMU 9.3.1] Yleisesti sanomme, että ongelma P voidaan palauttaa ongelmaan Q, jos mistä tahansa ongelmalle Q annetusta ratkaisualgoritmista voidaan jotenkin muodostaa ongelmalle

Lisätiedot

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

Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna. q 0 x solmuina laskennan mahdolliset tilanteet juurena alkutilanne lehtinä tilanteet joista ei siirtymää,

Lisätiedot

1. Universaaleja laskennan malleja

1. Universaaleja laskennan malleja 1. Universaaleja laskennan malleja Esimerkkinä universaalista laskennan mallista tarkastellaan Turingin konetta muunnelmineen. Lyhyesti esitellään myös muita malleja. Tämän luvun jälkeen opiskelija tuntee

Lisätiedot

Algoritmin määritelmä [Sipser luku 3.3]

Algoritmin määritelmä [Sipser luku 3.3] Algoritmin määritelmä [Sipser luku 3.3] Mitä algoritmilla yleensä tarkoitetaan periaatteessa: yksiselitteisesti kuvattu jono (tietojenkäsittely)operaatioita, jotka voidaan toteuttaa mekaanisesti käytännössä:

Lisätiedot

jäsentämisestä TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 27. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

jäsentämisestä TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 27. marraskuuta 2015 TIETOTEKNIIKAN LAITOS TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 27. marraskuuta 2015 Sisällys Rekursiivisesti etenevä engl. recursive descent parsing Tehdään kustakin välikesymbolista

Lisätiedot

Kontekstittomien kielten jäsentäminen Täydentäviä muistiinpanoja TIEA241 Automaatit ja kieliopit, syksy 2016

Kontekstittomien kielten jäsentäminen Täydentäviä muistiinpanoja TIEA241 Automaatit ja kieliopit, syksy 2016 Kontekstittomien kielten jäsentäminen äydentäviä muistiinpanoja IA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 19. lokakuuta 2016 1 Yksiselitteiset operaattorikieliopit 1.1 Aritmeettiset

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 16. helmikuuta 2012 TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 16. helmikuuta 2012 Sisällys t Sisällys t Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti

Lisätiedot

Jäsennys. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Jäsennys. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Jäsennys TIEA341 Funktio ohjelmointi 1 Syksy 2005 Muistutus: Laskutehtävä ja tulos data Laskutehtava = Luku Double Yhteen Laskutehtava Laskutehtava Vahennys Laskutehtava Laskutehtava Tulo Laskutehtava

Lisätiedot

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016 ICS-C2000 Tietojenkäsittelyteoria Kevät 206 Kierros 0, 2. 24. maaliskuuta Huom! Perjantaina 25. maaliskuuta ei ole laskareita (pitkäperjantai), käykää vapaasti valitsemassanne ryhmässä aiemmin viikolla.

Lisätiedot

Formalisoimme nyt edellä kuvatun laskennan.

Formalisoimme nyt edellä kuvatun laskennan. Formalisoimme nyt edellä kuvatun laskennan. Jos M = (Q, Σ, δ, q, F ) on äärellinen automaatti ja w = w... w n on n merkkiä pitkä aakkoston Σ merkkijono, niin automaatti M hyväksyy merkkijonon w, jos on

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016 TIEA24 Automaatit ja kieliopit, syksy 206 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 9. lokakuuta 206 Sisällys Kolme laskennan mallia kuvitteellisia (abstrakteja) koneita eli automaatteja lukevat syötteen

Lisätiedot

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

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A. Tehtävä. Tämä tehtävä on aineistotehtävä, jossa esitetään ensin tehtävän teoria. Sen jälkeen esitetään neljä kysymystä, joissa tätä teoriaa pitää soveltaa. Mitään aikaisempaa tehtävän aihepiirin tuntemusta

Lisätiedot

Säännöllisen kielen tunnistavat Turingin koneet

Säännöllisen kielen tunnistavat Turingin koneet 186 Säännöllisen kielen tunnistavat Turingin koneet Myös säännöllisen kielen hyväksyvien Turingin koneiden tunnistaminen voidaan osoittaa ratkeamattomaksi palauttamalla universaalikielen tunnistaminen

Lisätiedot

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

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,

Lisätiedot

Täydentäviä muistiinpanoja kontekstittomien kielioppien jäsentämisestä

Täydentäviä muistiinpanoja kontekstittomien kielioppien jäsentämisestä Täydentäviä muistiinpanoja kontekstittomien kielioppien jäsentämisestä Antti-Juhani Kaijanaho 30. marraskuuta 2015 1 Yksiselitteiset operaattorikieliopit 1.1 Aritmeettiset lausekkeet Tällä kurssilla on

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 20. lokakuuta 2016 .. TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 20. lokakuuta 2016 Sisällys. Turingin koneiden pysähtymisongelma. Lause Päätösongelma Pysähtyykö standardimallinen

Lisätiedot