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 h1 334 1 33 101 h2 168 2 26 67 h3 125 0 27 57 h4 178 0 14 55 h5 63 0 4 26 h6 44 2 2 19 h7 37 4 1 22 h8 15 1 2 11 h9 10 8 2 15 h10 22 11 2 16 h11 8 7 1 8 h12 4 0 0 3 h13 13 9 1 9 h14 8 6 0 12
Harjoitustehtävätilastoa Tilanne 13.10.2016 klo 9:42 Tehty vähintään Opiskelijoita 20 % 46 40 % 8 60 % 4 80 % 1 Viikko Palauttaneita opiskelijoita 2016 2015 1 5. 11.9. 79 59 12. 18.9. 61 53 19. 25.9. 52 48 26.9. 2.10. 48 41 3. 9.10. 35 30 10. 16.10. 26 24 1 Vuoden 2015 data on demorukseja vastaavalla kurssiviikolla.
Moniraitainen TM k-raitainen Turingin kone (k 1) on Turingin kone, jonka nauhan lokeroissa on k nauhamerkkiä (järjestettynä jonona) kussakin ja joka lukee tai kirjoittaa kaikki k merkkiä samanaikaisesti. Käynnistettäessä syöte on ensimmäisellä raidalla, muut raidat ovat tyhjiä. Erikoistapaus k = 1 on standardimuotoinen TM. Simulointi standardimuotoisella TM:llä on lähes triviaalia: jos Γ 1,..., Γ k on k-raitaisen TM:n raitakohtaiset nauhamerkistöt, simuloivan koneen nauhamerkistö on (Γ 1 Γ k ) Γ 1. Syöte pitää toki kopioida nauhalta ensimmäiseen raitaan ennen simuloinnin alkua. Moniraitainen TM on siis yhtä vahva kuin standardimuotoinen TM.
Moninauhainen TM k-nauhainen Turingin kone (k 1) on Turingin kone, jossa on k toisistaan riippumatonta nauhaa. Lukupäitä ei ole pakko liikuttaa siirtymässä. Erikoistapaus k = 1 on standardimuotoinen TM. Voidaan simuloida esimerkiksi 2k-raitaisella Turingin koneella, jossa raita 2i sisältää nauhan i sisällön ja jossa raita 2i + 1 sisältää merkin, joka kertoo, missä kohtaa nauhan i lukupää on. Moninauhainen TM on siis yhtä vahva kuin moniraitainen TM ja siis kuin standardimuotoinen TM.
Epädeterministinen TM Epädeterministinen Turingin kone on yksinauhainen ja yksiraitainen Turingin kone, jossa sallitaan useampi kuin yksi siirtymä samasta tilasta samalla nauhamerkillä. Jos on mahdollista valita siirtymät siten, että laskenta päättyy hyväksyvään tilaan, epädeterministinen Turingin kone hyväksyy syötteen. Standardimuotoinen TM on epädeterministisen TM:n erikoistapaus. Mitä luulet? Voidaanko epädeterminististä TM:ää simuloida standardimuotoisella TM:llä?
Epädeterministisen TM:n rakenne Määritelmä Seitsikko M = (Q, Σ, Γ,, δ, q 0, F) on epädeterministinen Turingin kone (NTM) (engl. nondeterministic Turing machine), jos siirtymäfunktiolle pätee δ : Q Γ P(Q Γ {L, S, R}), jos M täyttää muilta osin standardimuotoisen TM:n määritelmän.
Epädeterministisen TM:n käyttäytyminen Tilanteet ja niiden samuus määritellään kuten standardimuotoiselle TM:lle. Määritellään tilanteiden välinen relaatio seuraavasti: wqcv wq c v jos δ(q, c) (q, c, S) wqcv wc q v jos δ(q, c) (q, c, R) wdqcv wq dc v jos δ(q, c) (q, c, L) Määritellään lisäksi normaaliin tapaan.
Epädeterministisen TM:n lopputulokset M pysähtyy tilajoukkoon { q Q v, u Γ, c Γ : q 0 w vqcu δ(q, c) = } syötteellä w Σ. M hyväksyy syötteen jos se pysähtyy tilajoukkoon Q ja Q F =. M hylkää syötteen jos se pysähtyy epätyhjään tilajoukkoon Q ja Q F =. M tunnistaa (engl. recognizes) kielen { u Σ M hyväksyy u:n } M ratkaisee (engl. decides) kielen A Σ, jos se tunnistaa A:n ja pysähtyy epätyhjään tilajoukkoon kaikilla syötteillä.
Epädeterminismin simulointi Olkoon Q simuloitavan koneen tilojen joukko, Γ sen nauhamerkistö ja δ sen siirtymäfunktio. Olkoon n = max δ(q, c). q Q,c Γ Laaditaan kaikille i = 0,..., n 1 funktiot δ i siten, että kaikilla q Q, c Γ pätee δ(q, c) = n 1 i=0 δ i (q, c) ja kaikilla i = 0,..., n 1 pätee δ i (q, c) 1. Simuloiva TM on kolminauhainen. Ensimmäisellä pidetään syötettä. Toisella simuloidaan simuloitavan koneen nauhaa, alussa tyhjä. Kolmannella pidetään kirjaa tehtävistä valinnoista, alussa tyhjä.
Simuloivan koneen tilat Jokaista simuloitavan koneen tilaa vastaa jokin tietty simuloivan koneen tila. Lisäksi simuloivassa koneessa on aputiloja seuraavalla kalvolla esitettävän käyttäytymisen toteuttamiseksi. Simuloitavan koneen alku- ja lopputilat eivät ole simuloivan koneen alku- ja lopputiloja.
Simuloivan koneen toiminta 1. Kopioi ensimmäinen nauha toiselle nauhalle. 2. Siirrä kaikkien nauhojen lukupää nauhan alkuun. 3. Siirry simuloitavan automaatin alkutilaan. 4. Olkoon q automaatin nykyinen tila, c toisen nauhan lukupään kohdalla oleva merkki ja i kolmannen nauhan lukupään kohdalla oleva merkki. Jos i =, niin tee tilasiirtymä δ i (q, c) ja siirrä kolmannen nauhan lukupäätä yksi askel oikealle; jos siirtymä onnistui, suorita tämä askel uudestaan. 5. Jos ollaan simuloitavan koneen hyväksyvässä tilassa, siirry simuloivan koneen hyväksyvään tilaan. 6. Olkoon w kolmannen nauhan sisältö blankomerkit pois lukien. Kirjoita kolmannelle nauhalle sanakirjajärjestyksessä w:tä seuraava merkistön {0,..., n 1} merkkijono. 7. Tyhjennä toinen nauha ja hyppää askeleeseen 1.
Huomioita Epädeterministiset TM:t kykenevät siten tunnistamaan samat kielet kuin standardimuotoiset TM:t. Harjoitustehtäväksi jää osoittaa, että epädeterministiset TM:t kykenevät ratkaisemaan samat kielet kuin standardimuotoiset TM:t. Koska TM:n variantit ovat yleensä yhtä vahvoja kuin standardimuotoinen TM, ei ole väliä, mitä TM:n varianttia käytetään. Harjoitustehtäväksi: osoita, että jokaiselle yleiselle kieliopille on olemassa NTM, joka tunnistaa sen kielen Näin ollen: TM:n tunnistamat kielet ovat laskettavasti lueteltavia
While-kieli Määritelmä While-kielen ohjelmat noudattavat seuraavaa kontekstitonta kielioppia: S ε S S S x := E; x := read; write E; S if B {S} while B {S} B E = E E E E < E E E E > E B B B B B (B) E E + E E E c x (E) missä x on mielivaltaista muuttujannimeä ja c mielivaltaista kokonaislukuvakiota edustava päätemerkki.
Semanttisia huomioita Sivuutetaan tässä tarkka merkitysopin määrittely. Muuttujat sisältävät kokonaislukuja; lukualue ei ole rajattu. read lukee syötteestä yhden merkin, ja tallettaa sen koodin muuttujaan. Nolla tarkoittaa syötteen loppua write kirjoittaa tulosteeseen yhden merkin sen, jonka koodi on lausekkeen arvo. Jos lausekkeen arvo ei ole minkään merkin koodi, lause ei tee mitään. Ohjelma pysähtyy, kun ohjelman viimeinen lause on tullut loppuun suoritettua. Ohjelma tunnistimena: tulostetaan Y tai N ja pysähdytään. 2 2 Y ja N voisivat olla mikä tahansa muukin merkkipari. Olennaista on, että sovitaan, mitkä merkit tarkoittavat mitäkin.
While-ohjelmat ja Turingin koneet Huomaa Mikä tahansa tietokoneohjelma, joka laskee matemaattisen funktion, on periaatteessa esitettävissä myös while-kielellä. Lause Jokaiselle Turingin koneelle on olemassa while-kielinen ohjelma, joka tunnistaa saman kielen ja pysähtyy samoilla syötteillä. Vastaavasti jokaiselle while-kieliselle ohjelmalle on olemassa Turingin kone, joka tunnistaa saman kielen ja pysähtyy samoilla syötteillä. Todistus Tarkastellaan ideatasolla taululla, tarkka todistus sivuutetaan.
For-kieli Jos while-kielestä poistetaan while-lause ja sen tilalle laitetaan rajoitettu for-silmukka S for E {S} jonka toistokertojen määrä luetaan (silmukan suorituksen alkaessa) lausekkeen arvosta, saadaan for-kieli. Jokainen for-kielinen ohjelma voidaan muuntaa while-kieliseksi ohjelmaksi. On olemassa while-kielisiä ohjelmia, joita ei voi esittää for-kielellä!