ICS-C Tietojenkäsittelyteori Kevät 6 Kierros 8, 7.. mliskuut Demonstrtiotehtävien rtkisut D: Määrittele Turingin koneen stndrdimllin muunnelm, joss koneen työnuh on molempiin suuntiin ääretön, j osoit että tällisill koneill voidn tunnist täsmälleen smt kielet kuin stndrdimllisillkin. Rtkisu: Turingin kone, jonk nuh on khteen suuntn ääretön, toimii muuten smoin kuin tvllinen, mutt nyt nuhn lkumerkki ei ole kiinteä, j kone voi siirtää sitä smn tpn kuin loppumerkkiäkin. Nuhn pikt indeksoidn kokonisluvuill, j luku osoitt lkumerkin pikk lskennn luss. Tällist Turingin konett voidn simuloid kksiurisell koneell. Koneen nuh jtelln jetuksi khteen osn, ylä- j lpuoleen. Yläos käytetään nuhn pikkojen i > tllettmiseen, los pikoille i. Esimerkiksi nuhn sisältö: - esitetään -urisell koneell seurvsti: - - - Yksiurisell stndrdikoneell nuhn jkminen uriin tphtuu korvmll nuh-kkosto Γ uudell kkostoll Γ = (Γ {}) (Γ {}), missä on uusi merkki, jok ei esiinny lkuperäisen Turingin koneen nuh-kkostoss. Kukin Γ :n merkki vst näin kht lkuperäisen kkoston merkkiä. Ylläolev esimerkki muodostuukin seurvnliseksi:,,,, Vielä trvitn tp osoitt kump nuhn puolisko käsitellään. Helpoiten tämä onnistuu määrittelemällä kikille koneen tiloille q peilikuvtil q. Kun kone on tilss q, se tekee siirtons inostn ylemmän urn merkkien perusteell (lukupää on nolln oikell puolell), j tilss q siirrytään lemmn urn mukisesti (lukupää nolln vsemmll puolell). Kosk lempi ur on käänteisessä järjestyksessä, täytyy sitä käsitellessä kääntää lukupään siirto-opertiot myös peilikuviksi. Ain kun kone lukee nuhn idon lkumerkin, se viht käsiteltävää ur.
Konstruktio formlisti Olkoon M = (Q,Σ,Γ,δ,q,q cc,q rej ) Turingin kone, joll on khteen suuntn ääretön nuh. Muodostetn stndrdimllinen Turingin kone M seurvsti: M = (Q,Σ,Γ,δ,q,q cc,q rej ) Q = Q {q q Q} Γ = (Γ {}) (Γ {}) Tilnsiirtofunktio δ muodostetn seurvsti: δ = {(q,,γ ) (q,,γ, ) (q,) (q,, ) δ,γ (Γ {})} {(q, ) (q,,, ) (q, ) (q,, ) δ} {(q, ) (q,,,l) (q, ) (q,,l) δ} {(q,,γ ) (q,,γ,l) (q, ) (q,,l) δ,γ (Γ {})} {(q,,γ ) (q,,γ, ) (q, ) (q,, ) δ,γ (Γ {})} {(q, γ, ) (q, γ,, ) (q,) (q,, ) δ,γ (Γ {})} {(q, ) (q,,, ) (q,) (q,, ) δ} {(q, ) (q,,,l) (q,) (q,,r) δ} {(q, γ, ) (q, γ,, ) (q,) (q,, ) δ,γ (Γ {})} {(q, γ, ) (q, γ,,l) (q,) (q,,r) δ,γ (Γ {})} {(q,) (q,,r),(q,) (q,,r) q Q} missä, Γ, L = R j R = L. D: Ldi stndrdimlliset Turingin koneet NEXT j DUP, jotk suorittvt seurvt tehtävät: () NEXT korv nuhll olevn merkkijonon knonisess (leksikogrfisess) järjestyksessä seurvll; () DUP kirjoitt nuhll olevn merkkijonon perään sen kopion (esim. jono korvtn jonoll ). Rtkisu: () Joukon Σ yli muodostettv leksikogrfinen järjestys < L määritellään käyttäen pun kkoston Σ lkioiden välille määriteltyä järjestystä <. Yleensä järjestyksenä < käytetään joko kkosjärjestystä ti numerojärjestystä. Esim: Jos Σ ={,...,z}, niin < < c < < z Jos Σ ={,}, niin < Leksikogrfinen järjestys < L määritellään seurvsti: Olkoon x,y Σ, x = x x n j y = y y m. Nyt x < L y mikäli toinen ll olevist ehdoist toteutuu:
(i) n < m, ti (ii) n = m j on olemss i n siten, että x i < y i j kikill j < i, x j = y j. Esimerkiksi kkoston {,} snojen leksikogrfinen järjestys on seurvnlinen: ε,,,,,,,,,,,,,... Rtkisuss lditn Turingin kone, jok toimii kkostoll Σ = {,, c}. Rtkisun voi kuitenkin yleistää mille thns kkostolle (yksityiskohdt myöhemmin). Jott rtkisu olisi yksinkertisempi, niin oletetn myös että merkkijono on nuhll käänteisenä, eli merkkijonon vähiten merkitsevä kirjin on ensimmäisenä: c/,r s x/x,l when x /,L /c,l /,L s /,R cc Kone toimii siten, että tilss s muutetn kikki snn vähiten merkitsevässä päässä olevt c-kirjimet -kirjimiksi. Kun löydetään ensimmäinen kirjin σ < c, korvtn se kkosjärjestyksessä seurvll kirjimell, siirretään lukupää tkisin nuhn lkuun j pysähdytään. (Lukupään pluttmisen trkoituksen on tehdä Turingin koneiden yhdistämisestä helpomp). Trkstelln, miten kone hkee seurjn merkkijonolle cc: (q,cc) (q,c) (q,) (q,) (q,) (q,) (q cc,) Tulokseksi sttin, niin kuin pitikin. Jos thdottisiin rtkisun toimivn silloin, kun merkkijono ei ole nuhll käänteisenä, voitisiin ensin trkist, koostuuko merkkijono pelkistä c-kirjimist. Jos näin on, korvtn merkkijono pelkistä -kirjimist koostuvll yhtä pidemmällä merkkijonoll (kosk esim. merkkijono ccc seur knonisess järjestyksessä merkkijono ). Muutoin mennään nuhn loppuun j toimitn kuten utomtin tiloiss s j s mutt oikelt vsemmlle. Rtkisun yleistäminen Olkoon nnettun äärellinen kkosto Σ j täysjärjestys < Σ Σ. Kosk Σ on äärellinen, on < hyvin järjestetty, joten sillä on olemss sekä minimi min j mksimi mx. Määritellään seurjfunktio f : (Σ { mx }) Σ seurvsti: f () = < c : < c c <
Kosk < on täysjärjestys, on f ():n rvo yksikäsitteinen. Syötettä x leksikogrfisesti seurvn syötteen lskev Turingin kone M = (Q, Σ, Γ, δ, q, q cc, q rej ) määritellään seurvsti: Q = {q,q,q cc,q rej } Γ = Σ δ = {(q, mx,q, min,r),(q,<,q, min,l)} {(q,,q, f (),L) (Σ { mx })} {(q,,q,,l) (Σ { })} {(q,,q cc,,r)} Aiemmin esitetty Turingin kone sdn suorn ylläolevst määrittelystä settmll min =, mx = c, f () = j f () = c. () Tässä esitetään rtkisu kkostoll Σ = {, }. Rtkisun yleistäminen muille kkostoille on hyvin suorviivist j sen yksityiskohdt sivuutetn. Rtkisun perite on seurv. Merkkijono kopioidn yksi merkki kerrlln nuhn loppuun. Lskennn kulust pidetään kirj korvmll kulloinkin kopioitv merkki symolill. Merkkijonon kopio kirjoitetn ensin isoill kirjimill {A,B}, kosk muuten ei voitisi huomt, milloin sn loppuu j kopio lk. Lopuksi korvtn isot kirjimet pienillä j plutetn lukupää nuhn lkuun. DUP: /, R /, L q /A, L q /, R q /, R /, R A/, R B/, R /, R A/, R B/, R /, L /, L /, R q 5 q 6 qcc /B, L q q /, R /, L Tilss q on käytetty lyhennysmerkintää muoto /,R trkoittmn kikki niitä siirtymiä, joiss luetn (muttei ylikirjoitet) mikä thns muu merkki kuin j siirrytään oikelle. Trkstelln, miten kone toimii syötteellä : (q,) (q, ) (q, <) (q, A) (q, A) (q,a) (q, A) (q, A<) (q, AB) (q,ab) (q,abb) (q 5,BB) (q 5,<) (q cc,)
D: Osoit, että pinoutomteill, joill on yhden sijn kksi pino, voidn tunnist täsmälleen smt kielet kuin Turingin koneill. Rtkisu: Osoitetn ensin, että pinoutomtill, joss on kksi pino, voidn simuloid Turingin konett. Ainut hnkluus tässä on keksiä, miten khdell pinoll simuloidn Turingin koneen nuh. Tämä onnistuu siten, että toiseen pinoon tlletetn lukupään vsemmll puolell olevt merkit käänteisessä järjestyksessä, toiseen pinoon pään oikell puolell olevt merkit: 5 6 = 7 5 6 7 S S Pinoutomtin toimint jkutuu khteen viheeseen: () Alustus, jolloin utomtti kopioi syötteen pinoon S, mistä se siirtään merkki kerrlln pinoon S lukuunottmtt syötteen ensimmäistä merkkiä. () Vrsininen toimint, jolloin utomtti tekee siirtymän pinon S päällimmäisen merkin perusteell. Mikäli Turingin kone siirtäisi lukupäätä vsemmlle, siirretään pinon S päällimmäinen merkki pinon S päälle. Mikäli ts lukupää siirtyisi oikelle, siirretään S :n päällimmäinen merkki S :n päälle. Näin ldittu pinoutomtti simuloi nnettu Turingin konett. Seurvksi osoitetn, että Turingin koneell voidn simuloid pinoutomtti, joss on kksi pino. Tämä onnistuu trivilisti käyttämällä kksinuhist epädeterministä Turingin konett, joss kumpikin pinoist tlletetn omlle nuhlleen. Formlisti nnettu muunnos Turingin koneest kksipinoiseksi pinoutomtiksi voidn määritellä seurvsti: Olkoon nnettun Turingin kone M = (Q,Σ,Γ,δ,q,q cc,q rej }. Muodostetn -pinoinen 5
pinoutomtti M = (Q,Σ,Γ,δ, p,q cc,q rej ), missä: Q =Q {p, p, p } Σ =Σ { } Γ =Γ {, } δ ={((p,ε,ε,ε),(p,,ε)),((p,,ε,ε),(p,ε, ))} {((p,x,ε,ε),(p,x,ε)) x Σ} {((p,ε,x,ε),(p,ε,x)) x Σ} {((q,ε,,ε),(q,ε,)) (q,,q,,l) δ} {((q,ε,,x),(q,x,ε)) (q,,q,,r) δ,x Γ } 6