Esimerkki 2.28: Tarkastellaan edellisen sivun ehdot (1) (3) toteuttavaa pinoautomaattia, jossa päätemerkit ovat a, b ja c ja pinoaakkoset d, e ja $:

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

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

Yhteydettömän kieliopin jäsennysongelma

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

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

Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

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

Osoitamme, että jotkut kielet eivät ole säännöllisiä eli niitä ei voi tunnistaa äärellisellä automaatilla.

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

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Pinoautomaatit. Pois kontekstittomuudesta

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

Säännöllisten kielten sulkeumaominaisuudet

Kertausta 1. kurssikokeeseen

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

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

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

Chomskyn hierarkia ja yhteysherkät kieliopit

Rajoittamattomat kieliopit

S BAB ABA A aas bba B bbs c

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

Yhteydettömät kieliopit [Sipser luku 2.1]

Olkoon G = (V,Σ,P,S) yhteydetön kielioppi. Välike A V Σ on tyhjentyvä, jos A. NULL := {A V Σ A ε on G:n produktio};

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

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

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

2. Yhteydettömät kielet

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

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

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

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut

Turingin koneen laajennuksia

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

M =(K, Σ, Γ,, s, F ) Σ ={a, b} Γ ={c, d} = {( (s, a, e), (s, cd) ), ( (s, e, e), (f, e) ), (f, e, d), (f, e)

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

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

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

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

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

ICS-C2000 Tietojenkäsittelyteoria

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 6. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Täydentäviä muistiinpanoja laskennan rajoista

Kaikki mitä olet aina halunnut tietää pumppauslemmoista, mutta mitä et ole kehdannut kysyä

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

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

Laskennan mallit (syksy 2010) 2. kurssikoe, ratkaisuja

Lisää pysähtymisaiheisia ongelmia

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

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

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

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

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

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

Rekursiiviset palautukset [HMU 9.3.1]

Miten osoitetaan joukot samoiksi?

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

Algoritmin määritelmä [Sipser luku 3.3]

Rajoittamattomat kieliopit (Unrestricted Grammars)

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

Formalisoimme nyt edellä kuvatun laskennan.

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

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

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

1 sup- ja inf-esimerkkejä

1 sup- ja inf-esimerkkejä

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

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta

= 5! 2 2!3! = = 10. Edelleen tästä joukosta voidaan valita kolme särmää yhteensä = 10! 3 3!7! = = 120

1. Universaaleja laskennan malleja

5.3 Ratkeavia ongelmia

isomeerejä yhteensä yhdeksän kappaletta.

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

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 2. helmikuuta 2012

Johdatus matemaattiseen päättelyyn

verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari

Säännöllisten operaattoreiden täydentäviä muistiinpanoja

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

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

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

Kaikki kurssin laskuharjoitukset pidetään Exactumin salissa C123. Malliratkaisut tulevat nettiin kurssisivulle.

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

11.4. Context-free kielet 1 / 17

Automaatit. Muodolliset kielet

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

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

Tehtävä 8 : 1. Tehtävä 8 : 2

8. Kieliopit ja kielet

Muodolliset kieliopit

Kannan vektorit siis virittävät aliavaruuden, ja lisäksi kanta on vapaa. Lauseesta 7.6 saadaan seuraava hyvin käyttökelpoinen tulos:

1 + b t (i, j). Olkoon b t (i, j) todennäköisyys, että B t (i, j) = 1. Siis operaation access(j) odotusarvoinen kustannus ajanhetkellä t olisi.

Laskennan mallit

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

Esitetään tehtävälle kaksi hieman erilaista ratkaisua. Ratkaisutapa 1. Lähdetään sieventämään epäyhtälön vasenta puolta:

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

S uay uvaxy uv 2 Ax 2 y... uv i Ax i y uv i wx i y.

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

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

Säännöllisen kielen tunnistavat Turingin koneet

Diskreetin Matematiikan Paja Ratkaisuhahmotelmia viikko 1. ( ) Jeremias Berg

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

Transkriptio:

Esimerkki 2.28: Tarkastellaan edellisen sivun ehdot (1) (3) toteuttavaa pinoautomaattia, jossa päätemerkit ovat a, b ja c ja pinoaakkoset d, e ja $: a, ε d b, d ε ε, ε $ b, d ε 1 2 3 6 c, ε e c, ε e c, ε e 4 5 ε, $ ε ε, e ε Automaatti tunnistaa kielen { a n b n c m n 0, m > 0 }, joka voidaan tuottaa kieliopilla S XC X axb ε C cc c Ongelmana on löytää yleiskäyttöinen menetelmä, jolla automaatista saadaan jokin saman kielen tunnistava kielioppi. 201

Seuraavanlaiset laskennat automaatissa osoittautuvat konstruktion kannalta keskeisiksi: aluksi automaatti on tilassa p Q ja pino on tyhjä siirtymät kuluttavat syötettä merkkijonon w Σ verran ja lopuksi automaatti on tilassa q Q ja pino on taas tyhjä. Tässä ajatellaan, että automaatti aluksi pakotetaan tilaan p ja sen pino tyhjennetään; emme ota kantaa siihen, voiko automaatti todella joutua tällaiseen tilanteeseen. Merkitsemme p w q, jos ylläesitetty laskentaketju on mahdollinen. Huomaa erityisesti, että automaatti hyväksyy merkkijonon w, jos ja vain jos w q start qaccept. Tavoitteena on muodostaa kielioppi, jossa muuttujina on A p,q kaikilla automaatin tiloilla p ja q A p,q w pätee, jos ja vain jos p w q. 202

Edellisen sivun määrittely ehdolle p w q on yhtäpitävää sen kanssa, että seuraava on mahdollista millä tahansa n N: aluksi automaatti on tilassa p ja pinossa on tasan n merkkiä, siirtymät kuluttavat syötettä merkkijonon w verran ja pinossa on koko ajan ainakin n merkkiä ja lopuksi automaatti on tilassa q ja pinossa on taas tasan n merkkiä. Ehto nimittäin sanoo, että siirtyessään tilasta p syötteellä w tilaan q automaatti ei kurki pinon vanhoja sisältöjä, joten pinon alkutilanteella ei ole merkitystä. Toisin sanoen laskennan edetessä tilasta p syötteellä w tilaan q pinossa alun perin olleisiin merkkeihin ei kosketa ja kaikki pinoon laskennan aikana painetut uudet merkit myös poistetaan sieltä. 203

Palataan nyt esimerkkiautomaattiimme ja tarkastellaan merkkijonon aabbc hyväksyvää laskentaa. Siirtymänuolten päälle on merkitty vastaavat syötemerkit, ja pinon sisältö on merkitty kunkin tilan kohdalle. d d d d $ $ $ $ $ $ $ ε a a b b c ε ε 1 2 2 2 3 3 4 5 6 Laskennasta voidaan havaita seuraavat laskentaketjut, jotka jättävät pinon ennalleen: 1 aabbc 6 (pino aluksi ja lopuksi tyhjä) 2 aabbc 5 (pinossa aluksi ja lopuksi $) 2 aabb 3 (pinossa aluksi ja lopuksi $) 2 ab 3 (pinossa aluksi ja lopuksi d$) 3 c 5 (pinossa aluksi ja lopuksi $) Tavoitteena on vangita tämä rakenne yhteydettömään kielioppiin. e 204

Lemman 2.27 todistushahmotelma: Lähdemme siis liikkeelle pinoautomaatista M = (Q, Σ, Γ, δ, q start, { q accept }) ja muodostamme yhteydettömän kieliopin G, jolla L(G) = L(M). Oletamme, että automaatti täyttää sivun 200 ehdot (1) (3) eli erityisesti jokainen siirtymä on joko push-siirtymä tai pop-siirtymä. Edellä esitetyn mukaisesti kieliopin muuttujajoukoksi tulee { A p,q p, q Q }, ja kaikilla p, q Q halutaan A p,q w jos ja vain jos p w q. Tarkastellaan laskentaa, jossa automaatti siirtyy tilasta p syötteellä w tilaan q siten, että pino sisältää laskennan aluksi ja lopuksi tasan samat merkit. Triviaalitapaus on, että p = q ja w = ε; tämä siis vastaa nollan pituista laskentaa. Siis kaikilla p Q pätee p ε p, joten voimme ottaa kielioppiin säännön A p,p ε. 205

Edellisen triviaalitapauksen lisäksi laskentoja p w q voi muodostua kahdella tavalla. Tapaus I: Jos p u r ja r v q, voidaan päätellä p w q, kun w = uv. Tässä siis tilasta p mennään ensin syötteellä u tilaan r, jossa pinon alkuperäinen sisältö toistuu ensimmäisen kerran. Tilasta r jatketaan syötteellä v tilaan q, jossa pinon sisältö toistuu kolmannen kerran. Kieliopin kannalta jos A p,r u ja Ar,q v, niin pitää olla Ap,q uv. Hoidamme tämän ottamalla kielioppiin säännöt kaikilla p, q, r Q. A p,q A p,r A r,q 206

Tapaus II: Jos joillain tiloilla r, s Q ja pinomerkillä t tilasta p voidaan siirtyä tilaan r viemällä pinoon merkki t tilasta s voidaan siirtyä tilaan q poimimalla pinosta merkki t ja tilasta r voidaan päästä tilaan s siten, että pinon sisältö on sama aluksi ja lopuksi niin tilasta p voidaan päästä tilaan q siten, että pinon sisältö on sama aluksi ja lopuksi. Ottamalla vielä huomioon siirtymiin liittyvät syötemerkit esitämme tämän tapauksen muodossa p a,ε t r v s b,t ε q, missä siis seuraa p w q, missä w = avb. Tästä saadaan kielioppiin säännöt A p,q aa r,s b kaikilla sellaisilla p, q, r, s Q ja a, b Σ ε, että (r, t) δ(p, a, ε) ja (q, ε) δ(s, b, t) jollain t Γ. 207

Kokoamme edellä esitetyn yhteen ja määrittelemme kieliopin G = (V, Σ, R, S) seuraavasti: V = { A p,q p, q Q }, Σ on sama kuin automaatin syöteaakkosto, S = A qstart,q accept ja joukossa R on seuraavat säännöt: A p,p ε kaikilla p Q. A p,q A p,r A r,q kaikilla p, q, r Q, A p,q aa r,s b aina kun (r, t) δ(p, a, ε) ja (q, ε) δ(s, b, t) jollain t Γ Konstruktion oikeellisuus, eli että todella A p,q w jos ja vain jos p w q, seuraa kahdesta aputuloksesta: Väite A: Jos A p,q w, missä w Σ, niin p w q. Väite B: Jos p w q, missä w Σ, niin A p,q w. Nämä ovat Sipserin Claim 2.30 ja Claim 2.31; sivuutamme niiden induktiotodistukset. 208

Esimerkki 2.29: Tarkastellaan sivun 201 automaattia. Etsimällä siirtymäparit, joissa on push ja pop samalle pinosymbolille, saadaan seuraavat säännöt: Lähtösymboli on A 1,6. A 1,6 A 2,5 A 2,5 ca 4,4 A 2,3 aa 2,2 b A 3,5 ca 4,4 A 2,3 aa 2,3 b A 5,5 ca 4,4 Lisäksi kielioppiin tulee säännöt A p,p ε, missä p = 1,..., 6, ja suuri joukko muotoa A p,q A p,r A r,q olevia sääntöjä. Suurin osa näistä on kuitenkin turhia. Esim. sääntö A 1,6 A 1,5 A 5,6 toisi mukaan muuttujan A 5,6, josta ei enää pääse eroon, eli säännöllä ei saada yhtään päätemerkkijonoa. Tarpeellisia ovat A 2,5 A 2,3 A 3,5 A 2,5 A 2,5 A 5,5 A 4,4 ε A 2,2 ε 209

Nyt merkkijonolle aabbc saadaan johto A 1,6 A 2,5 A 2,3 A 3,5 aa 2,3 ba 3,5 aaa 2,2 bba 3,5 aabba 3,5 aabbca 4,4 aabbc. Vertaa tässä esiintyviä muuttujanimiä sivulla 204 esitettyihin laskentoihin 1 aabbc 6 2 aabbc 5 2 aabb 3 2 ab 3 3 c 5 ja sivujen 206 207 tapauksiin I ja II. Kielioppi ei ole sama kuin sivulla 201 annettu, missä ei ole mitään ihmeellistä, sillä samalle kielelle on tietysti yleensä useita erilaisia kielioppeja. 210

Yhdistämällä Lemmat 2.24 ja 2.27 saadaan Lause 2.30: [Sipser Thm. 2.20] Kieli on yhteydetön, jos ja vain jos se voidaan tunnistaa pinoautomaatilla. Huomaa, että tästä ei seuraa, että osaisimme millä tahansa yhteydettömällä kielellä A ja merkkijonolla w ratkaista tehokkaasti, päteekö w A. Pinoautomaatin toiminnassa epädeterminismi on oleellista, ja vastauksen saamiseksi voidaan joutua kokeilemaan hyvin suurta määrää erilaisia laskentoja. Kuten sivulla 166 mainittiin, tehokkaat jäsennysalgoritmit tekevät lisäoletuksia kieliopista. Yleisessä tapauksessa voidaan käyttää CYK-algoritmia, joka vaatii ajan O( w 3 ) (eikä perustu automaattiin). Tilanne on siis tässä suhteessa erilainen kuin säännöllisten kielten ja äärellisten automaattien tapauksessa. Voimme kuitenkin todeta seuraavan tuloksen (jonka voi todistaa helpomminkin): Korollaari 2.31: Säännölliset kielet ovat yhteydettömiä. Todistus: Jos kieli voidaan tunnistaa äärellisellä automaatilla, se voidaan tietysti tunnistaa pinoautomaatilla. 211

Ei-yhteydettömät kielet [Sipser luku 2.3] Jäsennyspuita tarkastelemalla voimme osoittaa esim. että kieli { a n b n c n n N } ei ole yhteydetön. Tämä perustuu samantapaiseen pumppautuvuuteen kuin ei-säännöllisyyttä osoitettaessa. Lause 2.32 (Yhteydettömien kielten pumppauslemma): [Sipser Thm. 2.34] Jos A on yhteydetön kieli, niin sille on olemassa pumppauspituus p N, jolle seuraava pätee: jos s A ja s p niin on olemassa jako s = uvxyz, jolla 1. uv i xy i z A kaikilla i N, 2. vy > 0 ja 3. vxy p. 212

Eroksi säännöllisistä kielistä tässä siis pumpataan merkkijonoa kahdesta kohdasta samaan tahtiin. Muuten lemman soveltamiseen pätevät samat perushuomiot kuin säännöllisten kielten tapauksessa: Lemmaa käytetään yleensä epäsuorassa todistuksessa osoittamaan kieli ei-yhteydettömäksi. Tällöin merkkijono s voidaan valita sopivalla tavalla helpottamaan todistusta. Sen sijaan jakoa s = uvxyz ei voi itse valita, vaan kaikki mahdollisuudet on käsiteltävä. Lemmalla ei voi todistaa kieltä yhteydettömäksi: myös ei-yhteydetön kieli voi olla pumppautuva. 213

Ei-yhteydettömyystodistus pumppauslemman avulla toimii siis seuraavaan tapaan: 1. Aloitus: Tehdään vastaoletus, että kieli A on yhteydetön... 2. Valitaan merkkijono s A, jolla s p. 3. Eliminoidaan kaikki jaot s = uvxyz. Alussa mukana on kaikki mahdolliset jaot. Eliminoidaan jakoja ehtojen (1) (3) perusteella. Lopussa kaikki jaot on saatu eliminoitua. 4. Lopetus:... ristiriita... 214

Lause 2.33: [Sipser Example 2.36] Kieli A = { a n b n c n n N } ei ole yhteydetön. Todistus: Tehdään vastaoletus, että A on yhteydetön. Sillä on siis pumppauspituus p. Valitaan s = a p b p c p. Selvästi s A ja s p. Olkoon nyt s = uvxyz. Ehdon vxy p perusteella voidaan eliminoida jaot, joissa vxy sisältää sekä a- että c-merkkejä. Tarkastellaan tapausta, että vxy ei sisällä a-merkkejä. Kun on eliminoitu jaot, joilla vy = 0, jäljelle jääneissä jaoissa vy sisältää b- tai c-merkkejä (tai molempia). Tällöin uvvxyyz sisältää b- tai c-merkkejä enemmän kuin a-merkkejä, joten uvvxyyz A ja nämäkin jaot saadaan eliminoitua. Tapaukset, joissa vxy ei sisällä c-merkkejä, eliminoidaan samaan tapaan. Siis mikään jako s = uvxyz ei toteuta kaikkia pumppauslemman ehtoja; ristiriita. Intuitiivisesti siis yhteydettömällä kieliopilla, tai pinoautomaatilla, ei pysty vertailemaan kolmea eri lukumäärää samanaikaisesti. 215

Edellisestä esimerkistä nähdään myös tärkeä ero yhteydettömien ja säännöllisten kielten sulkeumaominaisuuksissa: Korollaari 2.34: Yhteydettömien kielten luokka ei ole suljettu leikkauksen eikä komplementin suhteen. Todistus: Olkoon A 1 = { a m b m c n m, n N } ja A 2 = { a m b n c n m, n N }. Kielet A 1 ja A 2 ovat yhteydettömiä, mutta niiden leikkaus on edellisen lauseen ei-yhteydetön kieli A. Siis yhteydettömien kielten luokka ei ole suljettu leikkauksen suhteen. Tehdään nyt vastaoletus, että yhteydettömien kielten luokka on suljettu komplementin suhteen. Koska A B = A B ja yhteydettömien kielten luokka on suljettu yhdisteen suhteen, luokka on suljettu myös leikkauksen suhteen; ristiriita. 216

Yhteydettömien kielten pumppauslemman todistus: Todistuksen perusajatus on seuraava: Jos s on kielen A merkkijono, sillä on jäsennyspuu sopivassa kielen A kieliopissa. Jos lisäksi s on kovin pitkä, jäsennyspuussa on oltava ainakin yksi pitkä haara. Kun jäsennyspuun haara on riittävän pitkä, ainakin yhden muuttujan R on pakko esiintyä ainakin kaksi kertaa (kyyhkyslakkaperiaate). Muuttujan R esiintyminen omana jälkeläisenään jäsennyspuussa tarkoittaa, että R vry joillakin v, y Σ. Voimme pumpata tätä: R vry vvryy vvvryyy.... 217

Tilanne kuvana: S R R S S R u v x y z R x R u z R u v y z v x y Vasen versio esittää alaspäin pumppaamista. 218

Jos asiaa ajatellaan johtojen kannalta, niin alkutilanteessa nähdään S urz uvryz uvxyz, missä sekä R vry että R x, ja u, v, x, y, z Σ. Näitä uudelleen yhdistelemällä saadaan johdot S urz uxz S urz uvryz uvvryyz uvvxyyz S urz uvryz uvvryyz uvvvryyyz uvvvxyyyz... 219

Täsmennetään nyt, mitä edellä esitetyssä hahmotelmassa tarkoittaa pitkä. Olkoon A = L(G) jollain yhteydettömällä kieliopilla G = (V, Σ, R, S). Olkoon b suurin minkään säännön oikealla puolella olevien symbolien määrä. Siis jäsennyspuun millään solmulla ei ole yli b lasta. Jos jäsennyspuun syvyys on h, siinä on korkeintaan b h lehteä. (Syvyys on kaarten lukumäärä pisimmällä polulla juuresta lehteen.) Valitaan p = b V +1. Siis jos merkkijonon pituus on vähintään p, sen jäsennyspuun syvyys on ainakin V + 1. 220

Olkoon nyt s A sellainen, että s p. Olkoon τ merkkijonon s jäsennyspuu; jos niitä on useita, valitaan vähiten solmuja sisältävä. Valitaan puusta τ pisin polku juuresta lehteen. Edellisen perusteella polulla on enemmän kuin V kaarta ja siis ainakin V + 2 symbolia. Näistä vain viimeinen on päätesymboli. Kyyhkyslakkaperiaatteen nojalla erityisesti polun viimeisten V + 2 symbolin joukossa ainakin yksi muuttuja esiintyy ainakin kaksi kertaa. Olkoon R tällainen. Nyt s voidaan kirjoittaa muotoon s = uvxyz, missä x on symbolin R alemmasta esiintymästä tuotettu merkkijono ja vxy ylemmästä esiintymästä. (Tämä vastaa sivun 218 kuvan keskimmäistä puuta.) 221

Jäsennyspuuta vastaava johto voidaan jakaa osiin S urz uvryz uvxyz, missä R vry ja R x. Näin ollen myös ja S urz uxz S urz uvryz uvvryyz... millä tahansa i 1. Siis uv i xy i z A kaikilla i N. uv i Ry i z uv i xy i z Koska jäsennyspuun oletettiin olevan pienin mahdollinen, ei voi olla v = y = ε, vaan vy > 0. Koska symbolin R ylemmän esiintymän korkeus on korkeintaan V + 1, siitä tuotetun merkkijonon vxy pituus on korkeintaan b V +1 = p. 222

Toinen perusesimerkki yhteydettömien kielten pumppauslemmasta osoittaa intuitiivisesti esim. sen, että yhteydettömällä kieliopilla ei voi esittää sellaisia ohjelmointikielten rajoituksia kuin muuttuja pitää määritellä ennen käyttöä. Esimerkki 2.35: [Sipser Ex. 2.38] Kieli B = { ww w { 0, 1 } n } ei ole yhteydetön. Vastaoletus: B on yhteydetön ja sillä on pumppauspituus p. Valitaan s = 0 p 1 p 0 p 1 p B, jolloin s p. Tarkastellaan jakoa s = uvxyz. Jos vxy sisältyy kokonaan merkkijonon s alkupuoliskoon, niin uxz = 0 i 1 j 0 p 1 p, missä i + j = 2p vy < 2p. Siis merkkijonon uxz alkupuolisko loppuu 0:aan, joten uxz ei ole muotoa ww; ristiriita. Samoin nähdään, että vxy ei voi kokonaan sisältyä loppupuoliskoon. Jäljelle jää mahdollisuus, että jonon 0 p 1 p 0 p 1 p = uvxyz keskikohta osuu pätkään vxy. Nyt uxz = 0 p 1 i 0 j 1 p, missä i < p tai j < p. Taaskaan uxz ei ole muotoa ww; ristiriita. 223

Kurssi tähän asti: säännölliset ja yhteydettömät kielet säännölliset yhteydettömät kaikki kielet { a n } { a n b n } { a n b n c n } 224