Házi feladatok megoldása Nyelvek felismerése Formális nyelvek, 5. gyakorlat 1. feladat Adjunk a következő nyelvet generáló 3. típusú nyelvtant! Azon M-áris számrendszerbeli számok, melyek d-vel osztva k maradékot adnak. (Nem állhat az elején 0.) Célja: A nyelvtanokkal való nyelvmegadás gyakorlása, a nyelvtani típusok, illetve a nyelvtípusok fogalmának elmélyítése. Fogalmak: A Chomsky-féle nyelvtanosztályozás és nyelvosztályozás, Chomsky-hierarchia (gyenge, erős). : S is i (mod d) 1 i M 1 S i js Mi+j (mod d) 0 i, j M 1 S k ε Feladatok jellege: Egyszerűbbtől a bonyolultabbig nyelvekhez nyelvtan, nyelvtanhoz a generált nyelv, a nyelvtan típusának detektálásával. 1 példán a kétirányú tartalmazás bizonyítása. 2008/09 I. félév Formális nyelvek (5. gyakorlat) Nyelvek felismerése 2008/09 I. félév 1 / 19 Formális nyelvek (5. gyakorlat) Nyelvek felismerése 2008/09 I. félév 2 / 19 Házi feladatok megoldása 2. feladat Adjunk a következő nyelvet generáló 3. típusú nyelvtant! L = {u {a, b, c} ; ab, bc, ca u}. Házi feladatok megoldása 3. feladat Adjunk nyelvtant! T = {a} L = {a 2n ; n 0}. : Tiltott = {ab, bc, ca} S ts t S t t S t S ε S t ε t T t, t T, tt Tiltott t T : S LDaR LD ε R ε Da aad DR ER ER ε L ε ae Eaa LE LD Formális nyelvek (5. gyakorlat) Nyelvek felismerése 2008/09 I. félév 3 / 19 Formális nyelvek (5. gyakorlat) Nyelvek felismerése 2008/09 I. félév 4 / 19
Nyelvtanok típusai Típus Megszorított típus szabályai Alaptípus szabályai 0. nincs további megkötés 1. γ 1 Aγ 2 γ 1 qγ 2, p q ahol l(p) l(q); ahol γ 1, γ 2 (T N), A N, q (T N) + ; 2. A q, ahol A N, q (T N) + ; 3. A ab vagy A a ahol A, B N, a T ; A q, ahol A N, q (T N) A ub vagy A u, ahol A, B N, és u T Nyelvek típusai Jelölje G i illetve G megszi, (i = 0, 1, 2, 3) az i. típusú illetve a megszorított i. típusú nyelvtanok osztályát. L (megsz)i = {L L nyelv, és van olyan G G (megsz)i, amelyre L(G) = L}. (i = 0, 1, 2, 3) Kiterjesztési tétel L i = L megszi, (i = 1, 2, 3). Az 1. típusú nyelveket környezetfüggő, a 2. típusúakat környezetfüggetlen, a 3. típusúakat reguláris nyelveknek is nevezzük. Az utóbbit a Kleene tétel miatt: L REG a reguláris kifejezéssel leírható nyelvek (reguláris nyelvek) nyelvcsaládja. Kleene tétele L REG = L 3. Formális nyelvek (5. gyakorlat) Nyelvek felismerése 2008/09 I. félév 5 / 19 Formális nyelvek (5. gyakorlat) Nyelvek felismerése 2008/09 I. félév 6 / 19 Chomsky nyelvhierarchia L 3 L 2 L 1 L 0 0 0 1 1 2 2 3 3 Nyelvtanok Megszorított nyelvtanok ; nyelvek Formális nyelvek (5. gyakorlat) Nyelvek felismerése 2008/09 I. félév 7 / 19 Milyen típusúak a következő nyelvtanok? 1. S ε asb bsa SS 2. S ε asb BSa SS B ε b 3. S ε as asb bsa Sa SS 4. S tst ε t T 5. S X t t X t ts S ty t ty t S ty t Y t t X t Y t tx t X t t t, t T 1. típus (nem megszorított) Formális nyelvek (5. gyakorlat) Nyelvek felismerése 2008/09 I. félév 8 / 19
Melyik nyelvet generálják a következő nyelvtanok? 1. S ε asb bsa SS L 1 = {u {a, b} l a (u) = l b (u)} 2. S ε asb BSa SS B ε b L 2 = {u {a, b} l a (u) l b (u)} 3. S ε as asb bsa Sa SS L 3 = {u {a, b} l a (u) l b (u)} 4. S tst ε t T L 4 = {u u=v v 1,v T } 5. S X t t X t ts S ty t ty t S ty t Y t t X t Y t tx t X t t t, t T L 5 = {v v = uu, u T + } (dadogós nyelv) Formális nyelvek (5. gyakorlat) Nyelvek felismerése 2008/09 I. félév 9 / 19 Ugyanannyi a-t és b-t tartalmazó szavak nyelve (vázlat): Az első G nyelvtanra belátjuk, hogy L(G) = L 1. A levezetés hosszára vonatkozó teljes indukcióval belátjuk, hogy minden levezetett β {a, b, S} mondatformára l a (β) = l b (β). Az n = 0 eset nyilvánvaló. Tegyük fel, hogy minden n-nél rövidebb levezetésre igaz az állítás. Legyen S n β. Ekkor létezik egy olyan α {a, b, S} mondatforma, hogy S n 1 α β. Az indukciós feltevés alapján l a (α) = l b (α). Mivel α β, ezért léteznek γ 1, γ 2 {a, b, S}, hogy α = γ 1 Sγ 2 és β = γ 1 qγ 2, ahol q {ε, asb, bsa, SS}. Az első és a negyedik esetben ugyanannyi az α-ban és a β-ban szereplő a-k és b-k száma, míg a második és harmadik esetben β-ban eggyel több a és b van, mint α-ban, tehát l a (β) = l b (β) mind a négy esetben. Formális nyelvek (5. gyakorlat) Nyelvek felismerése 2008/09 I. félév 10 / 19 (folyt.) és a dadogós szavak nyelve Legyen u L 1. l(u)-ra vonatkozó teljes indukcióval bizonyítjuk, hogy u levezethető. Ha l(u) = 0, akkor nyilvánvaló. Tegyük fel, hogy minden l(u)-nál rövidebb L 1 -beli szó levezethető. Négy eset lehetséges: vagy u = ε, vagy u = au b, vagy u = bu a (ezen esetekben nyilván u L 1 ), vagy pedig létezik u, u L 1, u ε, u ε, hogy u = u u. Például a negyedik esetben ekkor az indukciós feltevés alapján S u és S u, tehát S SS u S u u = u. (A többi eset hasonló.) (vázlat): Az ötödik nyelvtan szabályainak segítségével (S X t t tt kivételével) csak az alábbi módon vezethetünk le S-ből terminális szót: S X t ts Xt tt 1 Y t1 t k Y tk Xt Y t1 tt 1 t 2 Y t2 t k Y tk tx t1 tt 1 t 2 Y t2 t k Y tk tt1 t k 1 X tk tt 1 t k tt 1 t k 1 t k tt 1 t k. Nyelvtanosztályok zártsági tulajdonságai (1. típus) 1. Feladat Készítsünk olyan 1. típusú G nyelvtant, melyre L(G) = L(G 1 ) L(G 2 ); L(G) = L(G 1 )L(G 2 ); L(G) = L(G 1 ). G 1 = {a, b}, {S, A, B}, {S ε ASB, AAB aaa, Aa aa, B b}, S G 2 = {a}, {S, A, B}, {S ABS A, ABA aaaa, BA aaa}, S G 1 = {a, b}, {S 1, A 1, B 1 }, {S 1 ε A 1 S 1 B 1, A 1 A 1 B 1 aaa, A 1 a aa 1, B 1 b}, S 1 G 2 = {a}, {S 2, A 2, B 2 }, {S 2 A 2 B 2 S 2 A 2, A 2 B 2 A 2 aaaa, B 2 A 2 aaa}, S 2 Formális nyelvek (5. gyakorlat) Nyelvek felismerése 2008/09 I. félév 11 / 19 Formális nyelvek (5. gyakorlat) Nyelvek felismerése 2008/09 I. félév 12 / 19
Nyelvtanosztályok zártsági tulajdonságai (1. típus) Nyelvtanosztályok zártsági tulajdonságai (2. típus) G = {a, b}, {S, S 1, A 1, B 1, S 2, A 2, B 2 }, {S S 1 S 2 ε, S 1 A 1 S 1 B 1, A 1 A 1 B 1 aaa, A 1 a aa 1, B 1 b, S 2 A 2 B 2 S 2 A 2, A 2 B 2 A 2 aaaa, B 2 A 2 aaa}, S G konk = {a, b}, {S, S 1, A 1, B 1, S 2, A 2, B 2 }, {S S 1 S 2 S 2, S 1 A 1 S 1 B 1, A 1 A 1 B 1 aaa, A 1 a aa 1, B 1 b, S 2 A 2 B 2 S 2 A 2, A 2 B 2 A 2 aaaa, B 2 A 2 aaa}, S G 1 = {a, b}, {S 1, A 1, B 1 }, {S ε S 1 S 1 S, S 1 ε A 1 S 1 B 1, A 1 A 1 B 1 aaa, A 1 a aa 1, B 1 b, as as 1, bs bs 1, as as 1 S, bs bs 1 S }, S 2. Feladat Készítsünk olyan 2. típusú G nyelvtant, melyre L(G) = L(G 1 ) L(G 2 ); L(G) = L(G 1 )L(G 2 ); L(G) = L(G 2 ). G 1 = {a}, {S}, {S Saa a}, S G 2 = {a, b}, {S, A}, {S asa ε, A b ε}, S G 1 = {a}, {S 1}, {S 1 S 1 aa a}, S 1 G 2 = {a, b}, {S 2, A 2 }, {S 2 as 2 A 2 ε, A 2 b ε}, S 2 Formális nyelvek (5. gyakorlat) Nyelvek felismerése 2008/09 I. félév 13 / 19 Formális nyelvek (5. gyakorlat) Nyelvek felismerése 2008/09 I. félév 14 / 19 Nyelvtanosztályok zártsági tulajdonságai (2. típus) Nyelvtanosztályok zártsági tulajdonságai (3. típus) G = {a, b}, {S, S 1, S 2, A 2 }, {S S 1 S 2, S 1 S 1 aa a, S 2 as 2 A 2 ε, A 2 b ε}, S G konk = {a, b}, {S, S 1, S 2, A 2 }, {S S 1 S 2, S 1 S 1 aa a, S 2 as 2 A 2 ε, A 2 b ε}, S G 2 = {a, b}, {S, S 2, A 2 }, {S S 2 S ε, S 2 as 2 A 2 ε, A 2 b ε}, S 3. Feladat Készítsünk olyan 3. típusú G nyelvtant, melyre L(G) = L(G 1 ) L(G 2 ); L(G) = L(G 1 )L(G 2 ); L(G) = L(G 2 ). G 1 = {a}, {S}, {S aas a}, S G 2 = {a, b}, {S, A}, {S as A, A aba S a}, S G 1 = {a}, {S 1}, {S 1 aas 1 a}, S 1 G 2 = {a, b}, {S 2, A 2 }, {S 2 as 2 A 2, A 2 aba 2 S 2 a}, S 2 Formális nyelvek (5. gyakorlat) Nyelvek felismerése 2008/09 I. félév 15 / 19 Formális nyelvek (5. gyakorlat) Nyelvek felismerése 2008/09 I. félév 16 / 19
Nyelvtanosztályok zártsági tulajdonságai (3. típus) 3. típusú nyelvtan készítése reguláris kifejezéshez G = {a, b}, {S, S 1, S 2, A 2 }, {S S 1 S 2, S 1 aas 1 a, S 2 as 2 A 2, A 2 aba 2 S 2 a}, S G konk = {a, b}, {S 1, S 2, A 2 }, {S 1 aas 1 as 2, S 2 as 2 A 2, A 2 aba 2 S 2 a}, S 1 G 2 = {a, b}, {S, S 2, A 2 }, {S ε S 2, S 2 as 2 A 2, A 2 aba 2 S 2 a as 2 }, S Nulladik típus esetén unió, konkatenáció úgy, mint a 2. típusnál, lezárás úgy, mint 1. típusnál. 4. Feladat Készítsünk olyan 3. típusú G nyelvtant, melyre L(G) = ((ab a) b ε) a! Aulról felfelé építkezve kövessük az előző feladat módszerét! S ε A a A B C ε B abc ac abb ab C b ba Formális nyelvek (5. gyakorlat) Nyelvek felismerése 2008/09 I. félév 17 / 19 Formális nyelvek (5. gyakorlat) Nyelvek felismerése 2008/09 I. félév 18 / 19 Házi feladat 1. Melyik nyelvet generálja a következő nyelvtan? T = {(, )} a. S (S) SS ε b. S XS ε és X (S) c. S (SS ) 2. Adjunk az L = {v v = uu, u T } (T = {a, b}) nyelvet generáló nyelvtant a v v 1 alakú szavak nyelvénél látott módszerre való visszavezetéssel! 3. Készítsünk olyan 3. típusú G nyelvtant, melyre L(G) = (b(ab a) ab) aa! Formális nyelvek (5. gyakorlat) Nyelvek felismerése 2008/09 I. félév 19 / 19