Täydentäviä muistiinpanoja laskennan rajoista Antti-Juhani Kaijanaho 10. joulukuuta 2015 1 Diagonaalikieli Diagonaalikieli on D = { k {0, 1} k L(M k ) }. Lause 1. Päätösongelma Onko k {0, 1} sellaisen TM:n M binäärikoodaus, joka ei hyväksy omaa koodaustaan? ei ole (puoli)ratkeava. Todistus. Lause voidaan esittää myös muodossa: D ei ole laskettavasti lueteltava. Oletetaan, että D on lasketttavasti lueteltava. Tällöin on olemassa standardimuotoinen TM M, jolle pätee D = L(M). Olkoon d = w M, eli M d = M. Nyt pätee d D d L(M d ) koska D = { k {0, 1} k L(M k ) } joka on ristiriita. d D koska D = L(M d ) Kieltä D kutsutaan diagonaalikieleksi, koska edellisen lauseen todistus muistuttaa Cantorin kuuluisaa diagonaaliargumenttia. Luetellaanpa kaikki mahdolliset Turingin koneet vaaka-akselilla (ei ole väliä, toistuuko sama kone useaan kertaan) ja kaikki mahdolliset binäärimerkkijonot pystyakselilla, ja TIEA241 Automaatit ja kieliopit, syksy 2015 1
merkitään kuhunkin soluun, kuuluuko kyseinen binäärimerkkijono koneen tunnistamaan kieleen: M ε M 0 M 1 M 01 ε 0 0 0 0 0 0 0 0 0 1 0 0 0 0 01 0 0 0 0........ Edellä olevasa taulukossa kaikki solut ovat nollia, koska jokainen näkyviin kirjoitettu kone hylkää kaikki syötemerkkijonot. Taulukossa on kuitenkin myös (näkyvän alueen ulkopuolella) soluja, joissa on ykkönen. Taulukon diagonaalilta on luettavissa, mitkä (pystyakselille merkityt) merkkijonot kuuluvat diagonaalikielen komplementtiin { w {0, 1} w L(M w ) }. Näin ollen diagonaalikieli saadaan, kun taulukon diagonaalilla vaihdetaan jokainen nolla ykköseksi ja ykkönen nollaksi. 2 Universaalikone On mahdollista rakentaa Turingin kone, joka tarkistaa, että syöte on jonkin Turingin koneen binäärikuvaus. Merkitään sellaista konetta M OK. On myös mahdollista rakentaa Turingin kone, joka kahdentaa nauhan sisällön; merkitään sitä M DUP. Oletetaan, että olisi olemassa universaali Turingin kone, joka pysähtyy joka syötteellä; merkitään tätä hypoteettista konetta MU T. Nyt voidaan rakentaa uusi kone seuraavasti: 1. Uusi kone toimii aluksi kuin M OK. Jos M OK hylkää syötteen, uusi kone hyväksyy sen. 2. Seuraavaksi uusi kone palauttaa nauhan ja nauhapään alkutilanteeseen ja käyttäytyy sitten kuin M DUP. Huomaa, että M DUP ei koskaan hylkää syötettään. 3. Lopuksi kone palauttaa nauhapään nauhan alkuun ja käyttäytyy kuten hypoteettinen MU T. Jos se hyväksyy syötteen, uusi kone hylkää sen, ja päin vastoin. 2
Sama kuvallisesti: w w ww M OK M DUP M T U Kuvassa osakoneiden väliset siirtymät kertovat nauhan tilanteen siirtymässä; nauhapää siirtyy joka osakoneen valmistuttua nauhan alkuun. 3 Pysähtymisongelma Lause 2. Päätösongelma Pysähtyykö standardimallinen TM M syötteellä w? on puoliratkeava mutta ei ratkeava. Todistus. Ongelmaa vastaa kieli H = { w M w M pysähtyy syötteellä w }. Turingin kone M H, jolle L(M H ) = H pätee, on helppo rakentaa samaan tapaan kuin universaalikone. Olkoon MH T aina pysähtyvä TM, jolle pätee L(M H T ) = H. Rakennetaan nyt uusi kone M: jos MH T hylkää syötteen, M hylkää, muuten M käyttäytyy kuten mikä tahansa universaalikone. Tällöin L(M) = U, mikä on ristiriita. 4 Kääntäjäkirjoittajien täystyöllisyys Lause 3. Sellaista Turingin konetta ei ole, joka minimoisi sille binäärikoodattuna annetun Turingin koneen. Todistus. Lienee selvää, että on helppo tunnistaa, onko standardimallinen Turingin kone pienin mahdollinen tyhjän kielen tunnistava kone. Oletetaan, että on olemassa tehtävänannossa tarkoitettu Turingin kone M m. Rakennetaan uusi Turingin kone seuraavasti: 1. Se hylkää syötteen, jos syöte ei ole muotoa w M v. 2. Sitten se kirjoittaa nauhan sisällöksi w Mv, missä M v hyväksyy kaikki merkkijonot jos M pysähtyy syötteellä v ja muutoin ei pysähdy millään syötteellä. 3
3. Sitten se käyttäytyy kuten M m. 4. Mikäli tulos oli pienin mahdollinen tyhjän kielen tunnistava kone, hylkää; muuten hyväksy. Tämä kone pysähtyy aina ja tunnistaa, pysähtyykö annettu Turingin kone annetulla syötteellä. Koska pysähtymisongelma ei ole ratkeava, on tässä ristiriita. 5 Entscheidungsproblem Entscheidungsproblem kysyy, millä algoritmilla voidaan ratkaista jokaisen tarpeeksi tarkasti kirjoitetun matemaattisen väitteen totuus tai epätotuus. Turing todisti aikoinaan, että tällaista algoritmia ei voi olla. Kirjoitan tästä laajemmin lisäprujussa, mutta perusidea on tässä: kirjoitetaan Turingin koneen määritelmä sopivassa logiikan formalismissa, ja kirjoitetaan sillä myös, miten määritellään merkkijonon hyväksyminen. Tämän jälkeen on helppo kertoa, kuinka annettu Turingin kone kääntyy logiikan kieliseksi väitteeksi, että kone hyväksyy ainakin yhden merkkijonon. Sen jälkeen todistetaan, että tuo väite tosiaan on loogisesti tosi jos ja vain jos kyseinen Turingin kone hyväksyy ainakin yhden merkkijonon. Tämän jälkeen tehdään vastaoletus, että olisi TM, joka ratkaisee kaikki väitteet, ja pultataan sen eteen kone, joka muuntaa TM:n edellä kuvatuksi väitteeksi. Saadaan TM, joka ratkaisee, hyväksyykö annettu TM ainakin yhden merkkijonon; tämä tiedetään mahdottomaksi. Todistuksen tekee teknisesti vaikeaksi se, että formaali logiikka vaatii huomattavasti tavanomaista matemaatikon tarkkuutta hurjempaa täsmällisyyttä. Niinpä TM:n kuvaaminen formaalilla logiikalla vaatii jonkin verran kirjoittamista, ja saadun kuvauksen oikeellisuuden todistaminen on vaaditulla tarkkuudella todella työlästä. Lisäksi tuo todistaminen vaatii aika lailla esitietoja formaalin logiikan toiminnasta. Lisäprujussa en esitä todistusta aivan tarkasti, mutta kuitenkin tarkemmin kuin tässä. 6 Ricen lause Määritelmä 4. Joukon S alkioiden ominaisuus P ( ) on triviaali, jos pätee x S : P (x) tai x S : P (x). Lause 5 (Rice). Kaikki laskettavasti lueteltavien kielten epätriviaalit ominaisuudet ovat ratkeamattomia. 4
Todistus. Tehdään vastaoletus, että on olemassa jokin laskettavasti lueteltavien kielten epätriviaali ominaisuus, joka on ratkeava. Sen komplementti on tällöin myös ratkeava. Merkitään P :llä näistä kahdesta ominaisuudesta sitä, joka ei ole tyhjällä kielellä. Koska P on ratkeava, on olemassa Turingin kone M P, joka ratkaisee sen. Koska kyse on laskettavasti lueteltavien kielten ominaisuudesta, voidaan olettaa, että M p tulkitsee syötteensä Turingin koneen binäärikuvaukseksi. Koska P on epätriviaali, on olemassa laskettavasti lueteltava kieli A P. Tälle kielelle on olemassa Turingin kone M A, jolle pätee A = L(M A ). Rakennetaan Turingin kone M E, joka toimii seuraavasti: 1. Se hylkää syötteen, jos syöte ei ala jonkin Turingin koneen M binäärikuvauksella; merkitään syötteen loppuosaa v:llä. 2. Se muodostaa binäärikuvauksen uudelle koneelle M v, joka ensiksi käyttäytyy sille annetulla syötteellä u kuten M syötteellä v; jos M hyväksyy v:n, se lisäksi käyttäytyy kuten M A syötteellä u. Huomaa, että M v :n kielellä on ominaisuus P jos ja vain jos v L(M). Rakennetaan Turingin kone M, joka käyttäytyy ensiksi kuin M E, ja jos tämä hyväksyy syötteen, se antaa syntyneen tuloksen M P :lle syötteeksi. Tarkastellaan M :n käytöstä mielivaltaisella muotoa w M v (jollakin M) olevalla syötteellä. Ensiksi se käyttäytyy kuin M E eli tarkistaa syötteen muodollisen oikeellisuuden ja sitten rakentaa koneen M v binäärikuvauksen. Sitten se käyttäytyy kuin M P syötteenään M v :n binäärikuvaus. Näin M hyväksyy syötteen, jos M v :llä on ominaisuus P eli jos ja vain jos v L(M). Niinpä M on universaalikone! On helppo havaita, että M pysähtyy kaikilla syötteillä: M v :n rakentaminen pysähtyy aina, ja M P :n oletetaan pysähtyvän aina. Mutta aina pysähtyvää universaalikonetta ei ole. Seuraus 6. Päätösongelma Onko standardimallisen TM:n tunnistama kieli epätyhjä? ei ole ratkeava. Todistus. Ongelma voidaan esittää myös seuraavassa muodossa: Onko annetulla laskettavasti lueteltavalla kielellä A ominaisuus P (A) A? Ominaisuus P on epätriviaali: P ( ) ja P ({0}) pätevät, ja molemmat kielet ovat laskettavasti lueteltavia. Näin ollen väite seuraa Ricen lauseesta. 5