5 Kontekstittomat kielet ja pinoautomaatit
|
|
- Esko Lehtinen
- 8 vuotta sitten
- Katselukertoja:
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
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ätiedotTestaa: 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ätiedotRekursiivinen 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ätiedotYhteydettö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ätiedotRajoittamattomat 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ätiedotYhteydettö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ätiedotPinoautomaatit. 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ätiedotICS-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ätiedotICS-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ätiedotOlkoon 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ätiedotPinoautomaatit. 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ätiedotVasen 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ätiedot2. 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ätiedotT 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ätiedotS 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ätiedotTä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ätiedotLaskennan 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ätiedotM =(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ätiedotPinoautomaatit. 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ätiedotEsimerkki 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ätiedotChomskyn 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ätiedotAutomaatit. 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ätiedot4. 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ätiedotTIEA241 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ätiedotTuringin 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ätiedotHahmon 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ätiedotTIEA241 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ätiedotOsoitamme, 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ätiedot1. 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ätiedotT 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 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ätiedotTIEA241 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ätiedotTIEA241 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ätiedotTIEA241 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ätiedotEi-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ätiedotTIEA241 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ätiedotLaskennan 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ätiedotjä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ätiedotTIEA241 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ätiedotRajoittamattomat 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}.
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
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ätiedot11.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ätiedot815338A 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ätiedotTIEA241 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ätiedotvaihtoehtoja 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ätiedotLaskennan 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ätiedotSää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ätiedotTIEA241 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ätiedotTIEA241 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ätiedot6.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ätiedotTIEA241 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ätiedotJos 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ätiedotTIEA241 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ätiedotTIEA241 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ätiedotTIEA241 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ätiedotICS-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ätiedotTarkastelemme 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ätiedotTIEA241 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ätiedotTIEA241 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ätiedotKertausta 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ätiedotTIEA241 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ätiedotjä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ätiedotM = (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ätiedotTIEA241 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ätiedotTIEA241 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ätiedotMuunnelmia 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ätiedotAttribuuttikieliopit
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ätiedot9.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ätiedotLisää 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ätiedotMuita 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ätiedot5.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ätiedotYllä 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ätiedotTuringin 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ätiedotLaskennan 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ätiedotfollow(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ätiedoton 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ätiedotICS-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ätiedotLaskennan 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ätiedotTIEA241 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ätiedotChomskyn 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ätiedotTietotekniikan 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ätiedotTä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ätiedotLR-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ätiedotRekursiiviset 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ätiedotEpä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ätiedot1. 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ätiedotAlgoritmin 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ätiedotjä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ätiedotKontekstittomien 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ätiedotTIEA241 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ätiedotJä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ätiedotICS-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ätiedotFormalisoimme 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ätiedotTIEA241 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ätiedotSe 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ätiedotSää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ätiedotRekursiolause. 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ätiedotTä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ätiedotTIEA241 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