Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

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

Turingin koneen laajennuksia

1. Universaaleja laskennan malleja

Rajoittamattomat kieliopit

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

Lisää pysähtymisaiheisia ongelmia

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

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

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

Rekursiiviset palautukset [HMU 9.3.1]

Säännöllisen kielen tunnistavat Turingin koneet

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

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

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

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

3. Turingin koneet. osaa esittää yksinkertaisia algoritmeja täsmällisesti käyttäen Turingin konetta ja sen muunnelmia

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

1. Universaaleja laskennan malleja

Täydentäviä muistiinpanoja laskennan rajoista

5.3 Ratkeavia ongelmia

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

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

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

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

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

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

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

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

Yhteydettömän kieliopin jäsennysongelma

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

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

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

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

Chomskyn hierarkia ja yhteysherkät kieliopit

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

2. Laskettavuusteoriaa

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

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

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

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

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

Rajoittamattomat kieliopit (Unrestricted Grammars)

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

Algoritmin määritelmä [Sipser luku 3.3]

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

Säännöllisten kielten sulkeumaominaisuudet

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

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

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

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

2. Laskettavuusteoriaa

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

Pinoautomaatit. Pois kontekstittomuudesta

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

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

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

Automaatit. Muodolliset kielet

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

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

3. Laskennan vaativuusteoriaa

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

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

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

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?

Formalisoimme nyt edellä kuvatun laskennan.

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

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

Kertausta 1. kurssikokeeseen

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

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

7. Aikavaativuus. Ohjelmistotekniikan laitos OHJ-2300 Johdatus tietojenkäsittelyteoriaan, syksy

ICS-C2000 Tietojenkäsittelyteoria

Ratkeavuus ja efektiivinen numeroituvuus

Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

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

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

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

Tietotekniikan valintakoe

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

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Todennäköisyyslaskenta I, kesä 2017 Helsingin yliopisto/avoin Yliopisto Harjoitus 1, ratkaisuehdotukset

C C. x 2. x 3 x 3. Lause 3SAT p m VC Todistus. Olk. φ = C 1 C 2 C m 3-cnf-kaava, jossa esiintyvät muuttujat. φ toteutuva:

Muodolliset kieliopit

ICS-C2000 Tietojenkäsittelyteoria

Muita vaativuusluokkia

Muita universaaleja laskennan malleja

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

Output. Input Automaton

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

6.1 Rekursiiviset palautukset

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

S BAB ABA A aas bba B bbs c

1. Esitä rekursiivinen määritelmä lukujonolle

Lause (Cook-Levin) Kieli SAT = { on toteutuva lausekalkyylin kaava } on NP-täydellinen.

ICS-C2000 Tietojenkäsittelyteoria


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

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Transkriptio:

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 syötteellä 001001: q 0001001 aq 101001 a0q 11001 a01q 1001 a010q 101 a0100q 11 a01001q 1 a0100q 21 a010q 30B a01q 400B a0q 4100B aq 40100B q 4a0100B aq 00100B aaq 1100B aa1q 100B aa10q 10B aa100q 1B aa10q 20B aa1q 30AB aaq 410AB aq 4a10AB aaq 010AB aabq 10AB aab0q 1AB aabq 20AB aaq 3bAAB aabq 5AAB aabaq 5AB aabaaq 5B aabaabq 5 aabaaq 6B aabaq 9AX aabq 9AAX aaq 9bAAX aaxq 10AAX aaxaq 8AX aaxaaq 8X aaxaq 6AX aaxq 7AXX aaq 7XAXX aq 7aXAXX axq 10XAXX axxq 10AXX axxaq 8XX axxq 6AXX axq 7XXXX aq 7XXXXX q 7aXXXXX Xq 10XXXXX XXq 10XXXX XXXq 10XXX XXXXq 10XX XXXXXq 10X XXXXXXq 10 XXXXXX q acc Turingin koneen laskenta syötteellä 101001: q 0101001 bq 101001 b0q 11001 b01q 1001 b010q 101 b0100q 11 b01001q 1 b0100q 21 b010q 30B b01q 400B b0q 4100B bq 40100B q 4b0100B bq 00100B baq 1100B ba1q 100B ba10q 10B ba100q 1B ba10q 20B ba1q 30AB baq 410AB bq 4a10AB baq 010AB babq 10AB bab0q 1AB babq 20AB baq 3bAAB babq 5AAB babaq 5AB babaaq 5B babaabq 5 babaaq 6B babaq 9AX babq 9AAX baq 9bAAX baxq 10AAX baxaq 8AX baxaaq 8X baxaq 6AX baxq 7AXX baq 7XAXX bq 7aXAXX bxq 10XAXX bxxq 10AXX bxxaq 8XX bxxq 6AXX bxq 7XXXX bq 7XXXXX q 7bXXXXX Kaaviossa ei ole siirtymää tilasta q 7 merkillä b, joten automaatti hylkää merkkijonon. 1

2. Kielen { a i b j c i d j i, k N } tunnistava Turingin kone: a, b, X R c X, L a, b, X, Y L R a, R d Y, L b, R b, X, Y R R X R Y R acc R Y R X R Y R R 3. Kielen { a n b n c n n N } tunnistava kaksinauhainen Turingin kone: [ a, R X, R [ [ b, R c, R X X, L X, R [ [ b b c c, L, R [ a a, R [ [ acc 2

4. Perusidea on simuloida Turingin konetta jonoautomaatilla siten, että Turingin koneen tilannetta u 1... u n qv 1... v m, missä u i, v i Γ, vastaa jonon sisältö v 1 v 2... v m $u 1 u 2... u n, missä $ on uusi symboli. Jonossa ovat siis ensin Turingin koneen nauhalla nauhapäästä oikealle olevat merkit v i, sitten erotinmerkki $ ja lopuksi nauhan alussa olevat merkit u i. Turingin koneen tilaa säilytetään osana jonoautomaatin tilaa. Nauhapään siirtyminen oikealle on helppo toteuttaa: jos δ(q, v 1 ) = (r, b, R), niin niin poimitaan jonon kärjestä v 1 ja painetaan loppuun b, jolloin saadaan tilannetta u 1... u n bq v 2... v m, kuvaava jono v 2... v m $u 1... u n b. Nauhapään siirtäminen vasemmalle on hieman hankalampaa. Toteutuksen helpottamiseksi ajatellaan, että jonoautomaatissa on kaksi rekisteriä Head ja Tail, jotka kumpikin voivat sisältää yhden nauhasymbolin. Koska tässä tarvitaan vain kiinteä äärellinen määrä muistia (tarkemmin 2 log 2 Γ bittiä), se voidaan toteuttaa äärellisen tilajoukon avulla. (Asetetaan uudeksi tilajoukoksi Q Γ Γ, jolloin tila (q, h, t) esittää alkuperäisen automaatin tilaa q siten, että Head = h ja Tail = t.) Turingin koneen tilanne u 1... u n qv 1... v m esitetään nyt laittamalla jonoon v 2... v m $u 1... u n 1 ja asettamalla Head = v 1 ja Tail = u n. Turingin koneen siirtymä tilasta q simuloidaan nyt Olkoon h = Head, t = Tail ja δ(q, h) = (r, b, D). Jos D = R, toimitaan suoraviivaisesti edellä esitetyn idean mukaan: (a) simulaation uusi tila on r (b) Head := Dequeue (c) Enqueue(t) (d) Tail := b Ylläoleva olettaa, että h $. Jos h = $ eli simuloitava Turingin kone on nauhan käytetyn osuuden lopussa, menetellään hieman toisin. Oletetaan δ(q, ) = (r, b, R). (a) simulaation uusi tila on r (b) Enqueue(t) (c) Tail := b Siis rekisterin Head sisältönä pysyy $, joka tulkitaan tyhjämerkiksi. Tapaus D = L edellyttää jonon siirtämistä yksi askel takaisinpäin, mikä toteutetaan pyörittämällä sitä l 1 askelta eteenpäin, missä l on jonon pituus. Siis uusi tila on r, ja jonoa päivitetään (a) Head := b (b) Merkkaa rekisterissä Tail oleva symboli (ts. aseta Tail := ˆt, missä ˆt on aakkostoon lisätty merkattu t ). (c) Toista seuraavaa, kunnes rekisteriin Head tulee merkattu symboli: Enqueue(Tail) Tail := Head Head := Dequeue. Poista merkkaus. Nyt siis vanha Tail on uusi Head, ja varsinaisen jonon ensimmäinen alkio on aluksi luotu uusi b. Tapauksessa h = $ toimitaan taas hieman toisin. Olkoon δ(q, ) = (r, b, L). Jonoa päivitetään (a) Merkkaa rekisterissä Tail oleva symboli. (b) Enqueue(Tail) (c) Tail := b (d) Toista seuraavaa, kunnes rekisteriin Head tulee merkattu symboli: 3

Enqueue(Tail) Tail := Head Head := Dequeue. Poista merkkaus. 5. (a) Lause: Jos A ja B ovat ratkeavia kieliä, niin myös A B, A B ja A ovat. Todistus: Olkoot M A ja M B ratkaisijoita, joilla L(M A ) = A ja L(M B ) = B. Kieli A B voidaan tunnistaa 2-nauhaisella Turingin koneella M A B, joka syötteellä w toimii i. Kopioi syöte w nauhalle 2. Simuloi koneen M A laskentaa käyttäen nauhaa 2 työnauhana. Jos M A hyväksyisi, niin hyväksy. Jos M A hylkäisi, niin siirry kohtaan 2. ii. Palauta nauhan 2 sisällöksi w (nauhalta 1). Simuloi koneen M B laskentaa käyttäen nauhaa 2 työnauhana. Jos M B hylkäisi, niin hylkää. Jos M B hyväksyisi, niin hyväksy. Koska M A ja M B pysähtyvät kaikilla syötteillä, myös M A B pysähtyy. Lisäksi M A B hyväksyy, jos ja vain jos M A hyväksyy tai M B hyväksyy. Siis M A B ratkaisee kielen A B. Samaan tapaan nähdään, että A B on ratkeava. Muodostetaan kone M A B, joka toimii i. Kopioi syöte w nauhalle 2. Simuloi koneen M A laskentaa käyttäen nauhaa 2 työnauhana. Jos M A hylkäisi, niin hylkää. Jos M A hyväksyisi, niin siirry kohtaan 2. ii. Palauta nauhan 2 sisällöksi w (nauhalta 1). Simuloi koneen M B laskentaa käyttäen nauhaa 2 työnauhana. Jos M B hylkäisi, niin hylkää. Jos M B hyväksyisi, niin hyväksy. Selvästi M A B ratkaisee kielen A B. Muodostetaan koneesta M A kone M A vaihtamalla tiloihin q accept ja q reject menevät siirtymät keskenään. Selvästi M A hyväksyy, jos ja vain jos M A hylkää, ja M A hylkää, jos ja vain jos M A hyväksyy. Koska A pysähtyy kaikilla syötteillä, niin myös M A pysähtyy. Siis M A ratkaisee kielen A. (b) Lause: Jos A ja B ovat Turing-tunnistettavia kieliä, niin myös A B ja A B ovat. Todistus: Olkoot M A ja M B Turingin koneita, joilla L(M A ) = A ja L(M B ) = B. Kieli A B voidaan tunnistaa samalla Turingin koneella M A B kuin edellisessä tehtävässä. Erona edelliseen tehtävään on, että annetulla syötteellä w toinen tai kumpikin koneista A tai B voi jäädä silmukkaan. Tällöin w L(M A B ). Koska toisaalta myös w L(M A ) tai w L(M B ), niin tämä on oikea tulos. Kieli A B voidaan tunnistaa epädeterministisellä Turingin koneella N A B, joka syötteellä w toimii Valitse epädeterministisesti jompi kumpi vaihtoehdoista (a) ja (b): i. Simuloi konetta M A syötteellä w. Jos M A hyväksyisi, niin hyväksy. Jos M A hylkäisi, niin hylkää. ii. Simuloi konetta M B syötteellä w. Jos M B hyväksyisi, niin hyväksy. Jos M B hylkäisi, niin hylkää. Jos w A, niin kone N A B päätyy hyväksymiseen valitsemalla (a). Jos w B, niin kone N A B päätyy hyväksymiseen valitsemalla (b). Jos w A ja w B, niin N A B ei päädy hyväksymiseen kummallakaan valinnalla. Siis L(N A B ) = A B. Muodostetaan toisaalta edellisen tehtävän tapaan koneesta M A kone M ea vaihtamalla tiloihin q accept ja q reject menevät siirtymät keskenään. Jos M A jää syötteellä w silmukkaan, niin myös M ea jää. Tällöin w L(M A ) ja w L(M ea ). Siis L(M ea ) = A pätee vain siinä tapauksessa, että M A pysähtyy kaikilla syötteillä. 6. Luettelijakone voitaisiin määritellä esimerkiksi näin: Luettelijakone on kaksinauhainen Turingin kone, joka liikkuu toisella nauhallaan vain oikealle. Kone voi käyttää ensimmäistä nauhaa vapaasti laskentaan aivan kuten tavallinen Turingin kone. Merkkijonoa w sanotaan koneen luettelemaksi jos jollain hetkellä toisella nauhalla on osamerkkijonona 4

w (merkkijono w ei saa kuitenkaan itse sisältää -merkkiä). Luettelijakoneen luettelema kieli on kaikkien tällaisten merkkijonojen w joukko. Luettelijakone siis kirjoittaa toiselle nauhalleen tyhjämerkeillä eroteltuina kielen merkkijonot. Vaihtoehtoisesti luettelijakone voitaisiin määritellä esimerkiksi myös näin: Luettelijakone on yksinauhainen Turingin kone, jossa on yksi erityinen tila q tulosta. Aina kun nauhalla on merkkijono w ja kone siirtyy tilaan q tulosta, sanotaan koneen on luetelleen merkkijonon w. Koneen luettelema kieli on niiden merkkijonojen joukko, jotka kone luettelee kun se käynnistetään tyhjällä nauhalla eli ilman syötettä. 5