ICS-C2000 Tietojenkäsittelyteoria

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

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

Turingin koneen laajennuksia

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

1. Universaaleja laskennan malleja

Lisää pysähtymisaiheisia ongelmia

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

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

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

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

5.3 Ratkeavia ongelmia

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

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

Säännöllisen kielen tunnistavat Turingin koneet

ICS-C2000 Tietojenkäsittelyteoria

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

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

Rajoittamattomat kieliopit

1. Universaaleja laskennan malleja

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

Rekursiiviset palautukset [HMU 9.3.1]

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

Output. Input Automaton

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

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

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

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

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

Algoritmin määritelmä [Sipser luku 3.3]

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

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

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

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

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

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

S uay uvaxy uv 2 Ax 2 y... uv i Ax i y uv i wx i y.

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

2. Laskettavuusteoriaa

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

Turingin kone on kuin äärellinen automaatti, jolla on käytössään

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

Rajoittamattomat kieliopit (Unrestricted Grammars)

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

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

Täydentäviä muistiinpanoja laskennan rajoista

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

Automaatit. Muodolliset kielet

Pinoautomaatit. Pois kontekstittomuudesta

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

ICS-C2000 Tietojenkäsittelyteoria

ICS-C2000 Tietojenkäsittelyteoria

2. Laskettavuusteoriaa

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

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

Chomskyn hierarkia ja yhteysherkät kieliopit

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

Yhteydettömän kieliopin jäsennysongelma

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

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

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

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

ICS-C2000 Tietojenkäsittelyteoria 4. TURINGIN KONEET. Turingin koneet

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

Kertausta 1. kurssikokeeseen

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

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

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

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

Laskennan teoria

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

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

Muita universaaleja laskennan malleja

6.1 Rekursiiviset palautukset

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

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

Säännöllisten kielten sulkeumaominaisuudet

Laskennan teoria

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

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

Ratkeavuus ja efektiivinen numeroituvuus

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

Automaattiteoria diskreetin signaalinkäsittelyn perusmallit ja -menetelmät ( diskreettien I/O-kuvausten yleinen teoria)

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

Formalisoimme nyt edellä kuvatun laskennan.

Laskennan teoria

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

S BAB ABA A aas bba B bbs c

Laskennanteoria: Mitä voimmelaskea tietokoneella ja kuinkatehokkaasti?

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

Muita vaativuusluokkia

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

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

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

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:

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

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

Laskennan teoria

8. Kieliopit ja kielet

Transkriptio:

ICS-C2000 Tietojenkäsittelyteoria Luento 8: Turingin koneet Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan laitos Kevät 2016

Alue ja aiheet: Orposen prujun luvut 4.1 4.2, 6.1 Turingin koneiden perusteet Moniuraiset Turingin koneet ja niiden simulointi standardimallisilla koneilla Moninauhaiset Turingin koneet ja niiden simulointi standardimallisilla koneilla Epädeterministiset Turingin koneet ja niiden simulointi deterministisillä Rekursiiviset ja rekursiivisesti numeroituvat kielet 2/60

Turingin koneet 3/60

4. TURINGIN KONEET Alan Turing 1935 36. nauha: T U R I N G nauhapää: q1 q2 ohjausyksikkö: q0 δ Turingin kone on kuin äärellinen automaatti, jolla on käytössään nauha. Mutta kone voi siirtää nauhapäätä sekä oikealle että vasemmalle Samoin se voi paitsi lukea myös kirjoittaa nauhapään kohdalla olevan merkin. Lisäksi nauha on oikealle rajaton. Churchin Turingin teesi Mikä tahansa mekaanisesti ratkeava ongelma voidaan ratkaista Turingin koneella. 4/60

Turingin koneen kanssa ekvivalentteja laskentamalleja: Gödelin Kleenen rekursiivisesti määritellyt funktiot (1936), Churchin λ-kalkyyli (1936), Postin (1936) ja Markovin (1951) merkkijonomuunnossysteemit, kaikki nykyiset ohjelmointikielet (kun muistin määrää ei ole rajattu). Turingin koneet ohjelmointikieli. 5/60

Määritelmä 4.1 Turingin kone on seitsikko missä: M = (Q,Σ,Γ,δ,q 0,q acc,q rej ), Q on koneen tilojen äärellinen joukko; Σ on koneen äärellinen syöteaakkosto; Γ Σ on koneen äärellinen nauha-aakkosto (ol. että, / Γ); δ : (Q {q acc,q rej }) (Γ {, }) Q (Γ {, }) {L,R} on koneen siirtymäfunktio; q 0 Q on koneen alkutila (q 0 q acc ja q 0 q rej ); q acc Q on koneen hyväksyvä ja q rej Q sen hylkäävä lopputila (q rej q acc ). 6/60

Siirtymäfunktion arvon tulkinta: δ(q,a) = (q,b, ) Ollessaan tilassa q ja lukiessaan nauhamerkin (tai alku- tai loppumerkin) a, kone siirtyy tilaan q, kirjoittaa lukemaansa paikkaan merkin b, ja siirtää nauhapäätä yhden merkkipaikan verran suuntaan (L left, R right ). 7/60

Lisäksi sallittuja kirjoitettavia merkkejä ja siirtosuuntia on rajoitettu: Siirtymäfunktion arvo on aina määrittelemätön, kun q = q acc tai q = q rej. Joutuessaan jompaan kumpaan näistä tiloista kone pysähtyy heti. Kaikille siirtymille δ(q,a) = (q,b, ) vaaditaan: jos a =, niin b = ja = R Eli nauhan aloitusmerkkiä ei ylikirjoiteta eikä siirrytä sen vasemmalle puolelle jos b =, niin a = Eli ei kirjoiteta uusia nauhan aloitusmerkkejä jos b =, niin a = ja = L Eli ei kirjoiteta uusia nauhan lopetusmerkkejä (vaan ne tulevat automaattiseti siirryttäessä oikealle nauhan kirjoittamattomaan osaan) 8/60

Koneen tilanne on nelikko (q,u,a,v) Q Γ (Γ {ε}) Γ, missä voi olla a = ε, mikäli myös u = ε tai v = ε. Tulkinta: kone on tilassa q, nauhan sisältö sen alusta nauhapään vasemmalle puolelle on u, nauhapään kohdalla on merkki a ja nauhan sisältö nauhapään oikealta puolelta käytetyn osan loppuun on v. Mahdollisesti on a = ε, jos nauhapää sijaitsee aivan nauhan alussa tai sen käytetyn osan lopussa. Ensimmäisessä tapauksessa ajatellaan, että kone havaitsee merkin ja toisessa tapauksessa merkin. Alkutilanne syötteellä x = a 1 a 2...a n on nelikko (q 0,ε,a 1,a 2...a n ). Tilannetta (q, u, a, v) merkitään yleensä yksinkertaisemmin (q,uav), ja alkutilannetta syötteellä x yksinkertaisesti (q 0,x). 9/60

Tilanne (q,w) johtaa suoraan tilanteeseen (q,w ), merkitään (q,w) M (q,w ), jos jokin seuraavista ehdoista täyttyy: jos δ(q,a) = (q,b,r), niin (q,uacv) M (q,ubcv); jos δ(q,a) = (q,b,l), niin (q,ucav) M (q,ucbv); jos δ(q, ) = (q,,r), niin (q,εcv) M (q,cv); jos δ(q, ) = (q,b,r), niin (q,uε) M (q,ubε); jos δ(q, ) = (q,b,l), niin (q,ucε) M (q,ucb); jos δ(q, ) = (q,,l), niin (q,ucε) M (q,uc). missä q,q Q, u,v Γ, a,b Γ ja c Γ {ε} Tilanteet, jotka ovat muotoa (q acc,w) tai (q rej,w) eivät johda mihinkään muuhun tilanteeseen. Näissä tilanteissa kone pysähtyy. 10/60

Tilanne (q,w) johtaa tilanteeseen (q,w ), merkitään (q,w) M (q,w ), jos on olemassa tilannejono (q 0,w 0 ), (q 1,w 1 ),..., (q n,w n ), n 0, siten että (q,w) = (q 0,w 0 ) M (q 1,w 1 ) M M (q n,w n ) = (q,w ). Turingin kone M hyväksyy merkkijonon x Σ, jos muuten M hylkää x:n. (q 0,x) M (q acc,w) jollakin w Γ ; Koneen M tunnistama kieli on: L(M) = {x Σ (q 0,x) M (q acc,w) jollakin w Γ } 11/60

Esimerkki: Kieli {a 2k k 0} voidaan tunnistaa Turingin koneella M = ({q 0,q 1,q acc,q rej },{a},{a},δ,q 0,q acc,q rej ), missä Kaavioesitys: δ(q 0,a) = (q 1,a,R), δ(q 1,a) = (q 0,a,R), δ(q 0, ) = (q acc,,l), /, L q0 a/a, R a/a, R q1 /, L δ(q 1, ) = (q rej,,l). 12/60

Kaavioesityksessä käytetyt merkinnät: q Tila q q 0 Alkutila Hyväksyvä lopputila (qacc) Hylkäävä lopputila (q rej ) a/b, q q Tilasiirtymä δ(q, a) = (q, b, ) 13/60

a/a, R q0 q1 /, L a/a, R /, L Koneen M laskenta esimerkiksi syötteellä aaa etenee seuraavasti: (q 0,aaa) M (q 1,aaa) M (q 0,aaa) (q 1,aaaε) (q rej,aaa). M M Kone pysähtyy tilassa q rej, joten aaa / L(M). (Huom: koska tämä kone vain siirtyy oikealle ja joko hyväksyy tai hylkää syötteen lopussa, kyseessä on käytännöllisesti katsoen äärellinen automaatti.) 14/60

Esimerkki: (Ei-yhteydettömän) kielen {a k b k c k k 0} tunnistava Turingin kone: /, L a/a, R b/b, R B/B, R C/C, R q 0 a/a, R q 1 b/b, R q 2 a/a, R c/c, L q 4 A/A, R q 3 Selkeyden vuoksi ei koneen hylkäävää lopputilaa q rej ole tässä esitetty eksplisiittisesti. Tulkinta on tällöin, että kaikki kaaviosta puuttuvat kaaret johtavat tähän tilaan. /, L q 5 B/B, R B/B, R C/C, R C/C, L b/b, L B/B, L a/a, L 15/60

Koneen laskenta syötteellä aabbcc: (q 0,aabbcc) (q 1,Aabbcc) (q 1,Aabbcc) (q 2,AaBbcc) (q 2,AaBbcc) (q 3,AaBbCc) (q 3,AaBbCc) (q 3,AaBbCc) (q 3,AaBbCc) (q 4,AaBbCc) (q 1,AABbCc) (q 1,AABbCc) (q 2,AABBCc) (q 2,AABBCc) (q 3,AABBCC) (q 3,AABBCC) (q 3,AABBCC) (q 3,AABBCC) (q 4,AABBCC) (q 5,AABBCC) (q 5,AABBCC) (q 5,AABBCC) (q 5,AABBCCε) (q acc,aabbcc). /, L /, L B/B, R C/C, R a/a, R B/B, R a/a, R b/b, R q0 q1 q2 q5 q4 a/a, R B/B, R A/A, R q3 b/b, R C/C, R c/c, L C/C, L b/b, L B/B, L a/a, L 16/60

Koneen laskenta syötteellä aabcbc: (q 0,aabcbc) (q 1,Aabcbc) (q 1,Aabcbc) (q 2,AaBCbc) (q 3,AaBCbc) (q 3,AaBCbc) /, L (q 3,AaBCbc) (q 4,AaBCbc) (q 1,AABCbc) (q 1,AABCbc) (q rej,aabcbc). /, L B/B, R C/C, R a/a, R B/B, R a/a, R b/b, R q0 q1 q2 q5 q4 a/a, R B/B, R A/A, R q3 b/b, R C/C, R c/c, L C/C, L b/b, L B/B, L a/a, L 17/60

Huom! Tunnistamisessa ei vaadita koneen pysähtymistä hylkäävään tilaan syötteillä, jotka eivät kuulu kieleen. Esimerkki: Turingin kone, joka jää ikuiseen silmukkaan joillakin syötteillä: q1 a/b,r b/a,r b/a,l a/b,l q2 c/c,r acc Laskenta syötteellä abc: (q 1,abc) (q 2,bbc) (q 1,bac) (q 2,aac) (q 1,abc) (q 2,bbc) (q 1,bac) (q 2,aac)... Kone tunnistaa aakkoston {a, b, c} kielen, joka voidaan kuvata säännöllisellä lausekkeella (a b)c(a b c). 18/60

Esimerkki: Turingin kone, joka jää ikuiseen silmukkaan ja käyttää määrättömästi nauhaa joillakin syötteillä: s1 a/b,r b/a,r /a,r s2 b/a,l a/b,l /a,l a/b,r b/a,r /a,r s3 c/c,r acc Laskenta syötteellä a: (q 1,a) (q 2,bε) (q 3,baε) (q 1,baa) (q 2,bba) (q 3,bbbε) (q 1,bbba) (q 2,bbaa) (q 3,bbabε) (q 1,bbaba)... 19/60

Turingin koneiden laajennuksia 20/60

4.2 Turingin koneiden laajennuksia Voitaisiinko saada vielä vahvempia laskennan malleja laajentamalla Turingin koneiden määritelmää uusilla ominaisuuksilla? Voisimme esim. sallia useamman luku/kirjoitusnauhan tai epädeterminismin (kuten äärellisillä automaateilla) Seuraavassa tutustutaan joihinkin tälläisiin laajennuksiin ja... näytetään, että kaikki kielet, jotka laajennetuilla automaateilla pystytään tunnistamaan, voidaan tunnistaa myös alkuperäisillä Turingin koneilla Churchin Turingin teesi Mikä tahansa mekaanisesti ratkeava laskennallinen ongelma voidaan ratkaista Turingin koneella. 21/60

1. Moniuraiset koneet Sallitaan, että Turingin koneen nauha koostuu k:sta rinnakkaisesta urasta, jotka kaikki kone lukee ja kirjoittaa yhdessä laskenta-askeleessa A L A N # M A T H I T U R I N nauhapää: # S G # # O N # # Koneen siirtymäfunktion arvot ovat tällöin muotoa: δ(q,(a 1,...,a k )) = (q,(b 1,...,b k ), ), missä a 1,...,a k ovat urilta 1,...,k luetut merkit, b 1,...,b k niiden tilalle kirjoitettavat merkit, ja {L, R} on nauhapään siirtosuunta. Laskennan aluksi tutkittava syöte sijoitetaan ykkösuran vasempaan laitaan; muille urille tulee sen kohdalle erityisiä tyhjämerkkejä #. 22/60

Formaalisti k-urainen Turingin kone on seitsikko M = (Q,Σ,Γ,δ,q 0,q acc,q rej ), missä muut komponentit ovat kuten standardimallissa, paitsi siirtymäfunktio: δ : (Q {q acc,q rej }) (Γ k {, }) Q (Γ k {, }) {L,R}. Seuraajatilannerelaation M, alkutilan jne. määritelmät ovat pieniä muutoksia lukuunottamatta samanlaiset kuin standardimallissa. 23/60

Esimerkki: 2-urainen Turingin kone rewind, joka kelaa nauhapään nauhan alkuun: (x, y)/(x, y), L /, R q 0 q 1 Lyhennysmerkintä (x,y)/(x,y),l tarkoittaa kaikkia siirtymiä, mitkä saadaan korvaamalla muuttujat x ja y jollakin nauha-aakkosella. 24/60

Esimerkki: 2-urainen Turingin kone succ, joka laskee uralla 1 olevan binäärinumeron (pienin bitti ensin) seuraajan uralle 2: (1, x)/(1, 1), R (0, x)/(0, 0), R (0, x)/(0, 1), R (#, x)/(#, #), R q 0 q 1 q 4 (1, x)/(1, 0), R (0, x)/(0, 1), R (x, y)/(x, #), L q 2 q 3 (#, x)/(#, 1), R (1, x)/(1, 0), R 25/60

Koneen ( laskenta numerolla ) 3 10 = 011 2 (nauhalla pienin bitti ensin): 1 1 0 # q 0, # # # # ( ) 1 1 0 # q 2, 0 # # # ( ) 1 1 0 # q 2, 0 0 # # ( ) 1 1 0 # q 1, 0 0 1 # ( ) 1 1 0 # q 4, ε 0 0 1 # 26/60

Esimerkki: 2-uraisten koneiden succ ja rewind peräkkäin kytkentä: succ rewind ja sama laajennettuna: (1, x)/(1, 1), R (0, x)/(0, 0), R (x, y)/(x, y), L (0, x)/(0, 1), R (#, x)/(#, #), R /, R (1, x)/(1, 0), R (0, x)/(0, 1), R (x, y)/(x, #), L (#, x)/(#, 1), R (1, x)/(1, 0), R 27/60

Lause 4.1 Jos formaali kieli L voidaan tunnistaa k-uraisella Turingin koneella, se voidaan tunnistaa myös standardimallisella Turingin koneella. Todistus Olkoon M = (Q,Σ,Γ,δ,q 0,q acc,q rej ) k-urainen Turingin kone, joka tunnistaa kielen L. Vastaava standardimallinen kone M muodostetaan seuraavasti: M = ( Q,Σ, ˆΓ, ˆδ, ˆq 0,q acc,q rej ), missä Q = Q {ˆq 0, ˆq 1, ˆq 2 }, ˆΓ = Σ Γ k ja kaikilla q Q on ] ] [ a1 [ b1 ˆδ(q,. a k kun ) = (q,. b k, ), δ(q,(a 1,...,a k )) = (q,(b 1,...,b k ), ). 28/60

Koneen M laskennan aluksi täytyy syötejono nostaa ykkösuralle, so. korvata nauhalla merkkijono a 1 a 2...a n merkkijonolla a 1 #. # a 2 #. # Tätä operaatiota varten liitetään M:stä kopioidun siirtymäfunktion osan alkuun vielä pieni esiprosessori : x/ x # #, R x # # a n #. # / x # #., L ˆq 0 /, L ˆq 1 /, R q 0 29/60

2. Moninauhaiset koneet 1. A L A N 2. M A T H I S O N 3. T U R I N G q1 q2 q0 δ Sallitaan, että Turingin koneella on k toisistaan riippumatonta nauhaa, joilla on kullakin oma nauhapäänsä. Kone lukee ja kirjoittaa kaikki nauhat yhdessä laskenta-askelessa. Laskennan aluksi syöte sijoitetaan ykkösnauhan vasempaan laitaan ja kaikki nauhapäät nauhojensa alkuun. 30/60

Tällaisen koneen siirtymäfunktion arvot ovat muotoa δ(q,a 1,...,a k ) = (q,(b 1, 1 ),...,(b k, k )), missä a 1,...,a k ovat nauhoilta 1,...,k luetut merkit, b1,...,b k niiden tilalle kirjoitettavat merkit, ja 1,..., k {L,R,S} nauhapäiden siirtosuunnat (S eli stay ei siirrä lukupäätä). Formaalisti k-nauhainen Turingin kone on seitsikko M = (Q,Σ,Γ,δ,q 0,q acc,q rej ), missä muut komponentit ovat kuten standardimallissa, paitsi siirtymäfunktio: δ : (Q {q acc,q rej }) (Γ {, }) k Q ((Γ {, }) {L,R,S}) k. Seuraajatilannerelaatio ym. peruskäsitteet määritellään pienin muutoksin entiseen tapaan. 31/60

Esimerkki: Kolminauhainen Turingin kone Rew2, joka siirtää toisen nauhan lukupään alkuun (ei tee mitään muille nauhoille): x,z,y/(x,s),(z,l),(y,s) when z rew x,,y/(x,s),(,r),(y,s) acc Tässä x, y ja z ovat jälleen lyhennysmerkintäparametreja ja esim. siirtymä x,z,y/(x,s),(z,l),(y,s) when z kuvaa kaikkia mahdollisia siirtymiä, jotka saadaa korvaamalla x, y ja z millä tahansa nauhaaakkosella (pl. tapaus z = ). 32/60

Esimerkki: Kolminauhainen kone 4Succ2, joka laskee nauhalla 2 olevan ;- terminoidun 4-kantaisen, vähiten merkitsevä numero ensin -esitetyn, luvun seuraajan. Kone tulee käynnistää tilanteessa, jossa nauhan 2 lukupää on alussa ja se jättää lukupään johonkin kohtaa nauhaa. x,3,y/(x,s),(0,r),(y,s) x,0,y/(x,s),(1,s),(y,s) x,1,y/(x,s),(2,s),(y,s) x,2,y/(x,s),(3,s),(y,s) s x,;,y/(x,s),(1,r),(y,s) t x,z,y/(x,s),(;,s),(y,s) acc Esim. luvun 33 4 (eli 15 10 ) seuraajan 100 4 laskenta: abba abba abba s, 33; s, 03; s, 00; 111; 111; 111; abba acc, 001; 111; t, abba 001ε 111; 33/60

Esimerkki: Koneiden 4Succ2 ja Rew2 peräkkäin kytkentä, joka laskee nauhalla 2 olevan ;-terminoidun 4-kantaisen, vähiten merkitsevä numero ensin - esitetyn, luvun seuraajan ja siirtää lukupään nauhan 2 alkuun. Kone tulee käynnistää tilanteessa, jossa nauhan 2 lukupää on alussa. x,3,y/(x,s),(0,r),(y,s) x,0,y/(x,s),(1,s),(y,s) x,1,y/(x,s),(2,s),(y,s) x,2,y/(x,s),(3,s),(y,s) x,z,y/(x,s),(z,l),(y,s) when z x,;,y/(x,s),(1,r),(y,s) x,z,y/(x,s),(;,s),(y,s) x,,y/(x,s),(,r),(y,s) acc 34/60

Lause 4.2 Jos formaali kieli L voidaan tunnistaa k-nauhaisella Turingin koneella, se voidaan tunnistaa myös standardimallisella Turingin koneella. Todistus Olkoon M = (Q,Σ,Γ,δ,q 0,q acc,q rej ) k-nauhainen Turingin kone, joka tunnistaa kielen L. Konetta M voidaan simuloida 2k-uraisella koneella M siten, että koneen M parittomat urat 1,3,5,...,2k 1 vastaavat M:n nauhoja 1,2,...,k, ja kutakin paritonta uraa seuraavalla parillisella uralla on merkillä merkitty vastaavan nauhan nauhapään sijainti. 1. 2. 3. 4. 5. 6. A M T L A U q1 A N T H R I q2 q0 δ # I N # S G # O # # N # 35/60

Simuloinnin aluksi syötemerkkijono sijoitetaan normaalisti koneen M ykkösuralle. Ensimmäisessä siirtymässään M merkitsee nauhapääosoittimet parillisten urien ensimmäisiin merkkipaikkoihin. Tämän jälkeen M toimii pyyhkimällä nauhaa edestakaisin sen alkuja loppumerkin välillä. Vasemmalta oikealle pyyhkäisyllä M kerää tiedot kunkin osoittimen kohdalla olevasta M:n nauhamerkistä. Kun kaikki merkit ovat selvillä, M simuloi yhden M:n siirtymän, ja takaisin oikealta vasemmalle suuntautuvalla pyyhkäisyllä kirjoittaa -osoittimien kohdalle asianmukaiset uudet merkit ja siirtää osoittimia. 36/60

3. Epädeterministiset koneet Formaalisti epädeterministinen Turingin kone on seitsikko M = (Q,Σ,Γ,δ,q 0,q acc,q rej ), missä muut komponentit ovat kuten deterministisessä standardimallissa, paitsi siirtymäfunktio: δ : (Q {q acc,q rej }) (Γ {, }) P (Q (Γ {, }) {L,R}). Siirtymäfunktion arvon δ(q,a) = {(q 1,b 1, 1 ),...,(q k,b k, k )} tulkinta on, että ollessaan tilassa q ja lukiessaan merkin a kone voi toimia jonkin kolmikon (q i,b i, i ) mukaisesti. 37/60

Epädeterministisen koneen tilanteet, tilannejohdot jne. määritellään formaalisti samoin kuin deterministisenkin koneen tapauksessa, paitsi että ehdon δ(q,a) = (q,b, ) sijaan kirjoitetaan (q,b, ) δ(q,a). Tämän muutoksen takia seuraajatilannerelaatio M ei ole enää yksiarvoinen: koneen tilanteella (q, w) voi nyt olla useita vaihtoehtoisia seuraajia, so. tilanteita (q,w ), joilla (q,w) M (q,w ). Koneen M tunnistama kieli määritellään: L(M) = {x Σ (q 0,x) M (q acc,w) jollakin w Γ } Epädeterministisen koneen M tapauksessa siis merkkijono x kuuluu M:n tunnistamaan kieleen, jos jokin M:n kelvollinen tilannejono johtaa alkutilanteesta syötteellä x hyväksyvään lopputilanteeseen. 38/60

Esimerkki: Yhdistettyjen lukujen tunnistaminen epädeterministisillä Turingin koneilla. Ei-negatiivinen kokonaisluku n on yhdistetty, jos sillä on kokonaislukutekijät p,q 2, joilla pq = n. Luku, joka ei ole yhdistetty, on alkuluku. Oletetaan, että on jo suunniteltu deterministinen kone CHECK_MULT, joka tunnistaa kielen L(CHECK_MULT) = {n#p#q n, p, q binäärilukuja, n = pq}. Olkoon lisäksi GO_START deterministinen Turingin kone, joka siirtää nauhapään osoittamaan nauhan ensimmäistä merkkiä. 39/60

Olkoon edelleen GEN_INT seuraava mielivaltaisen ykköstä suuremman binääriluvun (eniten merkitsevä bitti ensin) nauhan loppuun tuottava epädeterministinen Turingin kone: 0/0, R 1/1, R /#, R /1, R /0, R /0, R /1, R /1, R 40/60

Koneen GEN_INT laskentoja syötteellä 0 : q 1,0 q 1,0ε q 2,0#ε q 3,0#1ε q 4,0#10ε q 3,0#10ε q 4,0#11ε q 3,0#11ε.... q 4,0#100ε q 3,0#100ε q 4,0#101ε q 3,0#101ε........ 41/60

Epädeterministinen Turingin kone TEST_COMPOSITE, joka tunnistaa kielen L(TEST_COMPOSITE) = {n n on binäärimuotoinen yhdistetty luku} voidaan muodostaa näistä komponenteista yhdistämällä: n n#p n#p#q n#p#q GEN INT GEN INT GO START CHECK MULT Yhdistetty kone hyväksyy syötteenä annetun binääriluvun n, jos ja vain jos on olemassa binääriluvut p,q 2, joilla n = pq siis jos ja vain jos n on yhdistetty luku. 42/60

Huom. Yleinen kaaviomerkintä Turingin koneiden yhdistämiselle: M 1 M 0 M 2 43/60

Lause 4.3 Jos formaali kieli L voidaan tunnistaa epädeterministisellä Turingin koneella, se voidaan tunnistaa myös standardimallisella deterministisellä Turingin koneella. Todistus (idea) Olkoon M = (Q,Σ,Γ,δ,q 0,q acc,q rej ) epädeterministinen Turingin kone, joka tunnistaa kielen L. Konetta M voidaan simuloida kolmenauhaisella deterministisellä koneella M, joka käy systemaattisesti läpi M:n mahdollisia laskentoja (tilannejonoja), kunnes löytää hyväksyvän jos sellainen on olemassa. Kone M voidaan edelleen muuntaa standardimalliseksi edellisten lauseiden konstruktioilla. 44/60

Yksityiskohtaisemmin: Nauhalla 1 M säilyttää kopiota syötejonosta ja nauhalla 2 se simuloi koneen M työnauhaa. Kunkin simuloitavan laskennan aluksi M kopioi syötteen nauhalta 1 nauhalle 2 ja pyyhkii pois nauhalle 2 edellisen laskennan jäljiltä mahdollisesti jääneet merkit. Nauhalla 3 M pitää kirjaa vuorossa olevan laskennan järjestysnumerosta. 1. 2. 3. i i D1 n n p W u O R K D3 D2 D2 D1 D4 q1 q0 δ q2 t D3 45/60

Tarkemmin sanoen, olkoon r suurin M:n siirtymäfunktion arvojoukon koko. Tällöin M:lla on erityiset nauhamerkit D 1,...,D r, joista koostuvia jonoja se generoi nauhalle 3 kanonisessa järjestyksessä: ε, D 1, D 2,..., D r, D 1 D 1, D 1 D 2,..., D 1 D r, D 2 D 1,.... Kutakin generoitua jonoa kohden M simuloi yhden M:n osittaisen 1. 2. 3. i i D1 n n p W u O R K D3 D2 D2 D1 D4 q1 q0 q2 t D3 laskennan, jossa epädeterministiset valinnat tehdään kolmosnauhan koodijonon ilmaisemalla tavalla. δ 46/60

Esimerkiksi jos kolmosnauhalla on jono D 1 D 3 D 2, niin ensimmäisessä siirtymässä valitaan vaihtoehto 1, toisessa vaihtoehto 3, kolmannessa vaihtoehto 2. Ellei tämä laskenta johtanut M:n hyväksyvään lopputilaan, generoidaan seuraava koodijono D 1 D 3 D 3 ja aloitetaan alusta. Jos koodijono on epäkelpo, so. jos siinä jossakin kohden on tilanteeseen liian suuri koodi, simuloitu laskenta keskeytetään ja generoidaan seuraava jono. 1. 2. 3. i i D1 n n p W u O R K D3 D2 D2 D1 D4 q1 q0 δ q2 t D3 47/60

1. i n p u t 2. i n W O R K 3. D1 D3 D2 D2 D1 D4 D3 q1 q2 q0 δ Selvästi tämä systemaattinen koneen M laskentojen läpikäynti johtaa koneen M hyväksymään syötejonon, jos ja vain jos koneella M on syötteen hyväksyvä laskenta. Jos hyväksyvää laskentaa ei ole, kone M ei pysähdy. a a Simuloiva kone voisi hylätä syötteen, jos jollakin laskennan pituudella kaikki laskennat johtavat simuloitavan koneen hylkäävään lopputilaan; luonnollisesti tämä ei takaa pysähtymistä silloin, kun simuloitavalla koneella on päättymättömiä laskentoja. 48/60

Laskettavuusteoriaa 49/60

Churchin Turingin teesi: Mielivaltainen (riittävän vahva) laskulaite Turingin kone. Laskettavuusteoria: Tarkastellaan mitä Turingin koneilla voi ja erityisesti mitä ei voi laskea. Tärkeä erottelu: Pysähtyvät ja ei-pysähtyvät Turingin koneet. Määritelmä 6.1 Turingin kone M = (Q,Σ,Γ,δ,q 0,q acc,q rej ) on totaalinen, jos se pysähtyy kaikilla syötteillä. Formaali kieli A on rekursiivisesti numeroituva, jos se voidaan tunnistaa jollakin Turingin koneella, ja rekursiivinen, jos se voidaan tunnistaa jollakin totaalisella Turingin koneella. 50/60

Vaihtoehtoinen termistö: Palautetaan mieliin päätösongelmien (binäärivasteisten I/O-kuvausten) ja formaalien kielten vastaavuus: päätösongelmaa Π vastaava formaali kieli A Π koostuu niistä syötteistä x, joille ongelman Π vastaus on kyllä (so. toivottu vaste = 1). Päätösongelma Π on ratkeava (engl. decidable), jos sitä vastaava formaali kieli A Π on rekursiivinen, ja osittain ratkeava (engl. semi-decidable), jos A Π on rekursiivisesti numeroituva. Ongelma, joka ei ole ratkeava, on ratkeamaton (engl. undecidable). (Huom.: ratkeamaton ongelma voi siis olla osittain ratkeava.) Toisin sanoen: päätösongelma on ratkeava, jos sillä on totaalinen, kaikilla syötteillä pysähtyvä ratkaisualgoritmi, ja osittain ratkeava, jos sillä on ratkaisualgoritmi joka kyllä -tapauksissa vastaa aina oikein, mutta ei -tapauksissa voi jäädä pysähtymättä. 51/60

Esimerkki: Aakkoston {a, b, c} kieli {a n b n c n n 0} on sanallisesti kuvattuna päätösongelmana Annettuna aakkoston {a, b, c} merkkijono x. Onko x muotoa a n b n c n jollekin n 0? 52/60

Esimerkki: Aakkoston {0, 1,#} kieli {n#p#q n,p,q {0,1} binäärilukuja ja n = pq} on sanallisesti kuvattuna päätösongelmana Annettuna aakkoston {0, 1,#} merkkijono x. Onko x muotoa n#p#q, missä n,p,q {0,1}, ja pätee n = pq kun n,p,q tulkitaan binäärilukuina? tai vielä epämuodollisemmin Annettuna binääriluvut n,p,q. Päteekö n = pq? 53/60

Esimerkki: Aakkoston {0, 1} kieli {n n on binäärikoodattu alkuluku} on sanallisesti kuvattuna päätösongelmana Annettuna binääriluku n. Onko n alkuluku? 54/60

Esimerkki: Aakkoston {0x00, 0x01,..., 0xff} kieli {p p on UTF-8-koodattu merkkijono, joka kuvaa Python-ohjelmaa, jonka suoritus pysähtyy kaikilla syötteillä} on sanallisesti kuvattuna päätösongelmana Annettuna Python-ohjelma p. Pysähtyykö p:n suoritus kaikilla syötteillä? 55/60

Turingin pysähtymisongelma, ensimmäinen kohtaaminen 56/60

1.8 Ekskursio: Turingin pysähtymisongelma Väite Voidaan näyttää (seuraava kierros), että formaaleja kieliä on äärettömästi enemmän kuin Turingin koneita (tai C/Python/...-ohjelmia) Koska kieli laskennallinen päätösongelma, kaikkia päätösongelmia ei voida ratkaista Entä jokin konkreettinen esimerkki tällaisesta? Tunnetuin esimerkki on ns. Turingin pysähtymisongelma (Alan Turing, 1936). C-ohjelmia käyttäen tulos voidaan muotoilla seuraavasti: Ei ole olemassa C-funktiota halt(p,x), joka saa syötteenään mielivaltaisen C-funktion tekstin p ja tälle tarkoitetun syötteen x ja tuottaa tuloksen 1, jos p:n suoritus pysähtyy syötteellä x, ja 0 jos p:n suoritus x:llä jää ikuiseen silmukkaan. Tässä oletetaan, että ohjelmilla on rajaton määrä muistia käytössään. 57/60

Todistus Oletetaan väitteen vastaisesti, että tällainen funktio halt voitaisiin laatia. Muodostetaan tätä käyttäen toinen funktio confuse (ks. alla). Merkitään funktion confuse ohjelmatekstiä C:llä ja tarkastellaan funktion confuse laskentaa tällä omalla kuvauksellaan. void confuse ( char * q ) { i n t h a l t ( char * p, char * x ) {... / * Code f o r the f u n c t i o n * / } i f ( h a l t ( q, q ) == 1) while ( 1 ) ; } Saadaan ristiriita: confuse(c) pysähtyy halt(c,c) == 1 confuse(c) ei pysähdy. Ristiriidasta seuraa, että oletettua pysähtymistestausfunktiota halt ei voi olla olemassa. Samansukuisia ns. ratkeamattomia ongelmia on itse asiassa paljon. Asiaan palataan seuraavilla kierroksilla. 58/60

Sama Pythonilla Tiedosto haltingtester.py, jossa kuvitteellinen pysähtymisentestausfunktio doeshalt: # (C) 2013 H. Ackerfrau def doeshalt ( sourcename, inputname ) : " " " Returns t r u e i f the program i n f i l e sourcename h a l t s when i t i s run on the i n p u t f i l e inputname, f a l s e otherwise. " " " f s = open ( sourcename, " r " ) f i = open ( inputname, " r " )... r e t u r n r e s u l t i f name == main : source = sys. argv [ 1 ] i n p u t = sys. argv [ 2 ] h a l t s = doeshalt ( source, i n p u t ) p r i n t ( source+ " h a l t s on " + i n p u t + " : " + h a l t s ) 59/60

Tiedosto confuse.py: # (C) 2013 H. Ackerfrau def doeshalt ( sourcename, inputname ) : " " " Returns t r u e i f the program i n f i l e sourcename h a l t s when i t i s run on the i n p u t f i l e inputname, f a l s e otherwise. " " " f s = open ( sourcename, " r " ) f i = open ( inputname, " r " )... r e t u r n r e s u l t i f name == main : sourceandinput = sys. argv [ 1 ] h a l t s = doeshalt ( sourceandinput, sourceandinput ) i f h a l t s : while True : pass p r i n t ( " I l l now h a l t : ) " ) Milloin komennon python confuse.py confuse.py suoritus pysähtyy? 60/60