2. Laskettavuusteoriaa

Samankaltaiset tiedostot
2. Laskettavuusteoriaa

Lisää pysähtymisaiheisia ongelmia

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

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

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

Rekursiiviset palautukset [HMU 9.3.1]

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

Täydentäviä muistiinpanoja laskennan rajoista

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

5.3 Ratkeavia ongelmia

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Säännöllisen kielen tunnistavat Turingin koneet

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

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

1. Universaaleja laskennan malleja

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.

Algoritmin määritelmä [Sipser luku 3.3]

Laskennan teoria

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

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

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

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

Turingin koneen laajennuksia

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Laskennan teoria

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

Muita vaativuusluokkia

Laskennan teoria

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

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

1. Universaaleja laskennan malleja

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

Ratkeavuus ja efektiivinen numeroituvuus

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

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

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

Laskennan teoria

Rajoittamattomat kieliopit (Unrestricted Grammars)

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

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

Laskennan teoria

ICS-C2000 Tietojenkäsittelyteoria

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

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

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

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

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

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

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

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

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

3SAT-ongelman NP-täydellisyys [HMU ]

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

Rajoittamattomat kieliopit

Chomskyn hierarkia ja yhteysherkät kieliopit

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

Yhteydettömän kieliopin jäsennysongelma

Muita universaaleja laskennan malleja

Automaatit. Muodolliset kielet

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

Miten osoitetaan joukot samoiksi?

Säännöllisten kielten sulkeumaominaisuudet

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 26. kesäkuuta 2013

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

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

Laskennan mallit

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

3. Laskennan vaativuusteoriaa

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

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

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

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

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

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

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

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

Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja

Output. Input Automaton

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

4.3. Matemaattinen induktio

Diskreetin Matematiikan Paja Ratkaisuhahmotelmia viikko 1. ( ) Jeremias Berg

Approbatur 3, demo 1, ratkaisut A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat.

Kertausta 1. kurssikokeeseen

Formalisoimme nyt edellä kuvatun laskennan.

Entscheidungsproblem

Predikaattilogiikan malli-teoreettinen semantiikka

Algebra I, harjoitus 5,

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

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

Todistusmenetelmiä Miksi pitää todistaa?

Ei-yhteydettömät kielet [Sipser luku 2.3]

Tietojenkäsittelyteorian alkeet, osa 2

SAT-ongelman rajoitetut muodot

Vaihtoehtoinen tapa määritellä funktioita f : N R on

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

Matematiikan tukikurssi, kurssikerta 2

IV. TASAINEN SUPPENEMINEN. f(x) = lim. jokaista ε > 0 ja x A kohti n ε,x N s.e. n n

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

Transkriptio:

2. Laskettavuusteoriaa Kaymme lapi ratkeamattomuuteen liittyvia ja perustuloksia ja -tekniikoita [HMU luku 9]. Taman luvun jalkeen opiskelija tuntee joukon keskeisia ratkeamattomuustuloksia osaa esittaa tyypillisia Turingin koneisiin liittyvia ongelmia formaalisti ja tarkastella niiden ratkeavuutta tunnettujen tulosten valosssa osaa yhdistaa kaytannon algoritmiongelmia tunnettuihin formaaleihin ratkeamattomuustuloksiin osaa tehda yksinkertaisia ratkeamattomuustodistuksia 82

Palautetaan mieliin terminologiaa: Kieli L koneella M. on rekursiivisesti lueteltava jos A = L(M) jollain Turingin Turingin kone on totaalinen jos se pysahtyy kaikilla syotteilla. (Joissain lahteissa kaytetaan termia "algoritmi" spesisti tallaisista koneista.) Kieli L koneella M. on rekursiivinen jos A = L(M) jollain totaalisella Turingin Vastaavasti Paatosongelma :! f 0; 1 g on osittain ratkeava jos vastaava kieli A = f x 2 j (x) = 1 g on rekursiivisesti lueteltava. Paatosongelma on ratkeava jos A on rekursiivinen. 83

Termien selityksia "rekursiivinen" tulee siita etta tama kieliluokka historiallisesti vakiintui Kleenen ja Godelin rekursiokonstruktion kautta "lueteltava" tulee siita etta A on rekursiivisesti lueteltava jos ja vain jos on olemassa "algoritmi" joka "luettelee" joukon A alkiot (ja vain ne) { jos x 2 A niin x esiintyy luettelossa jonkin aarellisen ajan kuluttua ja asia on selva { jos x 62 A niin x ei tule koskaan esiintymaan luettelossa, mutta tatahan ei voi tietaa pelkastaan katsomalla jotain luettelon aarellista alkuosaa Luetteloimisidea esitetaan myohemmin yksityiskohtaisemmin. Huom. kaikista laskennallisista ongelmista vain haviavan pieni osa on edes osittain ratkeavia, mutta tietojenkasittelytieteessa tietysti yleensa keskitytaan ratkeaviin ongelmiin. 84

Churchin-Turingin teesin mukaan ratkeavuus tarkoittaa samaa, kuin etta ongelma voidaan ratkaista jollain algoritmisella menettelylla. Esitamme jatkossa joukon Turingin koneita koskevia eksakteja matemaattisia tuloksia, mutta jos uskomme C-T:n teesin, nailla on siis yleisempia seurauksia. C-T:n teesi oikeastaan motivoi koko taman tutkimusohjelman, koska muuten Turingin koneet eivat valttamatta olisi kovin kiinnostava tutkimuskohde. (Tosin voidaan kumminkin argumentoida, etta Turingin kone on oikea malli sille mita ihminen voi mekaanisesti laskea, ja mita nykyiset tietokoneet voivat laskea.) Joka tapauksessa on kuitenkin selvaa, etta jos ongelma osataan ratkaista esim. Java-kielella, se voidaan ratkaista myos Turingin koneella (vrt. RAM-malli luvussa 1). Samoin joka tapauksessa jonkin ongelman ratkeamattomuuden osoittaminen on aina ei-triviaalia, koska pitaa osoittaa etta mikaan Turingin kone ei ratkaise sita. 85

Formaalin logiikan todistuvuusongelma (Motivoiva esimerkki yleisella tasolla; yksityiskohdat ks. esim. Matemaattinen logiikka) Annettu: ensimmaisen kertaluvun predikaattilogiikan kaava Kysymys: onko kaavalle olemassa todistus predikaattilogiikan aksioomista Voidaan "helposti" luetella kaikki logiikan aakkoston merkkijonot esim. leksikograsessa jarjestyksessa ja tarkistaa, sattuuko kyseinen merkkijono olemaan todistus jollekin kaavalle. Jos kaavalle ylipaansa on olemassa todistus, se loytyy jossain aarellisessa ajassa talla menettelylla. Siis todistuksen omaavien kaavojen joukko on rekursiivisesti lueteltava, ja todistuvuusongelma osittain ratkeava. Kuitenkin osoittautuu, etta todistuvuusongelma ei ole ratkeava. Emme siis voi taysin kiertaa sita ongelmaa, etta edella hahmoteltu ratkaisu ei pysahdy, jos kaavalla ei ole todistusta. 86

Pysahtymisongelma (johdanto) [HMU 9.1] Intuitiivisesti on kysymys seuraavasta ongelmasta: Annettu: Turingin kone M, merkkijono x Kysymys: pysahtyyko kone M syotteella x Tavoitteena on osoittaa tama ongelma ratkeamattomaksi. Ensimmainen osatavoite, puhtaasti tekninen ja kasitteellisesti yksinkertainen, on esittaa Turingin koneet merkkijonoina. Muutenhan niista ei olisi formaalisti mielekasta edes puhua algoritmin syotteena tms. Esitamme siis seuraavaksi yksinkertaisen koodauksen, joka liittaa jokaiseen Turingin koneeseen M = (Q; : : : ; F) merkkijonon w 2 f 0; 1 g ja kaantaen. 87

Turingin koneiden koodaus Rajoittaudutaan yksinauhaisiin koneisiin ja syoteaakkostoon = f 0; 1 g. Lisaksi oletetaan etta hyvaksyvia tiloja on tasan yksi ja se ei ole alkutila. Numeroidaan aakkoston f 0; 1 g merkkijonot siten, etta merkkijonon w numero on 1w binaariluvuksi tulkittuna. Olkoon w i merkkijono numero i; siis w 1 = ", w 2 = 0, w 3 = 1, w 4 = 00, w 5 = 01 jne. Oletetaan nyt M = (Q; f 0; 1 g ; ; ; q 1 ; #; F ) missa jqj = k, Q = f q 1 ; : : : ; q k g ja F = f q 2 g j j = m 3, = f X 1 ; : : : ; X m g, X 1 = 0, X 2 = 1, X 3 = # suunnat on numeroitu L = D 1 ja R = D 2 88

Nyt kaikki muu paitsi on numeroitu. koodataan yksittainen siirtyma (q i ; X j ) = (q k ; X l ; D m ) jonoksi 0 i 10 j 10 k 10 l 10 m huom. i; j; k; l; m 1 joten tassa ei koskaan tule kahta ykkosta perakkain merkkijono C 1 11C 2 11 : : : C n 1 11C n on koodi koneelle jossa on n siirtymaa joiden koodit ovat C 1 ; : : : ; C n Huomaa etta samalla koneella on tyypillisesti useita eri koodeja yksi merkkijono ei kuitenkaan voi koodata useita eri koneita jotkin merkkijonot eivat ole minkaan koneen koodeja 89

Olkoon M triv jokin kiintea Turingin kone joka hylkaa kaikki syotteet. Maaritellaan kaikille w 2 f 0; 1 g Turingin kone M w seuraavasti: jos w on jonkin koneen M koodi, niin M w on tama M muuten M w = M triv Aputuloksena pysahtymisongelman ratkeamattomuustodistuksessa osoitetaan, etta "diagonaalikieli" ei ole edes rekursiivisesti lueteltava. L d = f w 2 f 0; 1 g j w 62 L(M w ) g Kieli L d on hieman keinotekoinen. Sen merkitys on lahinna, etta sen avulla voidaan osoittaa muita kiinnostavampia ongelmia ratkeamattomaksi. 90

Analogia: Koodit ja ohjelmointikielet Eras mahdollinen analogia on seuraava: Tulkitaan, etta ohjelma hyvaksyy syotteen, jos sen suoritus paattyy normaalisti, ja hylkaa jos suoritus paattyy virheeseen. Lisaksi ohjelma voi jaada silmukkaan. Nyt Turingin kone M konekieliohjelma merkkijono w 2 f 0; 1 g ASCII-merkkijono (esim. C-ohjelma) M w ohjelma w kaannettyna M triv konekieliohjelma joka aina jakaa nollalla Lisaksi sovimme, etta M w = M triv C-ohjelma. jos w ei ole syntaktisesti korrekti Nyt C-ohjelma kuuluu joukkoon L d, jos se ei pysahdy normaalisti, kun (se kaannetaan ja) siille annetaan syotteena oma lahdekoodinsa. Huom. C-kieli ja konekieli ovat yhta "laskentavoimaisia", joten analogia voitaisiin ajatella toisinkin pain: konekieliohjelmasta voidaan kaantaa C-ohjelma. 91

Lause 2.1: [HMU Thm. 9.2] Kieli ei ole rekursiivisesti lueteltava. L d = f w 2 f 0; 1 g j w 62 L(M w ) g Todistus: Tehdaan vastaoletus etta L d = L(M) jollain M. Olkoon w jokin koneen M koodi; siis L d = L(M w ). Nyt w 2 L d, w 62 L(M w ), w 62 L d missa on ensin kaytetty kielen L d maaritelmaa ja sitten koodin w valintaperustetta; ristiriita. Nyt olemme saaneet ensimmaisen konkreettisen ratkeamattomuustuloksen. Jatkossa osoitamme suurelle joukolle ongelmia X, etta jos X osattaisiin ratkaista, niin L d voitaisiin tunnistaa. Tasta seuraa ongelman X ratkeamattomuus yo. lauseen nojalla. 92

Huomaa, etta edellisessa todistuksessa ei viela puhuttu mitaan Turingin koneista. Se on vain esimerkki yleisesta diagonalisoinnista: Jos A 1 ; A 2 ; : : : on mika tahansa jono kielia, voidaan muodostaa kieli B, missa Talloin B 62 f A 1 ; A 2 ; : : : g. w i 2 B jos ja vain jos w i 62 A i : Jatkossa tulee tarkeaksi, etta olemme valinneet nimenomaan A i = L(M wi), jolloin siis B = L d. Karkeasti ottaen tasta valinnasta seuraa, etta jos osaisimme algoritmisesti vastata kysymykseen pateeko x 2 L(M w ) mielivaltaisilla x ja w, osaisimme myos vastata kysymykseen pateeko x 2 L d, joka on (negaatiota vaille) edellisen kysymyksen erikoistapaus x = w. Edellisen lauseen perusteella tama on kuitenkin mahdotonta. 93

Rekursiivisuuden perusominaisuuksia [HMU 9.2.1-9.2.2] Ennen kuin ruvetaan tarkastelemaan varsinaisen pysahtymisongelman ratkeamattomuutta, on hyodyllista tarkastella rekursiivisten kielten luokan joitain perusominaisuuksia. Oletetaan jatkossa etta Turingin koneissa on tasan yksi hyvaksyva tila, ja tasta ei mitaan siirtymia tasan yksi sellainen ei-hyvaksyva tila, josta ei ole mitaan siirtymia (hylkaava lopputila) muuten kaikki siirtymat maariteltyja On helppo muuntaa mika tahansa Turingin kone tallaiseen muotoon. 94

Lause 2.2: Olkoot A; B rekursiivisia. Nyt myos A = A, A [ B ja A \ B ovat rekursiivisia. Todistus: Olkoon A = L(M A ) ja B = L(M B ) missa M A ja M B totaalisia. ovat Esitetaan Turingin koneet kaavamaisesti: alkutila hyvaksyva M hylkaava 95

Kielen A hyvaksyva kone saadaan vaihtamalla koneen M A hyvaksyva ja hylkaava lopputila keskenaan Kielen A [ B hyvaksymiseksi simuloidaan ensin konetta M A. { jos M A hyvaksyy, niin hyvaksytaan { jos M A hylkaa, niin simuloidaan konetta M B, jonka ratkaisu jaa voimaan (kuva seuraavalla sivulla) Tapaus A \ B seuraa koska A \ B = A [ B 96

MA MB Kielen A [ B tunnistaminen koneiden M A ja M B avulla 97

Lause 2.3: Olkoot A; B rekursiivisesti lueteltavia. Nyt myos A [ B ja A \ B ovat rekursiivisesti lueteltavia. Todistus: Harjoitustehtava. Sen sijaan yleisesti ei pade etta rekursiivisesti lueteltavan kielen A komplementti A olisi rekursiivisesti lueteltava. Sen sijaan patee Lause 2.4: Kieli A on rekursiivinen jos ja vain jos seka A etta A ovat rekursiivisesti lueteltavia. 98

Todistus: Jos A rekursiivinen, niin A on rekursiivinen, joten suunta vasemmalta oikealle on selva. Olkoot toisaalta M A ja M A koneet jotka tunnistavat kielet A ja A. Muodostetaan kaksinauhainen kone M, joka on totaalinen ja tunnistaa kielen A. Kone M simuloi konetta M A kayttaen ykkosnauhaansa ja konetta M A kayttaen kakkosnauhaansa. Simulaatiot suoritetaan lomittain, aina yksi askel kerrallaan kumpaakin. Jos simuloitava M A hyvaksyy, M hyvaksyy. Jos simuloitava M A hyvaksyy, M hylkaa. Koska jokaisella x joko x 2 L(M A ) tai x 2 L(M A ), aina tasan yksi simulaatioista hyvaksyy. (kuva seuraavalla sivulla) 99

MA M A Kielen A tunnistaminen totaalisella koneella jos A ja A ovat rekursiivisesti lueteltavia 100

Formalistisemmin tulos voidaan esittaa seuraavasti: Olkoon RE rekursiivisesti lueteltavien kielten joukko: RE = f L(M) j M mielivaltainen Turingin koneg : Olkoon co-re rekursiivisesti lueteltavien kielten komplemettien joukko: co-re = A j A 2 RE : Olkoon REC rekursiivisten kielten joukko: Edella esitetyn mukaan REC = f L(M) j M totaalinen g : REC = RE \ co-re: 101

Huomaa yhteys "rekursiivisen luettelemisen" ajatukseen: Oletetaan, etta jokin "algoritmi" M A osaa luetella kielen A; samoin M A kielelle A. Kun halutaan tietaa pateeko x 2 A, listataan rinnakkain joukkoja A ja A. Koska joko x 2 A tai x 2 A, niin jonkin aarellisen ajan kuluttua x esiintyy jommassa kummassa listassa ja vastaus tiedetaan. Myos A-lista tarvitaan, jotta voidaan taata pysahtyminen myos kielteisessa tapauksessa. 102

Universaalikieli [HMU 9.2.3-9.2.4] Seuraava askel kohti pysahtymisongelman ratkeamattomuutta on universaalikieli L u joka on muutenkin hyvin tarkea: Huom. L u = f w111x 2 f 0; 1 g j x 2 L(M w ) g : mikaan Turingin koneen koodi ei sisalla merkkijonoa 111 siis merkkijono z 2 f 0; 1 g voidaan esittaa korkeintaan yhdella tavalla muodossa z = w111x siten, etta w on validi Turingin koneen koodi jos w ei ole validi koodi, edella sovitun mukaan x 62 L(M w ) kaikilla x Osoitamme nyt etta universaalikieli on rekursiivisesti lueteltava, mutta ei rekursiivinen. Kielen L u tunnistavaa Turingin konetta U sanotaan universaaliksi Turingin koneeksi. (Universaalikone ei tietenkaan ole yksikasitteinen.) 103

Lause 2.5: [HMU Thm. 9.6(a)] Universaalikieli L u on rekursiivisesti lueteltava. Todistus: Muodostetaan nelinauhainen U jolle L u = L(U). Nauhojen kaytto syotteella z = w111x missa w on koneen M koodi: Nauha 1 sisaltaa syotteen z ja siis erityisesti koneen M siirtymafunktion koodin w Nauha 2 simuloi koneen M nauhan sisaltoa kayttaen samaa koodausta kuin siirtymafunktiossa; siis esim. patkaa : : : X 3 X 1 X 4 : : : esittaisi : : : 100010100001 : : : Nauha 3 simuloi koneen M tilaa; tila q i koodataan 0 i Nauha 4 on tyotilaa 104

Koneen U laskenta: Aluksi tarkista, onko syote muotoa w111x jollain validilla koodilla w. Jos ei ole, niin hylkaa. Muuten rupea simuloimaan konetta M = M w syotteella x. Kussakin askelessa 1. Olkoon nauhalla 3 jono : : : #0 i # : : : ja nauhalla 2 nauhapaasta alkaen jono 0 j 1. 2. Etsi koneen M kuvauksesta nauhalla 1 kohta : : : 110 i 10 j 1 : : :; jos ei loydy, niin hylkaa. 3. Olkoon nauhalta 1 loytynyt jono : : : 110 i 10 j 10 k 10 l 10 m 11 : : :. 4. Vaihda nauhan 3 sisalloksi 0 k ja nauhalle 2 nauhapaasta alkaen 0 l ; siirra nauhan 2 loppuosuutta tarpeen mukaan. 5. Siirra nauhan 2 nauhapaa seuraavaan ykkoseen vasemmalla (jos m = 1) tai oikealla (jos m = 2). 6. Jos q k on hyvaksyva tila (siis k = 2), hyvaksy. 105

Lause 2.6: [HMU Thm. 9.6(b)] Universaalikieli L u ei ole rekursiivinen. Seuraavalla kalvolla on varsinainen todistus, jossa kaytetaan tasmallisemmin Turingin kone -formalismia. Todistuksen idea on seuraava: Tehdaan vastaoletus, etta kieli L u = f w111x j x 2 L(M w ) g voidaan tunnistaa totaalisella Turingin koneella. Tama tarkoittaa, etta on olemassa kaikilla syotteilla x ja w pysahtyva proseduuri p(w; x), joka palauttaa tosi joss x 2 L(M w ). Nyt seuraava proseduuri q(w) palauttaa tosi joss w 2 L d (eli w 62 L(M w )): q(w): jos p(w; w) niin palauta epatosi muuten palauta tosi Tama on ristiriita, koska L d ei ole rekursiivinen (eika edes rekursiivisesti lueteltava). 106

Todistus: Tehdaan vastaoletus etta L u = L(M) jollain totaalisella M. Muodostetaan totaalinen M 0 jolle L(M 0 ) = L d, missa L d on aiemmin ei-rekursiiviseksi osoitettu diagonaalikieli; ristiriita. Kone M 0 toimii syotteella w seuraavasti: 1. Jos w ei ole validi koodi, hyvaksy. 2. Muuten muunna nauhan sisalloksi w111w. 3. Simuloi koneen M laskentaa; oletuksen mukaan tama johtaa joko hylkaavaan tai hyvaksyvaan lopputilaan. 4. Jos M hyvaksyy, niin hylkaa; jos M hylkaa, niin hyvaksy. Nyt w 2 L(M 0 ), (w ei validi koodi tai w111w 62 L u ), w 62 L(M w ), w 2 L d : 107

Pysahtymisongelma Voimme nyt formuloida pysahtymisongelman kieleksi H = f w111x 2 f 0; 1 g j w validi koodi ja M w pysahtyy syotteella x g : Lause 2.7: Kieli H on rekursiivisesti lueteltava. Todistus: Universaalikoneen U konstruktiota on helppo muuttaa siten etta se hyvaksyy jos ja vain jos simuloitavan koneen laskenta pysahtyy. Lause 2.8: Kieli H ei ole rekursiivinen. Todistus: Tehdaan vastaoletus etta H = L(M) jollain totaalilla M. Tasta saadaan helposti sellainen totaali M 0, etta L(M 0 ) = H ja hyvaksyessaan syotteen x kone M 0 jattaa laskennan lopuksi nauhalle alkuperaisen syotteen tyhjamerkkien ymparoimana. 108

Tasta saadaan totaalinen kone M 00 seuraavasti: joka tunnistaa universaalikielen L u 1. Tarkista etta syote on muotoa w111x missa w on validi koodi; jos ei ole, niin hylkaa. 2. Simuloi sitten konetta M 0 ; jos hylkasi niin hylkaa. 3. Jos M 0 hyvaksyi, kasittele sama syote universaalikoneella U, jonka hyvaksyminen tai hylkaaminen jaa voimaan. Universaalikoneen konstruktiosta nahdaan, etta U pysahtyy syotteella w111x jos ja vain jos M w pysahtyy syotteella x. Siis M 00 on totaali ja tunnistaa saman kielen kuin U; ristiriita 109

Seuraava ongelma on oleellisesti pysahtymisongelman komplementti eika siis edes osittain ratkeava. Lause 2.9: "Pysahtymattomyysongelma" e H missa eh = f w111x j w validi koodi, M w ei pysahdy syotteella x g ei ole rekursiivisesti lueteltava. Todistus: Pysahtymisongelman komplementti H voidaan esittaa muodossa H = e H [ E missa E = f z 2 f 0; 1 g n j z ei ole w111x millaan validilla koodilla w g : Selvasti E on rekursiivinen Siis jos e H olisi rekursiivisesti lueteltava, myos H = e H [ E olisi (Lause 2.3). Kieli H on rekursiivisesti lueteltava, joten jos H myos olisi, niin H olisi rekursiivinen (Lause 2.4); ristiriita. Siis e H ei voi olle rekursiivisesti lueteltava 110

Ohjelmointikielen pysahtymisongelma Turingin koneet ovat analogisia jollain ohjelmointikielella kirjoitettujen ohjelmien kanssa: Turingin kone -formalismi jonkin ohjelmointikieli Turingin kone talla kielella kirjoitettu ohjelma Turingin koneen koodi ohjelma kaannettyna konekielelle universaali Turingin kone konekielen tulkki joitain ohjelmointikielten ratkeamattomuustuloksia voidaan katevasti osoittaa suoraan (kuten johdannossa C-kielen pysahtymisongelma) voidaan myos kayttaa hyvaksi Turingin koneiden ja minka tahansa yleisohjelmointikielen samaa ilmaisuvoimaa ja siirtaa tulokset Turingin koneista ohjelmointikieliin "sama ilmaisuvoima" tarkoittaa tassa, etta mika tahansa ongelma voida ratkaista Turingin koneella jos ja vain jos se voidaan ratkaista kyseisella ohjelmointikielella 111

Esimerkki 2.10: C-kielen pysahtymisongelma Rajoitutaan tarkastelemaan C-kielen funktioita jotka saavat parametrina yhden merkkijonon ja palauttavat 0 tai 1 tai jaavat silmukkaan. Sanotaan etta tallainen funktio f hyvaksyy merkkijonon x jos f(x) palauttaa 1, ja on totaalinen jos f(x) pysahtyy kaikilla x. Ollaan valmiit uskomaan, etta kieli A voidaan tunnistaa (totaalisella) Turingin koneella jos ja vain jos se voidaan tunnistaa tallaisella (totaalisella) C-funktiolla. Taman uskomuksen tarkka perusteleminen vaatisi tietysti C-kielen semantiikan tarkkaa lapikaymista, mutta intuitiivisesti se on "selvasti" totta (vrt. RAM-malli). Halutaan osoittaa Turingin koneiden pysahtymisongelmalle analoginen tulos: mikaan totaalinen C-funktio ei tunnista kielta H C = f w x j w on C-funktio joka syotteella x pysahtyy g 112

Argumentti menee paapiirtessaan seuraavasti: koska C on yhta ilmaisuvoimainen kuin Turingin koneet, voidaan Turingin koneiden universaalikieli L u tunnistaa jollain (ei-totaalisella) C-funktiolla univt siis kysymykset Turingin koneen M w toiminnasta syotteella x palautuvat kysymyksiksi C-funktion univt toiminnasta syotteella w111x. erityisesti jos jokin C-funktio halts ratkaisisi C-funktioiden pysahtymisongelman, niin tata kautta se ratkaisisi myos Turingin koneiden pysahtymisongelman koska toisaalta Turingin koneet ovat yhta ilmaisuvoimaisia kuin C-funktiot, funktiota halts voitaisiin simuloida Turingin koneella nain saataisiin ratkaistuksi Turingin koneiden pysahtymisongelma; ristiriita 113

Esitetaan sama hieman yksityiskohtaisemmin. Vastaoletus siis on, etta jokin totaalinen C-funktio haltsc ratkaisee C-kielen pysahtymisongelman. "Tunnetusti" on olemassa C-funktio f u joka simuloi universaalia Turingin konetta U. Siis erityisesti f u syotteella w111x pysahtyy, jos ja vain jos M w syotteella x pysahtyy. Olkoon haltst C-funktio, joka syotteella z tekee kutsun haltsc(p*z) missa p on funktion f u teksti (joka siis on jokin merkkijonovakio). Tama on helppo konstruoida, kun haltsc oletetaan annetuksi. Siis haltst on totaalinen, ja funktiota haltsc koskevan oletuksen mukaan haltst(w111x) = 1, haltsc(p w111x) = 1, f u (w111x) pysahtyy, w111x 2 H: Toisaalta on selvasti olemassa totaalinen Turingin kone M H C-funktiota haltst. Siis M H ratkaisee Turingin koneiden pysahtymisongelman; ristiriita. joka simuloi 114