Você está na página 1de 4

Linguagens Formais e Autmatos 1 Lista de Exerccios

1. Seja o alfabeto = { } e considere a cadeia z = sobre o alfabeto . Escreva as cadeias zz, z3, z0 e determine seus comprimentos. Escreva o fecho de . 2. Seja o alfabeto = { 0, 1} e considere as cadeias x = 01 e = 110 sobre o alfabeto . Escreva as cadeias x , x x, !x "2 e ! xx"0. Escreva os conjuntos 2, e +. 3. #onstruir uma $ram%tica &ue $ere a lin$ua$em ' = {( {a,b,c} | ( cont)m o mesmo n*mero de a+s, b+s e c+s} ,ual ) o tipo da $ram%tica &ue voc- construiu . /. #onstruir uma $ram%tica &ue $ere a lin$ua$em re$ular ' ={( {0,1} | ( cont)m um n*mero par de 0+s e um n*mero par de 1+s } 0. #lassificar as $ram%ticas abaixo em Estrutura de 1rase, Sens2vel ao #ontexto, 'ivre de #ontexto ou 3e$ular e forne4a a lin$ua$em $erada por cada uma delas. 51 =< 61, 1, 71,S > 61 = {S, 8, 9} 1 = { 0, 1} 71 = { S 0 8, S 1 9, 8 0 8, 8 0, 9 1 9, 91 } 53 =< 63, 3, 73,S > 63 = {S, :} 3 = { a, b, c} 73 = { S a : a, : b :, a : a c, : a c a, ::b} 52 =< 62, 2, 72,S > 62 = {S, 8, :, ;} 2 = { a, b, c} 72 = { S a 8, 8 a S, S :, a : ;, ; ; b, ; b, a a b c} 5/ =< 6/, /, 7/,S > 6/ = {S, 8 } / = { a, b } 7/ = { S 8 8, S a, 8 S S, 8 b}

<. #onstruir uma $ram%tica &ue $ere a lin$ua$em livre de contexto ' = { an bm cn | n,m 0} =. #onstruir $ram%ticas re$ulares para as lin$ua$ens re$ulares sobre o alfabeto ={0,1} dadas a se$uir. a" '1 = 0+1+ = { 0 n 1 m | n,m > 0 } b" '2 = 01 = { 0 n 1 m | n,m 0 }

c" '3 = ! 0 1 "+ = { !0 1" n | n > 0 } >. #onstruir uma $ram%tica &ue $ere a lin$ua$em ' = { ( | ( { ! , " } e ( est% balanceada } ?ma cadeia est% balanceada se satisfazer todas as condi4@es abaixoA a" ( = est% balanceada. b" se ( est% balanceada, entBo ! ( " est% balanceada. c" se x e sBo cadeias balanceadas, entBo x tamb)m est% balanceada. d" nenhuma outra cadeia est% balanceada. C. Seja 5 = < 6, , , S > uma $ram%tica onde todas as re$ras de produ4Bo sBo da forma 8 u 9 ou 8 u, onde 8,9 6 e u . Dostre &ue '!5" ) uma lin$ua$em re$ular. Sugesto: #onstrua, de maneira $en)rica, uma $ram%tica re$ular &ue seja e&uivalente a 5. 10. 11. 12. #onstrua uma $ram%tica &ue $ere a lin$ua$em ' = { ai bj ai bj | i,j 0 e iEj > 0 } #onstrua uma $ram%tica &ue $ere a lin$ua$em ' = { ( ( | ( { 0, 1 } } #onstrua uma $ram%tica &ue $ere a lin$ua$em '={a
n
2

| n0}

13. !soluo" #onstrua uma $ram%tica &ue $ere a lin$ua$em


n

'={a 1/. 10. 1<.

| n0}

#onstrua uma $ram%tica livre de contexto &ue $ere a lin$ua$em ' = { ( { a, b } | nroFa+s!(" = nroFb+s!(" } #onstrua uma $ram%tica &ue $ere a lin$ua$em ' = { ( { 0, 1} | ( nBo cont)m dois 1+s consecutivos} #onstrua uma $ram%tica &ue $ere a lin$ua$em ' = { a n b 2n | n > 0 }

2.6.

Exerccios Resolvidos

13. Gesejamos descrever uma $ram%tica 5 = < 6, , , S > &ue $ere a lin$ua$em &ue cont)m senten4as formadas por s2mbolos Ha+ e &ue o n*mero de a+s seja a pot-ncia de 2 de um n*mero natural n. Iejamos, valor de n 0 1 2 3 / ... teremos a senten4a a aa aaaa aaaaaaaa aaaaaaaaaaaaaaaa

6otando a forma4Bo das senten4as da lin$ua$em, podemos falar &ue a lin$ua$em ' pode ser definida recursivamente porA 1F a senten4a a '. 2F se x ) uma senten4a de ', entBo xx tamb)m ) uma senten4a de ' 3F nenhuma outra senten4a pertencer% J lin$ua$em '. #om estas id)ias em mente, posso pensar na $ram%tica 5 tendo produ4@es &ue $ere uma forma sentencial v%lida, e a partir da2 dobraFse o n*mero de a+s ou $era uma senten4a terminal. EntBo, seja 5 = < 6, , , S > onde 6 = {, +, , &, 8, S } ={a} 7 = { 1. S 8 KL $era a forma sentencial inicial 2. 8 a 3. a 8 a a /. a a KL KL obt)m a cadeia terminal a partir da forma KL sentencial

LK , LK , LK , LK , LK , LK , LK , LK , LK }

0. 8 E L a KL indica &ue deve dobrar o s2mbolo a sua direita <. L 8 8 8 L KL at) atin$ir o s2mbolo de fim =. 8 L M 8 KL >. 8 M M 8 C. E M KL retorna J confi$ura4Bo inicial KL

7ara provar &ue 5 $era a lin$ua$em ', temos &ueA S 8 !pela re$ra 1" nesta forma sentencial, posso aplicar a re$ra 2 ! para finalizar a senten4a" ou aplicar a re$ra 0 !para dobrar o n*mero de a+s ".

?tilizando a re$ra 2, temos 8 a e pela re$ra / temos &ue a a, &ue ) uma senten4a da lin$ua$em , ou seja, S8 a a ?tilizando a re$ra 0, temos &ue 8 E L 8 , e entBo a *nica re$ra &ue se aplica ) a re$ra <, e entBo EL8 E88L E8M8 EM88 E88L pela re$ra < E 8 M 8 pela re$ra = E M 8 8 pela re$ra > 88 pela re$ra C

e temos novamente terminado a duplica4Bo de a+s da forma sentencial, podendo usar novamente a re$ra 2 ! para $erar a senten4a" ou a re$ra 0 !para dobrar o n*mero de a+s". 7odemos por meio destes passos dizer &ue a $ram%tica 5 $era senten4as da lin$ua$em ' e apenas senten4as da lin$ua$em '.