5.3 Ratkeavia ongelmia

Samankaltaiset tiedostot
Säännöllisen kielen tunnistavat Turingin koneet

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

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

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

Lisää pysähtymisaiheisia ongelmia

Täydentäviä muistiinpanoja laskennan rajoista

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.

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

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

Rekursiiviset palautukset [HMU 9.3.1]

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

2. Laskettavuusteoriaa

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

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

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

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

2. Laskettavuusteoriaa

Algoritmin määritelmä [Sipser luku 3.3]

ICS-C2000 Tietojenkäsittelyteoria

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

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

Rajoittamattomat kieliopit (Unrestricted Grammars)

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

Vastaus 1. Lasketaan joukkojen alkiot, ja todetaan, että niitä on 3 molemmissa.

Rajoittamattomat kieliopit

Miten perustella, että joukossa A = {a, b, c} on yhtä monta alkiota kuin joukossa B = {d, e, f }?

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

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

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

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

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

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

Chomskyn hierarkia ja yhteysherkät kieliopit

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

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

1. Universaaleja laskennan malleja

Johdatus matematiikkaan


Muita vaativuusluokkia

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

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

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Turingin koneen laajennuksia

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

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

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

Laskennan teoria

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

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

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

Output. Input Automaton

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

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

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

Automaatit. Muodolliset kielet

Laskennan teoria

Miten osoitetaan joukot samoiksi?

6.1 Rekursiiviset palautukset

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

Yhteydettömän kieliopin jäsennysongelma

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

Injektio. Funktiota sanotaan injektioksi, mikäli lähtöjoukon eri alkiot kuvautuvat maalijoukon eri alkioille. Esim.

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

Säännöllisten kielten sulkeumaominaisuudet

Kertausta 1. kurssikokeeseen

Ratkeavuus ja efektiivinen numeroituvuus

Laskennan mallit (syksy 2008) 2. kurssikoe , ratkaisuja

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

MS-A0402 Diskreetin matematiikan perusteet

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

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

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

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

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

Äärellisten automaattien ja säännöllisten lausekkeiden minimointi

Laskennan mallit (syksy 2010) 2. kurssikoe, ratkaisuja

Pinoautomaatit. Pois kontekstittomuudesta

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

Laskennan teoria

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

= k 0 NTIME(n k + k) Siis polynomisessa ajassa epädeterministisellä Turingin koneella tunnistettavien kielten joukko

T Syksy 2006 Tietojenkäsittelyteorian perusteet T Harjoitus 7 Demonstraatiotehtävien ratkaisut

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

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

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

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

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

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

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

Vieruskaverisi on tämän päivän luennolla työtoverisi. Jos sinulla ei ole vieruskaveria, siirry jonkun viereen. Esittäytykää toisillenne.

ICS-C2000 Tietojenkäsittelyteoria

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

S BAB ABA A aas bba B bbs c

10. Satunnaisalgoritmit

Lause (Cook-Levin) Kieli SAT = { on toteutuva lausekalkyylin kaava } on NP-täydellinen.

Tietojenkäsittelyteorian alkeet, osa 2

811120P Diskreetit rakenteet

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

Transkriptio:

153 5.3 Ratkeavia ongelmia Deterministisen äärellisten automaattien (DFA) hyväksymisongelma: hyväksyykö annettu automaatti B merkkijonon w? Ongelmaa vastaava formaali kieli on A DFA = { B, w B on DFA, joka hyväksyy w:n } Turingin kone voi helposti simuloida automaatin B toimintaa syötteellä w Jos simulointi päättyy hyväksyvään lopputilaan, hyväksyy kone syöteparin ja muutoin hylkää sen Automaatit voidaan koodata samaan tapaan kuin Turingin koneetkin 154 Lause 4.1 A DFA on rekursiivinen kieli. Epädeterministiset äärelliset automaatit voidaan determinisoida, joten niille pätee vastaava lause Säännölliset lausekkeet puolestaan voidaan muuntaa epädeterministisiksi äärellisiksi automaateiksi, joten myös niille pätee vastaava tulos Toisenlainen ongelma on tyhjyystestaus: niiden automaattien A tunnistaminen, joiden hyväksymä kieli on tyhjä E DFA = { A A on DFA ja L(A) = } Lause 4.4 E DFA on rekursiivinen kieli. 1

155 Turingin kone voi toimia seuraavasti: 1. Merkitsi automaatin alkutila 2. Toista kunnes uusia tiloja ei enää tule merkittyä: Merkitse jokainen tila, johon on siirtymä aiemmin merkitystä tilasta 3. Hyväksy syöte jos yksikään lopputiloista ei ole merkitty, muutoin hylkää se Myös kahden automaatin hyväksymän kielen ekvivalenssin testaaminen on ratkeava ongelma Ongelmaa vastaava kieli on EQ DFA = { A, B A ja B ovat DFAita ja L(A) = L(B) } EQ DFA :n rekursiivisuus seuraa lauseesta 4.4, kun siirrytään tarkastelemaan kielten L(A) ja L(B) symmetristä erotusta 156 L( C) ( L( A) \ L( B)) ( L( B) \ L( A)) ( L( A) L( B)) ( L( A) L( B)) L(C) = joss L(A) = L(B) Koska säännöllisten kielten luokka on suljettu yhdisteen, leikkauksen ja komplementoinnin suhteen, niin Turingin koneella voidaan muodostaa automaatti C annettuna A ja B Lauseen 4.4 perusteella voidaan testata onko L(C) tyhjä kieli Lause 4.5 EQ DFA on rekursiivinen kieli. Siirryttäessä tarkastelemaan kontekstittomia kielioppeja, ei voida tarkastella kaikkia mahdollisia johtoja, koska niitä voi olla ääretön määrä 2

157 Hyväksymisongelmassa voidaan siirtyä tarkastelemaan Chomskyn normaalimuotoon muutettua kielioppia, jolloin merkkijonon w, w = n, johdon pituus on 2n-1 Kontekstittomien kielioppien tyhjyystestaus voidaan ratkaista toisin Sen sijaan kontekstittomien kielioppien tuottamien kielten ekvivalenssin testaaminen on ratkeamaton ongelma Hyväksymisongelman ratkeavuuden perusteella kaikki kontekstittomat kielet ovat ratkeavia Näin ollen siis säännölliset kielet ovat (aito) osajoukko kontekstittomista, jotka ovat ratkeavia ja ratkeavat ovat aito osajoukko Turing-tunnistettavista kielistä 158 5.4 Äärettömistä joukoista Diagonalisoinnin kehitti 1873 Georg Cantor, joka tutki äärettömien joukkojen mahtavuuksien vertailua Äärellisillä joukoilla voimme laskea alkioiden lukumäärät Ovatko numeroituvat joukot = { 0, 1, 2, } ja + = { 1, 2, 3, } yhtä suuret? on suurempi, koska se sisältää ylimääräisen alkion 0 ja muuten kaikki samat alkiot kuin + (?) Joukot ovat yhtä mahtavat, koska jokainen + :n alkio voidaan kuvata :n alkiolle kuvauksella f(z) = z-1 (?) 3

159 Aiemmin jo käytimme tätä suuruusvertailua: A B jos ja vain jos on olemassa injektio f: A B injektio: a 1 a 2 f(a 1 ) f(a 2 ) Aiemmin tarkastelimme joukkojen yhtäsuuruutta A = B bijektiivisen f: A B kuvauksen kautta Bijektio = injektio + surjektio Surjektio: f(a) = B eli b B: a A: b = f(a) Bijektio asettaa joukkojen A ja B alkiot pareittain 1-1-suhteeseen = + Joukko, joka on yhtä suuri kuin on numeroituva 160 Rationaalilukujen joukko = { m/n m, n n 0 } Kahden eri luonnollisen luvun välissä on aina äärettömästi rationaalilukuja Silti = Kuvaus f: 2, f(m/n) = (m, n) Luvuilla m ja n ei yhteisiä tekijöitä! Kuvaus f on funktio ja injektio, joten 2 = Toisaalta = 4

161 = 0 1 2 3 4 5 6 0-1 1-2 2-3 3 2 = 2 = = 2 2 = 2 (helpohko) Seuraa transitiivisuudesta 0,0 0,1 0,2 0,3 0,4 1,0 1,1 1,2 1,3 1,4 2,0 2,1 2,2 2,3 2,4 3,0 3,1 3,2 3,3 3,4 4,0 4,1 4,2 4,3 4,4 162 < Sovelletaan Cantorin diagonalisointitekniikkaa välin [0, 1[ lukuihin x 1, x 2, x 3, Olkoon väliin kuuluvien lukujen desimaalikehitelmät (ilman äärettömiä 9-jonoja) x i = j + d ij 10 -j Muodostetaan uusi luku s.e. x = j + d j 10 -j 0, d j 1, jos d jos d jj jj 0 0 5

163 Jos esim. x 1 = 0,23246 x 2 = 0,30589 x 3 = 0,21754 x 4 = 0,05424 x 5 = 0,99548 niin x = 0,01000 Siis x x i kaikilla i, joten oletus välin [0, 1[ lukujen numeroituvuudesta on väärä = [0, 1[ 164 5.5 Universaalit Turingin koneet Aakkoston { 0, 1 } universaalikieli U on U = { M, w w L(M) }. Kieli U sisältää tiedon kaikista aakkoston { 0, 1 } RE-kielistä: Olkoon A { 0, 1 }* jokin RE-kieli ja M kielen A tunnistava standardimallinen Turingin kone. Tällöin A = { w { 0, 1 }* M, w U }. Myös U on itsekin RE-kieli. Kielen U tunnistavia Turingin koneita sanotaan universaaleiksi Turingin koneiksi. 6

165 Lause 5.6 U on RE-kieli Todistus. Kielen tunnistaa seuraava kolminauhainen Turingin kone M U. 1. Ensin M U tarkastaa, että nauhan 1 alussa olevassa syötteessä cw, c on kelvollinen Turingin koneen koodi. Jos syöte ei ole kelvollinen, M U hylkää sen 2. Muutoin w = a 1 a 2 a k { 0, 1 }* kopioidaan nauhalle 2 muodossa 00010 a 1+1 10 a 2+1 1 10 a k+1 10000 3. M U :n on selvitettävä hyväksyisikö kone M (c = M) syötteen w. Nauha 1 sisältää koneen M kuvauksen c, nauha 2 simuloi M:n nauhaa ja nauha 3 pitää yllä tietoa koneen M tilasta: q i ~0 i+1 166 4.M U toimii vaiheittain, simuloiden kussakin vaiheessa yhden koneen M siirtymän 1.Ensin M U etsii nauhalta 1 M:n koodauksen sen kohdan, joka vastaa M:n simuloitua tilaa (nauha 3) ja nauhan 2 nauhapään kohdalla olevaa merkkiä 2.Olkoon löydetty koodinkohta 0 i+1 10 j+1 10 r+1 10 s+1 10 t+1, joka vastaa siirtymäftion sääntöä (q i, a j ) = (q r, a s, t ). nauha 3: 0 i+1 0 r+1 nauha 2: 0 j+1 0 s+1 Lisäksi nauhan 2 nauhapäätä siirretään yhden merkin koodin verran vasemmalle, jos t = 0, ja oikealle muuten 7

167 3. Kun nauhalla 1 ei ole yhtään simuloituun tilaan q i liittyvää koodia, kone M on tullut lopputilaan. Nyt i = k+1 tai i = k+2, missä q k on viimeinen koodattu tila. Kone M U siirtyy lopputilaan accept tai reject. Selvästi kone M U hyväksyy binäärijonon M, w jos ja vain jos w L(M). 168 Lause 5.7 Kieli U ei ole rekursiivinen Todistus. Oletetaan, että U:lla olisi totaalinen tunnistajakone M UT. Tällöin ``diagonaalikielelle'' D, joka ei ole RE-kieli, voitaisiin muodostaa tunnistajakone M D koneesta M UT ja seuraavista totaalisista koneista. M OK testaa onko syötteenä annettu merkkijono kelvollinen Turingin koneen koodi M DUP duplikoi syötejonon c nauhalle: cc 8

169 Yhdistämällä koneet seuraavan kuvan esittämällä tavalla muodostuu kone M D, joka on totaalinen, jos M UT on. Lisäksi c L(M D ) c L(M OK ) cc L(M UT ) c L(M c ) c D = { c c L(M c ) } Lemman 5.5 perusteella kieli D ei ole rekursiivinen, joten oheinen tulos on ristiriita. Näin ollen oletuksen tulee olla väärä ja kielen U tunnistavaa totaalista konetta M UT ei voi olla olemassa. 170 c cc M OK M DUP M U T Diagonaalikielen tunnistava Turingin kone 9

171 Seuraus 5.8 = { M, w w L(M) } ei ole RE-kieli Todistus. = ERR, missä ERR on helposti tunnistettava rekursiivinen kieli: ERR = { x { 0, 1 }* x ei sisällä alkuosanaan kelvollista Turingin koneen koodia }. Tehdään vastaoletus: on RE-kieli Lauseen 5.2 perusteella ERR = on RE-kieli U on RE-kieli (5.6) ja edellisen mukaan on RE-kieli, joten lauseen 5.3 perusteella U on rekursiivinen Tämä on ristiriita lauseen 5.7 kanssa, joten vastaoletus ei päde. Siis ei ole RE-kieli. 172 5.6 Pysähtymisongelma Turingin koneiden pysähtymisongelma (halting problem) on kysymys Pysähtyykö annettu Turingin kone M syötteellä w? Ongelma on ratkeamaton. Jos se voitaisiin ratkaista, niin universaalikieli voitaisiin helposti tunnistaa totaalisesti Lause 4.11 H = { M, w M pysähtyy syötteellä w } on RE-kieli, mutta ei rekursiivinen Todistus. H on RE-kieli: Lauseen 5.6 universaalikoneesta M U on helppo muokata kone, joka simuloi koneen M laskentaa syötteellä w ja pysähtyy hyväksyvään lopputilaan, jos ja vain jos simuloitu laskenta pysähtyy. 10

173 H ei ole rekursiivinen: vastaoletus: H = L(M H ) totaalisella Turingin koneella M H. Nyt kielelle U voidaan muodostaa totaalinen tunnistaja yhdistämällä koneet M U ja M H seuraavan kuvan esittämällä tavalla. Tällaisen koneen olemassaolo on ristiriita Lauseen 5.7 kanssa. Näin ollen vastaoletus on väärä ja H ei ole rekursiivinen. Seuraus 5.9 = { M, w M ei pysähdy syötteellä w } ei ole RE-kieli Todistus. Kuten seuraus 5.8. 174 M, w M H M U Universaalikielen U tunnistava totaalinen Turingin kone 11

175 5.7 Chomskyn kieliluokat Formaali kieli L voidaan tunnistaa Turingin koneella, jos ja vain jos se voidaan tuottaa rajoittamattomalla kieliopilla Näin ollen rajoittamattomilla kieliopeilla tuotettavat kielet ovat REkielet. Toisaalta tämä on Chomskyn kielihierarkian luokka 0 Chomskyn luokka 1 puolestaan on kontekstiset kielet. Voidaan osoittaa, että ne kaikki ovat rekursiivisia On olemassa rekursiivisia kieliä, joita ei voida tuottaa kontekstisilla kieliopeilla 176 0: RE-kielet D,,, Rekursiiviset kielet 1: Kontekstiset kielet U, H, 2: Kontekstittomat kielet 3: Säännölliset kielet Äärelliset kielet esim. { a k b k c k k 0 } esim. {a k b k k 0 } esim. { a k k 0 } 12

177 Pysähtymisongelma ohjelmointikielellä Turingin koneiden ja ohjelmointikielten vastaavuus: Koneet ~ ohjelmointikieli Kone ~ ohjelma Koneen koodi ~ ohjelman konekieliesitys Universaalikone ~ konekielen tulkki Esimerkiksi pysähtymisongelman ratkeamattomuuden ohjelmointikielitulkinta on: ``Ei ole olemassa totaalista Java-menetelmää, joka ratkaisisi, pysähtyykö annettu Java-menetelmä M annetulla syötteellä w''. 178 Oletetaan, että on olemassa totaalinen Java-menetelmä h, joka palauttaa arvon true jos merkkijonon m esittämä menetelmä pysähtyy syötteellä w, jafalse muuten: boolean h(string m, String w) Nyt voidaan toteuttaa menetelmä hhat boolean hhat( String m ) { if (h(m,m)) while (true) ;} Olkoon H menetelmän hhat merkkijonoesitys.hhat toimii seuraavasti: hhat(h) pysähtyy h(h,h) = false hhat(h) ei pysähdy 13

179 6. Palautuvuus Pysähtymisongelman ratkeamattomuuden todistus on esimerkki palautuksesta Jos pysähtymisongelma olisi ratkeava, niin myös universaalikieli olisi rekursiivinen Palautus itsessään ei kerro mitään kummankaan ongelman ratkeavuudesta, niillä vain on tämä kytkentä Tiedämme muuta kautta, että universaalikieli ei ole rekursiivinen Ongelman A ollessa palautettavissa ongelmaan B, A:n ratkaiseminen ei voi olla vaikeampaa kuin B:n Jos voimme palauttaa ratkeamattoman ongelman toiseen ongelmaan, on jälkimmäisenkin oltava ratkeamaton 180 Epätyhjyysongelma Seuraava päätösongelma on ratkeamaton: ``Hyväksyykö annettu Turingin kone yhtään syötemerkkijonoa?' NE = { c { 0, 1 }* L(M c ) } Lause (5.2) NE on RE-kieli, mutta ei rekursiivinen Todistus. NE on RE-kieli osoitetaan harjoituksissa. Oletetaan sitten, että NE:llä olisi totaalinen tunnistajakone M T NE Tämän avulla voitaisiin muodostaa totaalinen tunnistajakone kielelle U Olkoon M mv. Turingin kone, jonka toimintaa syötteellä w tarkastellaan 14

181 Merkitään M w :llä konetta, joka korvaa kulloisenkin todellisen syötteen aina merkkijonolla w = a 1 a 2 a k ja toimii sitten kuten M Koneen M w toiminta ei riipu laisinkaan sen todellisesta syötteestä. Se joko hylkää tai hyväksyy kaikki syötteet: L( M w 0,1 ) 0 *, jos w L( M ) jos w L( M ) 182 */*, L */A, R */a 2, R */, L */a k, R A/a 1, L M Turingin kone M w 15

183 Olkoon M ENC kone, joka saa syötteenään Turingin koneen M koodin M sekä binäärijonon w katenaation, M, w, ja jättää tuloksena nauhalle koneen M w koodin M w M, w M w M ENC Nyt kone M ENC ja kielen NE totaalinen tunnistajakone M T NE yhdistämällä saataisiin seuraavan kuvan esittämä Turingin kone M U T 184 M, w M w M T NE M ENC Universaalikielen U tunnistava totaalinen Turingin kone M U T 16

185 M UT on totaalinen jos M T NE on, ja L(M U T ) = U, koska M, w L(M UT ) M w L(M T NE ) = NE L(M w ) w L(M) M, w U Lauseen 5.7 perusteella U ei kuitenkaan ole rekursiivinen, joten koneen M UT olemassaolo on ristiriita Näin ollen kielellä NE ei voi olla totaalista tunnistajakonetta M T NE Olemme siis todistaneet, että kieli NE ei ole rekursiivinen 17