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 Γ {λ} Γ {λ} {0, 1, 1} S, B Γ vapaan muistipaikan merkki (blanko), s 0 S alkutila ja H S ainoa lopputila. Turingin koneen ohjeet Joukon O ohjeet: (s, a, b, l, t), missä s ja t ovat tiloja, a, b ovat nauha-aakkoston kirjaimia, l { 1, 0, 1}. Ohjeen soveltaminen: Tilassa s, jos nauhan lukupää on symbolin a kohdalla, kirjoitetaan a:n paikalle b, siirrytään tilaan t ja siirretään lukupäätä yksi muistipaikka oikealle (l = 1), vasemmalle (l = 1) tai pidetään paikallaan (l = 0).
Ajanhetken kuvaus Turingin koneen Ajanhetken kuvaus AHK:Järjestetty kaksikko (s, a 1 a 2 a i a n ), missä s on tila, a 1 a n on nauhalla oleva sana ja lukupää on nuolen osoittaman symbolin kohdalla. Kuvaavat Turingin koneen toimintaa. Turingin koneen lasku: Jono ajanhetken kuvauksia, joissa kukin AHK saadaan edellisestä soveltamalla jotain sääntöä. Esimerkki: Jos (s, a 2, b, 1, t) on Turingin koneen ohje, niin TM:n lasku on muotoa (s, a 1 a2 a 3 a n ) (t, a 1 ba 3 a n ). Sanan/kielen hyväksyminen Alussa syöttö on kirjoitettu nauhalle yhtenäiseksi osaksi nauhaa. Kaikki muut nauhan solut sisältävät symbolin B. Nauhan lukupää on alussa syötön vasemmanpuoleisimman merkin kohdalla (ellei muuta ilmoiteta). Turingin kone hyväksyy sanan w, jos se siirtyy tilaan H. Huom. Turingin koneella on kaksi eri tapaa hylätä sana: (1) Kone pysähtyy johonkin muuhun tilaan kuin hyväksyvään tilaan. (2) Kone jatkaa toimintaansa pysähtymättä. Turingin koneen TM tunnistama (=hyväksymä) kieli L(TM) = {w I TM hyväksyy sanan w}. Kieli L on tunnistettavissa Turingin koneella (=hyväksyttävissä), jos L = L(TM) jollakin Turingin koneella TM.
Esimerkki 9.19. Esimrkki 9.19. Olkoon TM = ({s 0, s 1, H}, {a, b}, {a, b, r, s, B}, O, B, s 0, H), missä O = {(s 0, B, B, 0, H), (s 0, a, a, +1, s 0 ), (s 0, b, b, +1, s 1 ), (s 1, b, b, +1, s 1 ), (s 1, B, B, 0, H)}. Määrää L(TM). Turingin koneen graafinen esitys Turingin kone voidaan esittää myös graafisesti seuraavasti: Silloin ohjetta (s, a, b, +1, t) vastaa esitys:...
Esimerkki 9.20. Rakenna Turingin kone, joka testaa ovatko kaksi luonnollista lukua yhtäsuuret. Alussa luvut on kirjoitettu nauhalle esitettynä ykkösien avulla muodossa 11 1 11 1, missä ykkösien lukumäärä kertoo luvun arvon ja symboli erottaa luvut toisistaan. Esimerkiksi luvut 2 ja 3 esitetään muodossa 11 111. Alussa lukupää on syöttösanan vasemmanpuoleisen luvun vasemmanpuoleisimman 1:sen kohdalla. Jos luku on 0, niin lukupää on B:n kohdalla. Esimerkki 9.21. Määrää Turingin kone, joka hyväksyy kielen {a n b n c n n = 0, 1,...}. Ratk. Oletetaan, että lukupää on vasemmanpuoleisimman a:n kohdalla. Ohjeet: (s 0, a, X, +1, s 1 ) a korvataan X :llä, (s 1, a, a, +1, s 1 ) siirrytään oikealle, (s 1, Y, Y, +1, s 1 ) ylitetään Y :t, (s 1, b, Y, +1, s 2 ) b korvataan Y :llä, (s 2, b, b, +1, s 2 ) ylitetään b:t, (s 2, Z, Z, +1, s 2 ) ylitetään Z:t, (s 3, c, Z, 1, s 3 ) c korvataan Z:lla,
Siiirrytään vasemmalle: (s 3, Z, Z, 1, s 3 ), (s 3, Y, Y, 1, s 3 ), (s 3, b, b, 1, s 3 ), (s 3, a, a, 1, s 3 ), (s 3, X, X, +1, s 0 ) a:t loppuivat, joten testataan loppuivatko b:t ja c:t: (s 0, Y, Y, +1, s 0 ), (s 0, Z, Z, +1, s 0 ) Jos päästään tyhjään muistipaikkaan asti, hyväksytään sana. (s 0, B, B, 0, H). Turingin kone tulostuksella Turingin kone voi kirjoittaa nauhalle, joten sitä voidaan käyttää myös tulostuksen mallintamiseen. Yleensä oletetaan, että tulostus alkaa siitä merkistä, jonka kohdalle lukupää pysähtyy. Esimerkki 9.22. Rakenna Turingin kone, joka lisää luvun 1 binäärimuodossa annettuun lukuun. Alussa lukupää on binääriluvun vasemmanpuoleisimman merkin kohdalla. Lopussa koneen lukupää osoittaa lisätyn luvun vasemmanpuoleisimpaan merkkiin.
Esimerkki 9.23. Rakenna Turingin kone, joka laskee yhteen kaksi ykkösillä esitettyä positiivista kokonaislukua. Alussa luvut ovat nauhalla muodossa 11 1B1 1, ja lukupää on vasemmanpuoleisen luvun vasemmanpuoleisimman 1:sen kohdalla. Lopuksi lukupää on summan vasemmanpuoleisimman 1:sen kohdalla. Esimerkki 9.24. Rakenna Turingin kone joka muuntaa sanan w sanaksi w R, kun w {0, 1}. Alussa lukupää on sanan w alussa ja lopussa sanan w R alussa.
Deterministinen Turingin kone Turingin kone on epädeterministinen, jos sillä on kaksi ohjetta (s, a, b, l, t), (s, a, b, l, t ), missä s = s ja a = a. Muulloin Turingin kone on deterministinen. Lause 9.5. Kieli L on tunnistettavissa epädeterministisellä Turingin koneella jos ja vain jos se on tunnistettavissa deterministisellä Turingin koneella. Tod. Sivuutetaan. Myöskään nauhojen lisääminen ei lisää laskentatehoa, sillä voidaan todistaa, että jos kieli on tunnistettavissa moninauhaisella Turingin koneella, niin se on tunnistettavissa deterministisellä yksinauhaisella Turingin koneella.