582206 Laskennan mallit (syksy 2015) Harjoitus 6: vastauksia 1. (*) Esitä pinoautomaatit seuraaville kielille kun aakkosto on {0, 1} (pinoa täytyy siis käyttää!) (a) {w | w sisältää ainakin kolme 1:stä} (b) {w | w alkaa ja loppuu samalla merkillä} (c) {w | w:n pituus on pariton} (d) {w | w:n pituus on pariton ja sen keskimmäinen merkki on 0} (e) { } 2. (*) Esitä pinoautomaatit seuraaville kielille (a) Aakkoston {a, b} merkkijonot, joissa merkkiä a on enemmän kuin merkkiä b. (b) Kielen {an bn | n ≥ 0} komplementti. 3. Esitä pinoautomaatit seuraaville aakkoston {a, b, c} kielille: (a) kaikki palindromit ε, ε → ε a, ε → ε b, ε → ε q0 start (b) ai bj | 0 ≤ i ≤ j ε, ε → $ c, ε → ε q1 a, ε → a a, a → ε b, ε → b b, b → ε c, ε → c c, c → ε q0 ε, ε → $ ε, ε → ε q1 a, ε → 1 q3 start (c) ε, $ → ε q2 ε, $ → ε q2 b, 1 → ε q3 b, ε → ε ai bj ck | j = i + k . a, ε → 1 q1 b, 1 → ε ε, ε → ε q2 ε, $ → $ q3 c, 1 → ε ε, ε → ε q4 ε, $ → ε ε, ε → $ start b, ε → 1 q0 q5 (d) (vaikea?) {w | w ∈ Σ∗ ja w sisältää nollia on kaksi kertaa niin paljon kuin ykkösiä} 1 (8) start q0 ε, $ → $ q3 1, Y → ε q5 ε, ε → A q4 ε, Y → ε ε, ε → A ε, ε → $ q1 1, $ → $ ε, $ → ε 0, A → ε 0, $ → $ ε, ε → Y 0, Y → Y q6 1, A → A q2 Automaatin ideana on pitää pinossa kirjaa siitä kuinka paljon nolla-merkkien määrässä on yli- tai alijäämää. Pinoon laitetaan A jos siirtymä kerryttää alijäämää ja Y jos se kerryttää ylijäämää. Vastaavasti pinosta poistetaan merkkejä aina tilaisuuden tullen, kun syötemerkin lukeminen tasoittaa nollien ja ykkösten suhdetta. 4. (Toistuvuusominaisuuden todistuksen konkretisointia) Tarkastellaan kielioppia S → S+T |T T → T ∗F |F F → (S) | a (vrt. esimerkki 2.9, Sipser Example 2.4). Muodosta merkkijonon s = (a + a) ∗ a jäsennyspuu tämän kieliopin mukaisesti. Etsi jäsennyspuusta jokin juuresta lehteen johtava polku, jolla sama muuttuja esiintyy kahdessa solmussa. Muodosta tämän perusteella toistuvuusominaisuuden todistuksen ideaa mukaillen jokin merkkijonon s jako osiin s = uvxyz, joilla merkkijono uv i xy i z kuuluu tarkasteltavaan kieleen kaikilla i ∈ N . S T F T F S S T T F F ( a + a ) * a Nyt puusta löytyy kuvan osoittamalla tavalla sama symboli S kahdessa eri paikassa saman juuresta lehteen johtavan polun varrella. Ylemmästä on johdettu merkkijono a + a ja alemmasta merkkijono 2 (8) a. Jos nyt alemman johdon korvaisi ylemmästä saadulla merkkijonolla, saataisiin merkkijono a + a + a. Valitaan siis toistettavat osat seuraavasti: u = (a v = +a x=ε y=ε z =) ∗ a jolloin voidaan tuottaa kieliopin tunnistamia merkkijonoja toistolauseen mukaisesti. Tässä esimerkkinä muutama ensimmäinen: uxz = (a) ∗ a 2 uv xy 2 z = (a + a + a) ∗ a uv 3 xy 3 z = (a + a + a + a) ∗ a 5. (Toistuvuusominaisuuden konkretisointia) Olkoon A aakkoston {0, 1} kieli, joka koostuu niistä merkkijonoista, joissa on sama määrä nollia ja ykkösiä. Tällä kielellä on kontekstiton kielioppi → SS | 0S1 | 1S0 | ε S (a) Kielen A eräs toistuvuuspituus on 4. Esitä kieleen A kuuluvalle merkkijonolle s = 001101 kaikki eri tavat jakaa se osiin s = uvxyz toistuvuusominaisuuden ehdot toteuttavalla tavalla (lause 2.30; Sipser Theorem 2.34; tässä siis p = 4). u v x 0 0 0 0 00 001 0011 0 0 0 0 0 0 0 0 0 0 0 0 00 00 00 001 001 001 001 001 0011 0011 0011 0 01 01 0 0 0 01 01 01 01 011 0110 1 1 0 01 3 (8) 01 0110 10 1 110 1 10 1 10 0 1 11 1 1 1 10 10 y 0011 01 011 1 1 11 1 10 01 0 10 01 0 1 01 1 z 01 101 01 101 01 01 01 01 101 1 1 101 1 01 101 1 01 1 1 1 1 1 1 1 1 Yhteensä 31 ehdot täyttävää jakoa. (b) Onko kielellä A pienempiä toistuvuuspituuksia kuin 4? Perustele. 6. (a) Koostukoon aakkoston {a, b, c} kieli A merkkijonoista, joissa on yhtä monta a-, b- ja c-merkkiä. Osoita, että A ei ole kontekstiton. Väite. Kieli A ei ole yhteydetön. Todistus. Oletetaan vastoin väitettä, että kieli A on kontekstiton. Nyt viimeisen tehtävän perusteella leikkaus A ∩ L(a∗ b∗ c∗ ) = {an bn cn | n ∈ N} on kontekstiton koska L(a∗ b∗ c∗ ) on säännöllinen. Tämä on kuitenkin tunnetusti ristiriita. Siis kieli A ei ole yhteydetön. (b) Osoita, että kieli {0n 1n 0n 1n | n ∈ N } ei ole kontekstiton. Väite. Kieli A = {0n 1n 0n 1n | n ∈ N} ei ole kontekstiton. Todistus. Oletetaan vastoin väitettä, että kieli A on kontekstiton. Nyt toistuvuusominaisuuden nojalla sillä on toistuvuuspituus p. Valitaan merkkijono s = 0p 1p 0p 1p . Nyt merkkijonon jakojen s = uvxyz tulisi täyttää toistuvuusominaisuuden ehdot. Merkkijonon s pituus on 4p ja koska osaan vxy ei saa tulla yli p:tä merkkiä, täytyy osiin u ja z jäädä yhteensä vähintään 3p merkkiä. Nyt siis joko osaan u jäävät ainakin kaikki merkkijonon p esimmäistä nollaa, tai osaan z jäävät ainakin kaikki merkkijonon p viimeistä ykköstä. Jos kieleen A kuuluvassa merkkijonossa on p kappaletta peräkkäisiä nollia tai p kappaletta peräkkäisiä ykkösiä, täytyy merkkijonon pituuden olla 4p. Toistuvuusominaisuuden mukaan merkkijonon uv 0 xy 0 z = uxz tulisi kuulua kieleen A. Koska osat u ja z pitävät sisällään joko p nollaa tai p ykköstä, tulisi merkkijonon uxz pituuden olla edelleen 4p jotta se voisi kuulua kieleen A. Koska puuttuvat osat v ja y eivät kuitenkaan saaneet molemmat olla tyhjiä, täytyy merkkijonon uxz pituuden olla aidosti vähemmän kuin 4p. Siis uxz ei kuulu kieleen A, mikä on ristiriita. Täten kieli A ei ole kontekstiton. (c) (*) Osoita, että kieli 0n #02n #03n | n ∈ N ei ole kontekstiton. (d) (*) Osoita, että aakkoston {a, b, #} kieli {w#t | missä t = xwy} ei ole kontekstiton. (e) (*) Osoita, että aakkoston {a, b, #} kieli {t1 #t2 # · · · #tk | k ≥ 2 ja ti = tj joillakin i 6= j} ei ole kontekstiton. 7. (*) Teit harjoituksissa 5.3 kontekstittomat kieliopit seuraaville kielille (aakkosto Σ = {0, 1}) (a) parittoman mittaiset merkkijonot (b) merkkijonot, joilla on osamerkkijono 111 (c) merkkijonot, joissa on ainakin kaksi merkkiä ja joiden ensimmäinen ja viimeinen merkki ovat samat (d) parittoman mittaiset merkkijonot, joiden ensimmäinen ja keskimmäinen merkki ovat samat. (e) palindromit (f) merkkijonot wwR Tee nyt Apulauseen 2.21 mukaisesti kieliopeistasi pinoautomaatti, joka tunnistaa saman kielen. 8. Anna kontekstiton kielioppi, joka tuottaa kielen ai bj ck | i = 2j tai j = 2k . Muodosta Apulauseen 2.21 mukaisesti kieliopistasi pinoautomaatti, joka tunnistaa saman kielen. S → Taab Tc | Ta Tbbc Taab → aaTaab b | ε Tc → cTc | ε Ta → aTa | ε Tbbc → bbTbbc c | ε Jos automaateissa saisi laittaa monta aakkosta pinoon kerralla, näyttäisi automaatti seuraavalta: 4 (8) start qstart ε, ε → S$ a, a → ε b, b → ε qloop c, c → ε ε, $ → ε ε, S →Taab Tc ε, S →Ta Tbbc ε, Taab →aaTaab b ε, Taab →ε ε, Tc →cTc ε, Tc →ε ε, Ta →aTa ε, Ta →ε ε, Tbbc →bbTbbc c ε, Tbbc →ε qaccept Jokainen sääntö, jossa pinoon lisätään monta symbolia kerralla voidaan avata silmukaksi. Esimerkiksi sääntö ε, Taab → aaTaab b voidaan toteuttaa tavallisella pinokoneella seuraavasti: q1 ε, Taab → b ε, ε → Taab qloop q2 ε, ε → a ε, ε → a q3 9. Tee alla olevista pinoautomaateista Apulauseen 2.27 mukaisesti kieliopit 0, ε → 0 1, ε → 1 start q0 ε, ε → $ q1 0, 0 → ε 1, 1 → ε ε, ε → ε (a) 5 (8) q2 ε, $ → ε q3 0,ε → 0 1,ε → 1 q1 ε, ε → $ ε, ε → ε q0 start 0,0 → ε q2 1,1 → ε ε, $ → ε q3 Mainittu apulause vaatii, että automaatissa on tasan yksi hyväksyvä tila, jokaisessa siirtymässä tulee joko laittaa pinoon jotain tai ottaa sieltä jotain, mutta ei molempia ja lisäksy pinon täytyy aina hyväksyvässä tilassa olla tyhjä. Muutetaan siis automaatti ensin tähän muotoon. 0,ε → 0 1,ε → 1 q1 ε, ε → X q4 ε, ε → $ ε, X → ε start q0 q2 0,0 → ε 1,1 → ε ε, $ → ε q3 Nyt automaattiin voi soveltaa apulauseen menetelmää, jolloin saadaan seuraavat merkitykselliset säännöt: A03 → εA12 ε A12 → 0A12 0 | 1A12 1 | εA44 ε A44 → ε Lisäksi menetelmää noudattamalla saa seuraavat säännöt, joita ei tässä tapauksessa satuta tarvitsemaan mihinkään: 6 (8) A00 → ε A11 → ε A22 → ε A33 → ε A01 → A02 A21 | A03 A31 | A04 A41 A02 → A01 A12 | A03 A32 | A04 A42 A03 → A01 A13 | A02 A23 | A04 A43 A04 → A01 A14 | A02 A24 | A03 A34 A10 → A12 A20 | A13 A30 | A14 A40 A12 → A10 A02 | A13 A32 | A14 A42 A13 → A10 A03 | A12 A23 | A14 A43 A14 → A10 A04 | A12 A24 | A13 A34 A20 → A21 A10 | A23 A30 | A24 A40 A21 → A20 A01 | A23 A31 | A24 A41 A23 → A20 A03 | A21 A13 | A24 A43 A24 → A20 A04 | A21 A14 | A23 A34 A30 → A31 A10 | A32 A20 | A34 A40 A31 → A30 A01 | A32 A21 | A34 A41 A32 → A30 A02 | A31 A12 | A34 A42 A34 → A30 A04 | A31 A14 | A32 A24 A40 → A41 A10 | A42 A20 | A43 A30 A41 → A40 A01 | A42 A21 | A43 A31 A42 → A40 A02 | A41 A12 | A43 A32 A43 → A40 A03 | A41 A13 | A42 A23 (b) (*) 0, $ → ε q1 q2 0, ε → ε 1, ε → ε 0, ε → ε 1, ε → ε 0, ε → $ q0 start 1, ε → $ 1, $ → ε q3 10. (*) Pystytkö tekemään alla olevista automaateista Apulauseen 2.27 mukaisesti kieliopit a a start q1 a q2 a, b a q3 b start ε q1 b b q2 b q3 a 11. (a) Osoita, että jos A on yhteydetön ja B säännöllinen kieli, niin A ∩ B on yhteydetön. Vihje: muodosta pinoautomaatin ja äärellisen automaatin leikkausautomaatti samaan tapaan kuin Jyrkin luentojen lauseessa 1.1 (luentomateriaalin sivut 48–50). Olkoon A yhteydetön kieli ja MA = (QA , Σ, Γ, δA , qA0 , FA ) automaatti joka tunnistaa kielen A. Olkoon B säännöllinen kieli ja MB = (QB , Σ, δB , qB0 , FB ) deterministinen automaatti joka tunnistaa kielen B. 7 (8) Väite. Kieli A ∩ B on säännöllinen. Todistus. Leikkauksen tunnistava automaatti luodaan samankaltaisella menetelmällä kuin säännöllisten kielten tapauksessa. Ero säännöllisten kielten tapaukseen on siirtymäfunktion δA∩B määrrittelyssä. Muodostetaan siis automaatti MA∩B = (QA × QB , Σ, Γ, δA∩B , (qA0 , qB0 ), FA × FB ) missä siirtymäfunktio δA∩B on määritelty seuraavasti. ( {((qj , pi ), s) | δA (qi , ε, t) = (qj , s)} δA∩B ((qi , pi ), a, t) = {((qj , pj ), s) | δB (qi , a) = qj ja δA (pi , a, t) = (pj , s)} kun a = ε muulloin Kaikki uuden automaatin tilat ovat siis muotoa (q, p) missä q ∈ QA ja p ∈ QB . Siirtymät noudattavat parin ensimmäisen alkion kohdalla automaatin MA siirtymäfunktiota ja toisen alkion kohdalla automaatin MB siirtymäfunktiota. Pinon käsittely noudattaa aina automaatin MA siirtymäfunktiota, sillä automaatissa MB ei ole pinoa. qi a, t → s qj → pi a (qi , pi ) a, t → s (qj , pj ) pj Pinoautomaatti MA on epädeterministinen, mutta MB ei. Pinoautomaatin epädeterminististen siirtymien kohdalla uudessa automaatissa tilaparin jälkimmäinen alkio ei muutu. Ensimmäinen alkio noudattaa pinoautomaatin MA siirtymäfunktiota. qi ε, t → s → qj (qi , pi ) ε, t → s (qj , pi ) Luotu automaatti MA∩B hyväksyy merkkijonon w jos ja vain jos MA ja MB hyväksyvät merkkijonon w. Siis MA∩B tunnistaa kielen A ∩ B. (b) Tiedetään, että kieli L on yhteydetön ja R säännöllinen. Voidaanko tästä päätellä, että L − R on yhteydetön? Entä R − L? Perustele. Väite. Olkoon L yhteydetön ja R säännöllinen kieli. Nyt L − R on yhteydetön. Todistus. Joukko-opista tiedämme, että L − R = L ∩ R. Lisäksi tiedämme, että säännölliset kielet ovat suljettuja komplementin suhteen. Nyt siis edellisen kohdan nojalla L ∩ R on yhteydetön, ja siten myös L − R on yhteydetön. Toinen suunta ei päde yleisesti. Koska yhteydettömät kielet eivät ole suljettuja komplementin suhteen, on olemassa yhteydetön kieli jonka komplementti ei ole yhteydetön. Olkoon L jokin tällainen kieli. Olkoon nyt R = Σ∗ joka tunnetusti säännöllinen. Nyt siis L on yhteydetön ja R säännöllinen, mutta R − L = Σ∗ − L = L joka oletuksen mukaan ei ole yhteydetön. 8 (8)
© Copyright 2024