17 Nmeroitat ja linmeroitat jokot Määritelmä 110 Jokko X on nmeroitasti ääretön, jos on olemassa bijektio f : N X Jokko on nmeroita, jos se on äärellinen tai nmeroitasti ääretön Jokko, joka ei ole nmeroita on linmeroita Intitiiisesti sanoen jokko X on nmeroita, jos sen alkiot oidaan järjestää ja indeksoida lonnollisilla lilla: X = { 0, 1, 2,, n 1 }, jos X on n-alkioinen äärellinen jokko ja X = { 0, 1, 2,}, jos X on nmeroitasti ääretön Nmeroitan jokon kaikki osajokot oat mös nmeroitia (HT), mtta linmeroitilla jokoilla on sekä nmeroitia että linmeroitia osajokkoja iten linmeroitat jokot oat jossain mielessä isompia kin nmeroitat Lase 111 Minkä tahansa aakkoston Σ merkkijonojen jokko Σ on nmeroitasti ääretön Todists Modostetaan bijektio f : N Σ seraaasti Olkoon Σ = {a 1,a 2,,a n } Kiinnitetään Σ:n merkeille jokin aakkosjärjests ; olkoon se a 1 < a 2 < < a n Jokon Σ merkkijonot oidaan nt letella alitn aakkosjärjestksen shteen kanonisessa t leksikografisessa järjestksessä (engl canonical t leicographic order) seraaasti: ensin letellaan 0:n mittaiset merkkijonot (= ε), sitten 1:n mittaiset (= a 1,a 2,,a n ), sitten 2:n mittaiset jne; knkin pitsrhmän sisällä merkkijonot letellaan aakkosjärjestksessä Bijektio f on siis: 0 ε 1 a 1 2 a 2 n a n n+1 a 1 a 1 n+2 a 1 a 2 2n a 1 a n 2n+1 a 2 a 1 3n a 2 a n n 2 + n a n a n n 2 + n+1 a 1 a 1 a 1 n 2 + n+2 a 1 a 1 a 2 Itse asiassa millä tahansa ohjelmointikielellä kirjoitett ohjelmat oat kielen persaakkoston (esim C-kielessä CII-merkistön) merkkijonoja Laseen 111 mkaan minkä tahansa aakkoston merkkijonojen jokko on nmeroitasti ääretön, joten mös millä tahansa ohjelmointikielellä mahdollisten ohjelmien jokko on nmeroita eraaaksi todistetaan, että kaikkien formaalien kielten jokko on linmeroita Formaaleja kieliä on siis enemmän kin mahdollisia tietokoneohjelmia, ja siksi millään ohjelmointikielellä ei oida laatia tnnistsatomaatteja kaikille formaaleille kielille (Tai toisin sanoen: on olemassa periaatteessa mahdollisia I/O-kaksia, joita ei oida totettaa tietokoneella)
Lase 112 Minkä tahansa aakkoston Σ kaikkien formaalien kielten perhe on linmeroita Todists (ns Cantorin diagonaaliargmentti) Merkitään aakkoston Σ kaikkien formaalien kielten perhettäp (Σ ) = Tehdään astaolets: oletetaan, että olisi olemassa kaikki Σ:n formaalit kielet kattaa nmerointi: = { 0, 1, 2,} Olkoot Σ :n merkkijonot kanonisessa järjestksessä 0, 1, 2, Määritellään em nmerointeja kättäen formaali kieli Ã: à = { i Σ i / i } Koska à ja :n nmerointi oletettiin kattaaksi, pitäisi olla à = k jollakin k N Mtta tällöin Ã:n määritelmän mkaan k à k / k = à à 0 1 2 3 0 1 0 0 0 1 1 0 2 1 1 3 0 0 0 0 1 0 0 0 1 1 1 0 Kallisesti todistksen idea oidaan esittää seraaasti Modostetaan kielten 0, 1, 2, ja merkkijonojen 0, 1, 2, insidenssimatriisi, jonka riin i sarakkeessa j on aro 1 jos i j ja mten 0 Tällöin kieli à poikkeaa kstakin kielestä k matriisin diagonaalilla : aat ristiriita osoittaa, että astaolets on äärä 18 *Ekskrsio: Tringin psähtmisongelma Laseiden 111 ja 112 mkaan on siis olemassa formaaleja kieliä (I/O-kaksia), joita ei oida totettaa esim C-ohjelmilla Entä jokin konkreettinen esimerkki tällaisesta? Tnnetin esimerkki on ns Tringin psähtmisongelma (lan Tring, 1936) C-ohjelmia kättäen tlos oidaan motoilla seraaasti: Väite Ei ole olemassa C-fnktiota halt(p,), joka saa sötteenään mielialtaisen C-fnktion tekstin p ja tälle tarkoitetn sötteen ja tottaa tloksen 1, jos p:n sorits psäht sötteellä, ja 0 jos p:n sorits :llä jää ikiseen silmkkaan Todists Oletetaan äitteen astaisesti, että tällainen fnktio halt oitaisiin laatia Modostetaan tätä kättäen toinen fnktio confse (ks alla) Merkitään fnktion confse ohjelmatekstiä c:llä ja tarkastellaan fnktion confse laskentaa tällä omalla kaksellaan oid confse(char *p){ int halt(char *p, char *){ /* Fnktion halt rnko */ } if (halt(p,p) == 1) hile (1); } aadaan ristiriita: confse(c) psäht halt(c,c) == 1 confse(c) ei psähd Ristiriidasta seraa, että oletetta psähtmistestasfnktiota halt ei oi olla olemassa amanskisia ns ratkeamattomia ongelmia on itse asiassa paljon siaan palataan krssin lopppolella
28 äännöllisten kielten rajoitksista Kardinaliteettisistä on oltaa olemassa (paljon) ei-säännöllisiä kieliä: kieliä on linmeroita määrä, säännöllisiä lasekkeita ain nmeroitasti Voidaanko lötää konkreettinen, mielenkiintoinen esimerkki kielestä, joka ei olisi säännöllinen? Helposti äännöllisten kielten persrajoits: äärellisillä atomaateilla on ain rajallinen misti iten ne eiät pst ratkaisemaan ongelmia, joissa aaditaan mielialtaisen srten lkjen tarkkaa mistamista Esimerkki: slklasekekieli L match = {( k ) k k 0} Formalisointi: pmppaslemma Lemma 26 (Pmppaslemma) Olkoon säännöllinen kieli Tällöin on olemassa sellainen n 1, että mikä tahansa, n, oidaan jakaa osiin = siten, että n, 1, ja i kaikilla i = 0,1,2, Todists Olkoon M jokin :n tnnistaa deterministinen äärellinen atomaatti, ja olkoon n M:n tilojen määrä Tarkastellaan M:n läpikämiä tiloja sötteellä, n Koska M jokaisella :n merkillä siirt tilasta toiseen, sen tät klkea jonkin tilan katta (ainakin) kaksi kertaa itse asiassa jo :n n:n ensimmäisen merkin aikana Olkoon q ensimmäinen toistett tila Olkoon M:n käsittelemä :n alkosa sen tllessa ensimmäisen kerran tilaan q, se osa :stä jonka M käsittelee ennen ensimmäistä q paltaan q:hn, ja lopt :stä Tällöin on n, 1, ja i kaikilla i = 0,1,2, Esimerkki Tarkastellaan em slklasekekieltä (merk ( = a, ) = b): L = L match = {a k b k k 0} Oletetaan, että L olisi säännöllinen Tällöin pitäisi pmppaslemman mkaan olla jokin n 1, jota pitempiä L:n merkkijonoja oidaan pmpata Valitaan = a n b n, jolloin = 2n > n Lemman mkaan oidaan jakaa pmpattaaksi osiin =, n, 1; siis on oltaa = a i, = a j, = a n (i+j) b n, i n 1, j 1 Mtta esimerkiksi 0-kertaisesti pmpattaessa: 0 = a i a n (i+j) b n = a n j b n L q iten L ei oi olla säännöllinen
38 Yhtedettömien kielten rajoitksista Yhtedettömille kielille on oimassa säännöllisten kielten pmppaslemman astine Nt kitenkin merkkijonoa on pmpattaa samanaikaisesti kahdesta paikasta Lemma 39 ( -lemma ) Olkoon L htedetön kieli Tällöin on olemassa sellainen n 1, että mikä tahansa z L, z n, oidaan jakaa osiin z = siten, että (i) 1, (ii) n, (iii) i i L kaikilla i = 0,1,2, Todists Olkoon G = (V, Σ, P, ) Chomskn normaalimotoinen kielioppi L:lle Tällöin missä tahansa G:n jäsennspssa, jonka korkes on h, on enintään 2 h lehteä Toisin sanoen, minkä tahansa z L jokaisessa jäsennspssa on polk, jonka pits on ähintään log 2 z Olkoon k = V Σ kieliopin G älikkeiden määrä setetaan n = 2 k+1 Tarkastellaan jotakin z L, z n, ja sen jotakin jäsennspta Edellisen nojalla pssa on polk, jonka pits on k + 1; tällä pollla on siis jonkin älikkeen toistttaa itse asiassa jo poln k + 2 alimman solmn jokossa Olkoon jokin tällainen älike Merkkijono z oidaan nt osittaa z =, missä on :n alimmasta ilmentmästä totett osajono ja seraaaksi lemmästä :n ilmentmästä totett osajono; osajonot saadaan johdosta Koska siis, ja, osajonoja ja oidaan pmpata :n mpärillä: 2 2 i i i i iten i i L kaikilla i = 0,1,2,
Esimerkki Tarkastellaan kieltä L = {a k b k c k k 0} Koska kielioppi G on Chomskn normaalimodossa ja, on oltaa 1 Koska edelleen älikkeen alinnan persteella sen toiseksi lin ilmentmä on enintään korkedella k + 1 jäsennspn lehdistä, on tähän ilmentmään jrtan alipn totokselle oimassa pitsraja 2 k+1 = n Oletetaan, että L olisi htedetön; alitaan parametri n lemman mkaisesti ja tarkastellaan merkkijonoa z = a n b n c n L Lemman 39 mkaan z oidaan jakaa pmpattaaksi osiin z =, 1, n Viimeisen ehdon takia merkkijono ei oi sisältää sekä a:ta, b:tä että c:tä Merkkijonossa 0 0 = on siten lijäämä jotakin merkkiä mihin merkkeihin nähden, eikä se oi olla kielen L määritelmässä aaditta motoa, aikka lemman mkaan pitäisi olla L