ZH feladatok megoldásai A CSOPORT 5. Írja le, hogy milyen szabályokat tartalmazhatnak az egyes Chomskynyelvosztályok (03 típusú nyelvek)! (4 pont) 3. típusú, vagy reguláris nyelvek szabályai A ab, A a formájúak, ahol A, B N, a T N nyelvtani (nemterminális) jelek halmaza, T terminálisok halmaza. 2. típusú, vagy környezetfüggetlen nyelvek A α, formájú szabályokat tartalmazhatnak, ahol A N, α (T N), azaz α tetsz leges (beleértve a 0-t is), véges számú nyelvtani és terminális szimbólum sorozata. 1. típusú, vagy környezetfügg (esetleg hosszúság-nemcsökkent ) nyelvek βaγ βαγ formájú szabályokat tartalmazhatnak, ahol A N, α, β, γ (T N) 1
Ezzel ekvivalens deníció: alakú szabályok, ahol α β α β, azaz β hossza nem kisebb α hosszánál. 0. típusú nyelvek szabályaira nincs megkötés. 6. Alakítsa determinisztikussá a következ véges, nemdeterminisztikus automatát, majd minimalizálja az így kapott determinisztikus automatát! ahol M 1 = {S, A, B, C, D}, {a, b}, δ, S, {C, D}, δ(s, a) = A; δ(s, b) = B; δ(a, a) = B C; δ(a, b) = C D; δ(b, a) = C; δ(b, b) = C; δ(c, a) = A; δ(c, b) = B; δ(d, a) = C; δ(d, b) = A. (13 pont) A feladat két részfeladatból tev dik össze. El ször determinisztikussá alakítjuk az adott automatát, majd ez utóbbit minimalizáljuk, ha lehet. Determinisztikussá tétel: Deniálunk egy új automatát, melynek állapotai a nemdeterminisztikus automata állapotainak részhalmazai, a kiinduló állapot az eredeti kiinduló állapotot tartalmazó halmaz, elfodadó állapotao pedig azok az állapothalmazok lesznek, melyek tartalmazzák az eredeti automata valamely elfogadó állapotát, jelen esetben C-t vagy D-t. Az új automata állapotai és mozgásai szabályai a következ k: p 0 := {S} kiindulási állapot; δ(p 0, a) = {A} =: p 1 hiszen az eredeti automata S-b l az a szimbólum hatására az A állapotba megy át. Az így kapott halmaz még nem szerepelt a determinisztikus automata állapotai között, ezért deniálunk egy ilyen új állapotot, p 1 -et. δ(p 0, b) = {B} =: p 2
hasonló megfontolások miatt. δ(p 1, a) = {B, C} =: p 3 A p 1 állapotból a szimbólum hatására két állapotátmenet adott a kiindulási automatában, ezért p 3 állapothalmaz az eredeti automata két állapotát tartalmazza. Ezt az algoritmust követve addig megyünk míg új állapotokat találunk. A továbbiakban csak a mozgási szabályokat szabályokat adjuk meg magyarázat nélkül, ahol az aláhúzott állapotok az els el fordulások: δ(p 1, b) = {C, D} =: p 4 δ(p 2, a) = {C} =: p 5 δ(p 2, b) = {C} = p 5 δ(p 3, a) = {A, C} =: p 6 δ(p 3, b) = {B, C} = p 3 δ(p 4, a) = {A, C} = p 6 δ(p 4, b) = {A, B} =: p 7 δ(p 5, a) = {A} = p 1 δ(p 5, b) = {B} = p 2 δ(p 6, a) = {A, B, C} =: p 8 δ(p 6, b) = {B, C, D} =: p 9 δ(p 7, a) = {B, C} = p 3 δ(p 7, b) = {C, D} = p 4 δ(p 8, a) = {A, B, C} = p 8 δ(p 8, b) = {B, C, D} = p 9 δ(p 9, a) = {A, C} = p 6 δ(p 9, b) = {A, B, C} = p 8 Elfogadó állapot lesz p 3, p 4, p 5, p 6, p 8, p 9. Ezzel deniáltuk a determinisztikus automatát, hiszen az összes állapotszimbólum párra megadtuk az állapotátmenetet. Minimalizálás: Osztályozást végzünk a determinisztikus automata állapotain egy ún. ekvivalencia-reláció segítségével. A relációt úgy deniáljuk, hogy azok az állapotok legyenek relációban egymással, amelyeket tetsz leges
jelsorozattal nem tudunk megkülönböztetni egymástól, azaz ezen jelsorozatokat az automata mindig vagy elfogadja, vagy elutasítja bármely egymásssal relációban lév állapotokból kiindulva. Mivel ez a reláció ekvivalencia-reláció, ezért osztályozást generál az állapotokon. Az egyes ekvivalencia-osztályokat egy iteratív algoritmussal határozzuk meg az alábbiak szerint. Ekvivalenciaosztályokat-családot gyártunk, úgy hogy az egyes ekvivalencia osztályokba az i hosszúságú szimbólumsorozatokkal megkülönböztethetelen állapotok kerüljenek. A 0-dik ekvivalencia osztályba a 0 hosszúságú sorozatokkal megkülönböztethetelen állapotok kerülnek, ezek nyilván az elutasító, és elfogadó állapotok lesznek: 0-ekvivalencia osztályok {p 0, p 1, p 2, p 7 }, {p 3, p 4, p 5, p 6, p 8, p 9 } Az 1-ekvivalencia osztályokat a fentiekb l úgy kapjuk meg, hogy megnézzük, hogy vannak-e olyan szimbólumok, amikkel meg lehet az egy osztályba tartozó állapotokat különböztetni, azaz hogy bizonyos állapotokból különböz (el z szinten lév ) ekvivalencia-osztályokban lév állapotba kerülünke. Itt pl. p 0 -ból a és b hatására is bent maradunk a {p 0, p 1, p 2, p 7 } halmazba, viszont p 1, p 2, p 7 -b l kiindulva mindenképpen {p 3, p 4, p 5, p 6, p 8, p 9 } halmazbeli állapotba kerülünk. Hasonló gondolatmenettel az alábbi ekvivalenciaosztályokat kaphatjuk: 1-ekvivalencia-osztályok {p 0 }, {p 1, p 2, p 7 }, {p 4 }, {p 5 }, {p 3, p 6, p 8, p 9 } 2-ekvivalencia-osztályok {p 0 }, {p 1, p 7 }, {p 2 }, {p 4 }, {p 5 }, {p 3, p 6, p 8, p 9 } azaz a kiindulási determinisztikus automatának 10 állapotából egy 6 állapotot tartalmazó minimálautomatát tudunk létrehozni. 7. Határozza meg az alábbi (véges) automata által felismert nyelvet: M 2 = {q 0, q 1, q 2 }, {a, b}, δ, q 0, {q 0, q 1 }, ahol δ(q 0, a) = q 1 ; δ(q 0, b) = q 0 ; δ(q 1, a) = q 1 ; δ(q 1, b) = q 2 ; δ(q 2, a) = q 2 ; δ(q 2, b) = q 2.
(5 pont) Ha felrajzoljuk az automata gráfját nyilvánvaló lesz, hogy a q 2 -es állapot csapda, azaz egy szót akkor fogad el az automata, ha nem kerül bele a q 2 állapotba. A másik két állapot elfogadó állapot. Az automata a L(M 2 ) = b a nyelvet fogadja el, azaz azt, ahol tetsz leges hosszú (beleértve a 0-t is) b-kb l álló sorozatot tetsz leges hosszú (beleértve a 0-t is) a-kból álló sorozat követ. Ennek természetesen eleme az üres szó is (ε). Más formalizmussal L(M 2 ) = b i a j i, j 0. 8. Tekintsük az alábbi környezetfüggetlen grammatikát: G = {S, A}, {if, then, else, for, do, a, b, c}, S, {S if b then A, S if b then A else S, S a, A for c do S, A a}. Adjuk meg legbaloldalibb levezetését az if b then for c do if b then a else a jelsorozatnak. Egyértelm -e a levezetés, ill. a nyelvtan? (7 pont) Sajnos a feladat eredeti megadása hibás volt. A második szabályban most már az else is szerepel, így az adott mondat levezethet. A mondat egyik legbaloldalibb levezetési az alábbi (a behelyettesített szimbólum alá van húzva): S if b then A if b then for c do S if b then for c do if b then A else S if b then for c do if b then a else S if b then for c do if b then a else A if b then for c do if b then a else a Hasonlóan helyes legbaloldalibb levezetés azonban az, amikor az elején nem az els, hanem a második szabályt alkalmazzuk, majd ezt a levezetést foly-
tatjuk: S if b then A else S if b then for c do S else S if b then for c do if b then A else S if b then for c do if b then a else S if b then for c do if b then a else A if b then for c do if b then a else a Tehát a levezetés, s így a nyelvtan sem egyértelm. 9. Hozza jólfésült nyelvtani formára (proper grammar) az alábbi nyelvtant! Ügyeljen az átalakítások helyes sorrendjére! Hogyan módosítaná a végs nyelvtant, hogy az üres szó (ε) is eleme legyen a nyelvnek? S bb a D, B A a, A be a, C c, D Db, E a. (10 pont) Jólfésült nyelvtani formára hozás négy egyszer algoritmus alkalmazásából áll: 1. Bottom-up (lentr l felfelé történ ) sz rés 2. Top-down (fentr l lefelé történ ) sz rés 3. ε-mentesítés 4. Egyszeres szabályok kiiktatása Mint az els pillanatra látható, a nyelvtan nem tartalmaz ε-szabályokat, ezért a 3. algoritmust nem kell végrehajtani a megadott nyelvtanon. Helyette van példában a második kérdés feltéve, tehát, hogyan tudjuk ε-osítani a végs nyelvtant, ami lényegesen egyszer bb feladat, mint az ε-mentesítés. 1. Bottom-up sz rés: Az ismert algoritmus alapján az alábbi halmazsorozatot hozzuk létre: B 0 = {a, b, c} B 1 = {a, b, c, S, A, B, C, E} =: B
Tehát D nyelvtani szimbólum, és az összes t tartalmazó szabályt elhagyható, mivel nem vezethet le bel le terminális jelsorozat, így az alábbi szabályok maradnak: S bb a, B A a, A be a, C c, E a. Megjegyzés: itt D ún. álrekurzíót okozó jel. 2. Top-down sz rés: T 0 = {S} T 1 = {S, B, a, b} T 2 = {S, A, B, a, b} T 3 = {S, A, B, E, a, b} =: T Tehát C nyelvtani, és c terminális szimbólum nem érhet el a mondatszimbólumból, így marad: S bb a, B A a, A be a, E a. 3. Egyszeres szabályok kiiktatása: egy darab egyszeres szabály maradt: B A A top-down sz r algoritmus segítségével az alábbi, az egyes szimbólumokból elérhet nyelvtani szimbólumokat tartalmazó halmazokat hozzuk létre: T B = {B, A}, T A = {A}, ami persze els ránézésre is nyilvánvaló. Ezért a B A szabályban az A szimbólumot a bel le kiinduló szabályok jobboldalával helyettesítve az alábbiakat kapjuk: B be a Tehát a jólfésült nyelvtanunk az alábbi szabályokból áll: S bb a, B be a, E a, hiszen az A nyelvtani jel feleslegessé vált. 4. ε-osítás: bevezetünk egy új Ŝ-sel jelölt mondatszimbólumot, valamint az alábbi szabályokat adjuk a grammatikához: Ŝ ε, Ŝ S.
B CSOPORT 5. Deniálja, mit tekintünk egy Σ alfabéta felett reguláriss halmaznak, és adja meg a rajtuk értelmezett szokásos m veleteket! (4 pont) Egy Σ alfabéta felett annak összes egy elem részhalmaza reguláris halmaz ({a} reguláris halmaz a Σ), valamint reguláris halmaz az üres szót {ε}, és az üres halmazt { } tartalmazó halmaz is. Regulárist halmazt kapnuk, ha az akábbi m veletek alkalmazásával: unió: P + Q, ahol P, Q reguláris halmaz konkatenáció: P Q, ahol P, Q reguláris halmaz tranzitív lezárt: P, ahol P reguláris halmaz A konkatenáció m velete az egymásután-írást jelenti, azaz P és Q halmaz elemeit egymás után írjuk, míg a tranzitív lezárt a halmazt elemeinek önmagával való egymásutáni-írását tartalmazó halmazt adja meg, formálisan: P = 6. Alakítsa determinisztikussá a következ véges, nemdeterminisztikus automatát, majd minimalizálja az így kapott determinisztikus automatát! ahol i=0 P i M 1 = {q 0, q 1, q 2, q 3, q 4 }, {0, 1}, δ, q 0, {q 3, q 4 }, δ(q 0, 0) = q 1 ; δ(q 0, 1) = q 2 ; δ(q 1, 0) = q 3 q 4 ; δ(q 1, 1) = q 2 q 3 ; δ(q 2, 0) = q 3 ; δ(q 2, 1) = q 3 ; δ(q 3, 0) = q 2 ; δ(q 3, 1) = q 1 ; δ(q 4, 0) = q 3 ; δ(q 4, 1) = q 2. (13 pont) A feladat két részfeladatból tev dik össze. El ször determinisztikussá alakítjuk az adott automatát, majd ez utóbbit minimalizáljuk, ha lehet.
Determinisztikussá tétel: Deniálunk egy új automatát, melynek állapotai a nemdeterminisztikus automata állapotainak részhalmazai, a kiinduló állapot az eredeti kiinduló állapotot tartalmazó halmaz, elfodadó állapotao pedig azok az állapothalmazok lesznek, melyek tartalmazzák az eredeti automata valamely elfogadó állapotát, jelen esetben q 3 -at vagy q 4 -et. Az új automata állapotai és mozgásai szabályai a következ k: p 0 := {q 0 } kiindulási állapot; δ(p 0, 0) = {q 1 } =: p 1 hiszen az eredeti automata q 0 -ból a 0 szimbólum hatására a q 1 állapotba megy át. Az így kapott halmaz még nem szerepelt a determinisztikus automata állapotai között, ezért deniálunk egy ilyen új állapotot, p 1 -et. hasonló megfontolások miatt. δ(p 0, 1) = {q 2 } =: p 2 δ(p 1, 0) = {q 3, q 4 } =: p 3 A p 1 állapotból 0 szimbólum hatására két állapotátmenet adott a kiindulási automatában, ezért p 3 állapothalmaz az eredeti automata két állapotát tartalmazza. Ezt az algoritmust követve addig megyünk míg új állapotokat találunk. A továbbiakban csak a mozgási szabályokat szabályokat adjuk meg magyarázat nélkül, ahol az aláhúzott állapotok az els el fordulások: δ(p 1, 1) = {q 2, q 3 } =: p 4 δ(p 2, 0) = {q 3 } =: p 5 δ(p 2, 1) = {q 3 } = p 5 δ(p 3, 0) = {q 2, q 3 } = p 4 δ(p 3, 1) = {q 1, q 2 } =: p 6 δ(p 4, 0) = {q 2, q 3 } = p 4 δ(p 4, 1) = {q 1, q 3 } =: p 7 δ(p 5, 0) = {A} = p 2 δ(p 5, 1) = {B} = p 1 δ(p 6, 0) = {q 3, q 4 } = p 3 δ(p 6, 1) = {q 2, q 3 } = p 4
δ(p 7, 0) = {q 2, q 3, q 4 } =: p 8 δ(p 7, 1) = {q 1, q 2, q 3 } =: p 9 δ(p 8, 0) = {q 2, q 3 } = p 4 δ(p 8, 1) = {q 1, q 2, q 3 } = p 9 δ(p 9, 0) = {q 2, q 3, q 4 } = p 8 δ(p 9, 1) = {q 1, q 2, q 3 } = p 9 Elfogadó állapot lesz p 3, p 4, p 5, p 7, p 8, p 9. Ezzel deniáltuk a determinisztikus automatát, hiszen az összes állapotszimbólum párra megadtuk az állapotátmenetet. Minimalizálás: Osztályozást végzünk a determinisztikus automata állapotain egy ún. ekvivalencia-reláció segítségével. A relációt úgy deniáljuk, hogy azok az állapotok legyenek relációban egymással, amelyeket tetsz leges jelsorozattal nem tudunk megkülönböztetni egymástól, azaz ezen jelsorozatokat az automata mindig vagy elfogadja, vagy elutasítja bármely egymásssal relációban lév állapotokból kiindulva. Mivel ez a reláció ekvivalencia-reláció, ezért osztályozást generál az állapotokon. Az egyes ekvivalencia-osztályokat egy iteratív algoritmussal határozzuk meg az alábbiak szerint. Ekvivalenciaosztályokat-családot gyártunk, úgy hogy az egyes ekvivalencia osztályokba az i hosszúságú szimbólumsorozatokkal megkülönböztethetelen állapotok kerüljenek. A 0-dik ekvivalencia osztályba a 0 hosszúságú sorozatokkal megkülönböztethetelen állapotok kerülnek, ezek nyilván az elutasító, és elfogadó állapotok lesznek: 0-ekvivalencia osztályok {p 0, p 1, p 2, p 6 }, {p 3, p 4, p 5, p 7, p 8, p 9 } Az 1-ekvivalencia osztályokat a fentiekb l úgy kapjuk meg, hogy megnézzük, hogy vannak-e olyan szimbólumok, amikkel meg lehet az egy osztályba tartozó állapotokat különböztetni, azaz hogy bizonyos állapotokból különböz (el z szinten lév ) ekvivalencia-osztályokban lév állapotba kerülünke. Itt pl. p 0 -ból 0 és 1 hatására is bent maradunk a {p 0, p 1, p 2, p 6 } halmazba, viszont p 1, p 2, p 6 -ból kiindulva mindenképpen {p 3, p 4, p 5, p 7, p 8, p 9 } halmazbeli állapotba kerülünk. Hasonló gondolatmenettel az alábbi ekvivalenciaosztályokat kaphatjuk:
1-ekvivalencia-osztályok {p 0 }, {p 1, p 2, p 6 }, {p 3, p 5 }, {p 4, p 7, p 8, p 9 } 2-ekvivalencia-osztályok {p 0 }, {p 2 }, {p 1, p 6 }, {p 3 }, {p 5 }, {p 4, p 7, p 8, p 9 } Ezen az ekvivalencia-osztályok már tovább nem bonthatók, megkülönböztethetetlen állapotokat tartalmaznak, hiszen pl. p 1 -b l és p 6 -ból 0 hatására p 3 -ba, 1 hatására p 4 állapotba jut az automata. Így a minimálautomatánk 6 állapotot tartalmaz. 7. Határozza meg az alábbi (véges) automata által felismert nyelvet: M 2 = {S, A, B}, {a, b}, δ, S, {A, B}, ahol δ(s, a) = A; δ(s, b) = B; δ(a, a) = S; δ(a, b) = B; δ(b, a) = A; δ(b, b) = S. (5 pont) Ha felrajzoljuk az automata gráfját láthatjuk, hogy S-b l és B-b l két egymásutáni a-ra visszajutunk a kiinduló állapotba, míg S-b l és A-ból két egymásutáni b-re szintén ez történik. Ezek tehát azok a jelsorozatok, ami után elutasító állapotba kerül az automata. Áltanánosaban fogalmazva az automata olyan jelsorozatokat fogad el, amelyek nem párosszámú, vagyis páratlan számú a-ra vagy b-re végz dnek, formálisan: L(M 2 ) = {a 2i+1 b 2i+1 wab 2i+1 wba 2i+1 }, i 0; w {a, b}. Itt az els két kifejezés a csak a-kból és b-kb l álló elfogadott szavakat írja le, még a második kett azokat amelyek nem homogének. 8. Egyértelm -e az alábbi környezetfüggetlen grammatika? Ha nem, adjon meg olyan jelsorozatot, amelyhez két különböz levezetési fa tartozik! G = {S, A}, {a, b}, S, {S A, A AbA, A a}.
(7 pont) Sajnos ez a feladat némileg hibás volt, az utolsó szabály helyesen: A a. Tekintsük az alábbi mondatot: ababa. Ehhez két legbaloldalibb levezetés is tartozik, tehát a mondatnak nincs egyértelm szintaxisfája (a behelyettesített szimbólum alá van húzva): S AbA aba ababa ababa ababa S AbA AbAbA ababa ababa ababa Tehát a nyelvtan nem egyértelm. 9. Hozza jólfésült nyelvtani formára (proper grammar) az alábbi nyelvtant! Ügyeljen az átalakítások helyes sorrendjére! Hogyan módosítaná a végs nyelvtant, hogy az üres szó (ε) is eleme legyen a nyelvnek? S aa b E, A B b, B ad a, C c, D b, E Ea. (10 pont) Jólfésült nyelvtani formára hozás négy egyszer algoritmus alkalmazásából áll: 1. Bottom-up (lentr l felfelé történ ) sz rés 2. Top-down (fentr l lefelé történ ) sz rés 3. ε-mentesítés 4. Egyszeres szabályok kiiktatása Mint az els pillanatra látható, a nyelvtan nem tartalmaz ε-szabályokat, ezért a 3. algoritmust nem kell végrehajtani a megadott nyelvtanon. Helyette van példában a második kérdés feltéve, tehát, hogyan tudjuk ε-osítani a végs nyelvtant, ami lényegesen egyszer bb feladat, mint az ε-mentesítés.
1. Bottom-up sz rés: Az ismert algoritmus alapján az alábbi halmazsorozatot hozzuk létre: B 0 = {a, b, c} B 1 = {a, b, c, S, A, B, C, D} =: B Tehát E nyelvtani szimbólum, és az összes t tartalmazó szabályt elhagyható, mivel nem vezethet le bel le terminális jelsorozat, így az alábbi szabályok maradnak: S aa b, A B b, B ad a, C c, D b. Megjegyzés: itt E ún. álrekurzíót okozó jel. 2. Top-down sz rés: T 0 = {S} T 1 = {S, A, a, b} T 2 = {S, A, B, a, b} T 3 = {S, A, B, D, a, b} =: T Tehát C nyelvtani, és c terminális szimbólum nem érhet el a mondatszimbólumból, így marad: S aa b, A B b, B ad a, D b. 3. Egyszeres szabályok kiiktatása: egy darab egyszeres szabály maradt: A B A top-down sz r algoritmus segítségével az alábbi, az egyes szimbólumokból elérhet nyelvtani szimbólumokat tartalmazó halmazokat hozzuk létre: T A = {A, B}, T B = {B}, ami persze els ránézésre is nyilvánvaló. Ezért az A B szabályban a B szimbólumot a bel le kiinduló szabályok jobboldalával helyettesítve az alábbiakat kapjuk: A ad a Tehát a jólfésült nyelvtanunk az alábbi szabályokból áll: S aa b, A b ad a, D b.
hiszen a B nyelvtani jel feleslegessé vált. 4. ε-osítás: bevezetünk egy új Ŝ-sel jelölt mondatszimbólumot, valamint az alábbi szabályokat adjuk a grammatikához: Ŝ ε, Ŝ S.