582206 Laskennan mallit (syksy 2015) Harjoitus 6: vastauksia

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)