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

Samankaltaiset tiedostot
Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

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

formalismeja TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 15. joulukuuta 2015 TIETOTEKNIIKAN LAITOS

Pinoautomaatit. Pois kontekstittomuudesta

Rajoittamattomat kieliopit

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

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

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

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

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

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

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

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

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

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

Chomskyn hierarkia ja yhteysherkät kieliopit

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

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

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

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

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

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

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

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

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

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

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

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

Täydentäviä muistiinpanoja laskennan rajoista

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Muita universaaleja laskennan malleja

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

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

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

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

1. Universaaleja laskennan malleja

Lisää pysähtymisaiheisia ongelmia

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

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

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

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

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

Rajoittamattomat kieliopit (Unrestricted Grammars)

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

Attribuuttikieliopit

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

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

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

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

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

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

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

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

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

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

Rekursiiviset palautukset [HMU 9.3.1]

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

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

Yhteydettömän kieliopin jäsennysongelma

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

5.3 Ratkeavia ongelmia

Tietojenkäsittelyteorian alkeet, osa 2

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

Turingin koneen laajennuksia

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

TIES542 kevät 2009 Aliohjelmien formalisointia lambda-kieli

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

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

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

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

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

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

Automaatit. Muodolliset kielet

Algoritmin määritelmä [Sipser luku 3.3]

Säännöllisen kielen tunnistavat Turingin koneet

Säännöllisten kielten sulkeumaominaisuudet

Entscheidungsproblem

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

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

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

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

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

1. Universaaleja laskennan malleja

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

Entscheidungsproblem

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

ICS-C2000 Tietojenkäsittelyteoria

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

Täydentäviä muistiinpanoja jäsennysalgoritmeista

Yhteydettömät kieliopit [Sipser luku 2.1]

Ydin-Haskell Tiivismoniste

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

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

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

S BAB ABA A aas bba B bbs c

ICS-C2000 Tietojenkäsittelyteoria

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

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

ongelma A voidaan ratkaista ongelman B avulla, joten jossain mielessä

Transkriptio:

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) tietokoneen teoreettinen malli kuten Turingin koneessa, myös RAM:ssa ohjelma on kovakoodattu itse koneeseen on myös universaalikonetta vastaava variantti, engl. random-access stored-program machine (RASP) Hajasaantikone koostuu syötenauhasta, jota se ei kykene muuttamaan tulostenauhasta, jota se ei kykene lukemaan muistipaikoista, joilla kullakin on osoite muistipaikka tallentaa mielivaltaisen kokonaisluvun kiinteästä ohjelmasta, joka on jono käskyjä Kullakin käskyllä on järjestysnumero, ensimmäinen on 0. Käskyt koostuvat neljästä kentästä, joista ensimmäinen on operaattori ja kolme muuta ovat operandeja. Operandien tulkinta vaihtelee operaattoreittain; kaikkia operandeja ei aina käytetä.

Hajasaantikoneen käskyt READ r lukee syötteestä seuraavan merkin ja tallettaa sen muistipaikkaan r WRITE r kirjoittaa tulosteen loppuun merkin, joka löytyy muistipaikasta r JGT l r hyppää käskyyn numero l, jos muistipaikan r sisältö on suurempi kuin nolla CONST r 1 c kirjoittaa muistipaikkaan r 1 kokonaislukuvakion c LOAD r 1 r 2 kirjoittaa muistipaikkaan r 1 sen muistipaikan sisällön, jonka osoite löytyy muistipaikasta r 2 STORE r 1 r 2 kirjoittaa muistipaikan r 1 sisällön siihen muistipaikkaan, jonka osoite löytyy muistipaikasta r 2 ADD r 1 r 2 r 3 laskee muistipaikkojen r 2 ja r 3 sisältöjen summan ja tallettaa tuloksen muistipaikkaan r 1 SUB r 1 r 2 r 3 laskee muistipaikkojen r 2 ja r 3 sisältöjen erotuksen ja tallettaa tuloksen muistipaikkaan r 1

Hajasaantikoneen toiminta Lähtötilanteessa syötenauhan lukupää on nauhan alussa tulostenauhan kirjoituspää on nauhan alussa kaikki muistipaikat on alustettu nolliksi suoritettavaksi tulee käsky numero 0 Kone siirtyy käskyn suorituksen jälkeen järjestysnumeroltaan seuraavaan käskyyn, jos käsky ei aiheuta hyppyä. Kone pysähtyy jos käskyjonon viimeinen käsky ei aiheuta hyppyä JGT yrittää hypätä käskyyn, jota ei ole LOAD tai STORE löytää muistipaikaista osoitteen, joka ei vastaa mitään muistipaikkaa

Esimerkkiohjelma 1 0 CONST r 1 1 1 CONST r 2 2 2 READ r 10 3 SUB r 5 r 1 r 10 4 JGT 13 r 5 5 SUB r 5 r 10 r 1 6 JGT 9 r 5 7 ADD r 11 r 11 r 1 8 JGT 2 r 1 9 SUB r 5 r 10 r 2 10 JGT 13 r 5 11 SUB r 11 r 11 r 1 12 JGT 2 r 1 13 JGT 18 r 11 14 SUB r 5 r 0 r 11 15 JGT 18 r 5 16 WRITE r 1 17 JGT 19 r 1 18 WRITE r 2 1 Oikeastaan r i :n sijalla pitäisi lukea i, mutta näin se on ehkä selkeämpi luettava. Vaakaviivat osoittavat ns. peruslohkojen (engl. basic block) rajat.

RAM formaalisti Määritelmä Viisikko M = (I, Σ, Γ, σ, γ) on hajasaantikone (engl. random-access machine), jos seuraavat pätevät: Σ ja Γ ovat epätyhjiä, äärellisiä joukkoja (syöte- ja tulostemerkistöt) σ : Σ {1,..., Σ } on bijektio (syötemerkistön koodaus) γ : {1,..., Γ } Γ on bijektio (tulostemerkistön koodaus) I = (I 0,..., I n 1 ) on epätyhjä, äärellinen jono (ohjelma), jossa kaikilla i = 0,..., n pätee I i C N N N, jossa C = {READ, WRITE, JGT, CONST, LOAD, STORE, ADD, SUB}.

RAM:n tilanteet Määritelmä Olkoon M = (I, Σ, Γ, σ, γ) RAM, jossa I = (I 0,..., n 1). Sen tilanne on nelikko (v, k, m, w), jossa v Σ on jäljellä oleva syöte k {0,..., n 1} on seuraavan käskyn järjestysnumero m : N Z on koneen muistin tila 2 w Γ on syntynyt tuloste Alkutilanne syötteellä v Γ on (v, 0,, ε). 2 Tämä usein esitetään luettelemalla nollasta eroavat muistipaikat arvoineen: esim. m = {(0, 1), (1, 2)}.

RAM:n toiminta RAM:n toiminta määritellään antamalla tilanteiden välinen relaatio. 3 (cv, k, m, w) (v, k + 1, m {(r 1, σ(c))}, w) kun I k = READ r 1 (ε, k, m, w) (v, k + 1, m {(r 1, 0)}, w) kun I k = READ r 1 (v, k, m, w) (v, k + 1, m, wc) kun I k = WRITE r 1 c = γ(m(r 1 )) (v, k, m, w) (v, k + 1, m, w) kun I k = JGT l r m(r) 0 (v, k, m, w) (v, l, m, w) kun I k = JGT l r m(r) > 0 (v, k, m, w) (v, k + 1, m {(r, C)}, w) kun I k = CONST r C (v, k, m, w) (v, k + 1, m {(r 1, m(r 2 ))}, w) kun I k = LOAD r 1 r 2 (v, k, m, w) (v, k + 1, m {(m(r 2 ), r 1 )}, w) kun I k = STORE r 1 r 2 (v, k, m, w) (v, k + 1, m {(r 1, m(r 2 ) + m(r 3 ))}, w) kun I k = ADD r 1 r 2 r 3 (v, k, m, w) (v, k + 1, m {(r 1, m(r 2 ) m(r 3 ))}, w) kun I k = ADD r 1 r 2 r 3 Relaatio määritellään tavanomaiseen tapaan. 3 Operaattoria käytetään muistifunktion muuttamiseen: (f S)(x) = { y f (x) jos (x, y) S muuten

RAM tunnistimena Määritelmä RAM M = (I, Σ, {Y, N}, σ, γ) hyväksyy merkkijonon w Σ, jos (v, 0,, ε) (v, 0, m, Y) pätee. RAM M = (I, Σ, {Y, N}, σ, γ) hylkää merkkijonon w Σ, jos (v, 0,, ε) (v, 0, m, N) pätee. RAM M tunnistaa kielen L(M) = { v Σ M hyväksyy v:n } Jos RAM M tunnistaa kielen A ja jokaiselle syötemerkkijonolle joko hyväksyy tai hylkää sen, niin M ratkaisee kielen A.

RAM:n ilmaisuvoima Lause Olkoon A mielivaltainen kieli. 1. On olemassa Turingin kone, joka tunnistaa A:n, jos ja vain jos on olemassa RAM, joka tunnistaa A:n. 2. On olemassa Turingin kone, joka ratkaisee A:n, jos ja vain jos on olemassa RAM, joka ratkaisee A:n. Todistus Sivuutetaan.

Sisällys

Kieli laskentasääntöineen, joka kuvaa funktioiden rakentamista ja kutsumista eikä mitään muuta. λxe tarkoittaa lauseketta E tulkittuna x:n funktioksi. λxx on identiteettifunktio λxc on vakiofunktio, jonka arvo on aina c fx tarkoittaa funktion f kutsua argumentilla x (λxx)c saa arvokseen c puhtaassa lambda-laskennossa ei ole mitään muuta, käytännössä yleensä laajennetaan esim. aritmetiikalla

Lambdakieli Määritelmä Lambdakieli on kontekstiton kieli, jonka voi kuvata seuraavalla kontekstittomalla kieliopilla: T X T TT T λxt T (T) X x X X (applikaatio) (abstraktio) Välikemerkin T merkkijonot ovat termejä määritellään T = { w T w} ja välikemerkin X merkkijonot ovat muuttujia määritellään X = { w X w}. Päätemerkit ovat x,, (, ), λ.

Vapaat ja sidotut muuttujat Abstraktio λxt sitoo (engl. binds) muuttujan x. Muuttuja esiintyy vapaana (engl. occurs free) lambdatermissä, jos ainakin sen yksi esiintymä ei ole sitä sitovan abstraktion sisällä.

Korvaus Määritellään korvausoperaattori t[x := u], missä t, u T ja x X, siten, että tuloksena on t muutettuna niin, että jokainen x:n vapaa esiintymä korvataan u:lla. Täsmällinen määritelmä on sotkuinen ja siksi sivuutetaan.

α- ja β-ekvivalenssit t ja u ovat α-ekvivalentit, jos ne eroavat vain sidottujen muuttujien nimissä. Määritellään β-ekvivalenssi = β seuraavasti: (λxt)u = β t[x := u] x = β x t 1 t 2 = β u 1 u 2 jos t 1 = β u 1 ja t 2 = β u 2 λxt = β λxu jos t = β u (t) = β (u) jos t = β u

Church Rosser Määritelmä Lambdatermi on normaalimuodossa, jos se ei sisällä yhtään alitermiä, joka olisi muotoa (λxt)u. Lause (Church Rosser) Jos t = β u ja t = β u pätevät ja sekä u että u ovat normaalimuodossa, niin u ja u ovat α-ekvivalentit.

Suhde Turingin koneisiin Lause (Turing) 1. On olemassa normaalimuotoiset lambdatermit t y ja t n, joille pätee: Jokaiselle standardimalliselle Turingin koneelle M ja sen syötteelle w on olemassa lambdakielinen termi t M,w, jolle pätee t M,w = β t y jos ja vain jos M hyväksyy w:n ja t M,w = β t n jos ja vain jos M hylkää w:n. 2. On olemassa Turingin kone, joka saatuaan syötteenä lambdatermin t pysähtyy niin, että nauhalla on normaalimuotoinen lambdatermi u, jos ja vain jos t = β u pätee. Todistus Sivuutetaan.

Sisällys

Yleinen eli rajoittamaton kielioppi on kontekstittomien kielioppien yleistys. Kuten kontekstittomissa kieliopeissa: välikesymbolien joukko V, päätesymbolien joukko Σ ja aloitussymboli S. Produktiot ovat muotoa ω 1 ω 2 ω 1 (V Σ) + nuolen vasemmallakin puolella saa siis olla mitä vain (paitsi ei tyhjää)! ω 2 (V Σ)

Esimerkki S LT ε T ABCT ABC BA AB CB BC CA AC LA a aa aa ab ab bb bb bc bc cc cc

Lause Kieli on rekursiivisesti lueteltava jos ja vain jos se voidaan tuottaa yleisellä kieliopilla.

Kontekstilliset kieliopit Kontekstillinen (engl. context-sensitive) kielioppi on rajoitettu versio yleisistä kieliopeista Produktiot ovat muotoa ω 1 Aω 3 ω 1 ω 2 ω 3 tai S ε S on aloitussymboli ω 1, ω 3 (V Σ) A V ω 2 (V Σ) + ω 1 ja ω 2 ovat produktion konteksti

Lause Kieli voidaan tuottaa kontekstillisella kieliopilla jos ja vain jos se voidaan tunnistaa sellaisella epädeterministisellä Turingin koneella, joka ei koskaan kirjoita blankomerkin päälle muuta kuin blankomerkin itsensä (ns. lineaarirajoitettu automaatti).