Gramáticas e Linguagens Independentes de Contexto 6.1 Responde às uestões seguintes considerando a gramática independente de contexto G = (V, {a, b}, P, R), onde o conjunto de regras P é: R XRX S S at b bt a T XT X X X a b (a) Quais são as variáveis e os símbolos terminais de G? Qual é a variável inicial? (b) Dá três exemplos de palavras de L(G). (c) Dá três exemplos de palavras ue não pertençam a L(G). (d) Verdadeiro ou Falso? Justifica. 1. T aba. 2. T aba. 3. T T. 4. T T. 5. XXX aba. 6. X aba. 7. T XX. 8. T XXX. 9. S. 10. R ab 11. R aba (e) Descreve em português a linguagem L(G). 6.2 Seja G a gramática independente de contexto, descrita por G = (V, Σ, P, S), onde o alfabeto é Σ = {0, 1}, os símbolos não terminais são V = {S}, o símbolo inicial é S e as produções são dadas por P = {S, S 0S, S 1S}. (a) Obtém uma derivação para as seguintes seuências: 001, 101000 e 111000. (b) Mostra ue a linguagem gerada por G é o conjunto de todas as seuências finitas de 0s e 1s, i.e., {0, 1}. 6.3 Justifica a afirmação: a linguagem {0 n 1 2n : n 0} do alfabeto {0, 1} não é regular mas é independente de contexto 6.4 Considera a seguinte gramática independente de contexto G = (V, Σ, R, E), onde V = {E, N} e Σ = {0, 1, +,, (, )}. As regras da gramática são: E E + E E E (E) N N 0 1 Determina as derivações e árvores associadas a cada uma das seguintes palavras: (a) 1 (b) 1 + 0 (c) 1 + 0 + 1 (d) (1 1) + 0 (e) 1 1 + 1 (f) 1 (1 + 1) 6.5 Constrói gramáticas independentes de contexto ue reconheçam as seguintes linguagens. O alfabeto considerado é Σ = {0, 1}.
(a) O conjunto vazio (b) { w w contém pelo menos três 1s } (c) { w w começa e termina pelo mesmo símbolo } (d) { w o comprimento de w é ímpar } (e) { w o comprimento de w é ímpar e o símbolo do meio é 0 } (f) { w w contém mais 1s ue 0s } (g) { w w = w R } (h) { w w tem duas vezes mais 0s do ue 1s } (i) O complemento da linguagem { 0 n 1 n n 0 } (j) {w {0, 1} 3 divide a diferença entre o número de 0 s e 1 s em w } (k) { 0 i 1 j 0 i i 0, j 0 } (l) { 0 i 1 i+j 0 j i 0, j 0 } 6.6 Mostra ue a seguinte gramática independente de contexto G = ({S}, {a, b}, P, S) com as regras: gera a linguagem dos palíndromos em {a, b}. S asa bsb a b 6.7 Escreve gramáticas independentes de contexto para as linguagens seguintes. Indica se são ao não regulares. (a) as fórmulas do cálculo proposicional: símbolos proposicionais: p,, r, s conectivas lógicas:,,, parêntesis: ( e ) (b) números decimais em notação científica: por exemplo 3.14, 15.21,.13E2, 23E 5 (c) as expressões regulares em {a, b} símbolos básicos: a, b, e operadores +, (concatenação) e parêntesis: ( e ) 6.8 Seja G = ({S}, {a, b, c}, {S aas, S ccs, S bsaa, S b}, S) uma gramática independente de contexto. Denote-se por V e Σ os conjuntos de variáveis e terminais de G, respectivamente. (a) Determina D n = {w (V Σ) S n G w} para n = 1, 2, 3, 4. (b) Determina as árvores de derivação para aaccbaa e aabccbaabaaaa. (c) Mostra ue abaac / L(G). (d) Descreve informalmente a linguagem gerada pela gramática. (e) Mostra por indução sobre o número de passos da derivação ue uaisuer ue sejam n > 0 e x (V Σ), se S n G x então k 0 w ({b}a)k y A x = ywba 2k x = ywsa 2k em ue A = {aa, cc}. Conclui ue L(G) {ywba 2k y A, w ({b}a) k, k 0} = {xa 2(k 1) x (A{b}) k, k > 0}. (f) Mostra ue L(G) {xa 2(k 1) x (A{b}) k, k > 0} em ue A = {aa, cc}, mostrando ue S w /2 G ws, ualuer ue seja w A; (Por indução sobre w ) concluindo ue S 1+ w /2 G wb, ualuer ue seja w A; e concluindo ue S 1+ w /2 G wbsaa, ualuer ue seja w A;
para mostrar ue para todo k > 0, se w (A{b}) k {a} 2(k 1) S G w então w (A{b}) k+1 {a} 2k S G w; e concluir L(G) {xa 2(k 1) x (A{b}) k, k > 0}. (g) Descreve formalmente L(G) 6.9 Escreve uma gramática independente de contexto ue gere a linguagem de alfabeto Σ = {0, 1} constituída pelas palavras em ue o número de 1 s não excede o número de 0 s. Demonstra ue a gramática obtida gera a linguagem. 6.10 Escreve uma gramática independente de contexto ue gera a linguagem de alfabeto Σ = {a, b, c} constituída pelas palavras da forma a n b m c l em ue l = n. Demonstra ue a gramática obtida gera a linguagem. Gramáticas ambíguas 6.11 Considera a seguinte gramática G = ({S}, {S asbs bsas }, {a, b}, S) (a) Mostra ue L(G) é o conjunto de palavras de {a, b} com o mesmo número de a s e b s. (b) Mostra ue G é ambígua. (c) Escreve uma gramática não ambígua euivalente a G 6.12 Considera a gramática G = ({S, X}, {S X Sa, X a b}, {a, b}, S) Mostra ue não é ambígua e descreve a linguagem gerada. 6.13 Considera a seguinte gramática para expressões aritméticas em notação prefixa: ({E}, {E +EE EE EE x y}, {+,,, x, y}, E) (a) Encontra derivações pela esuerda e pela direita e uma árvore de derivação para + xyxy. (b) Mostra ue a gramática não é ambígua. 6.14 Considera a seguinte gramática ({S, A, B}, {S A0B, A 1A, B 0B 1B }, {0, 1}, S) (a) Mostra ue a gramática não é ambígua. (b) Descreve a linguagem gerada pela gramática (c) Encontra uma gramática ambígua euivalente e justifica a sua ambiguidade 6.15 Mostra ue a seguinte gramática de alfabeto {,, p, (, )} é ambígua e encontra uma euivalente ue o não seja. S S S S S (S) p 6.16 Mostra ue a seguinte gramática de alfabeto {0, 1} é ambígua e encontra uma euivalente ue o não seja. S AB1 A A11A B B0B B1B
Resolução de exercícios escolhidos 6.9 Seja G a gramática com as seguintes regras: S 0S1S 1S0S 0S Temos ue mostrar ue, sendo L a linguagem formada pelas palavras em ue o número de 1 s não excede o número de 0 s, se tem: L(G) L e L L(G). (L(G) L): A única palavra de L(G) ue pode ser derivada com um só passo é ue pertence trivialmente a L. Seja então r uma palavra de L(G), portanto existe uma derivação de r em G com n passos (n = 1). Suponhamos ue para todas as palavras r com uma derivação mais curta ue a de r se tem r L. Como existe uma derivação de r em G (e estamos a supor ue tem mais do ue um passo), esta tem ue ter uma das seguintes formas: S 0S1S r S 1S0S r S 0S r Como o tamanho da derivação de r é n o tamanho das derivações das palavras ue correspondem a cada um dos S ue ocorrem no primeiro passo de derivação de r têm ue ter derivações menores ue n. Portanto, pela hipótese de indução, são palavras cujo número de 1 s não excede o número de 0 s. Então em ualuer dos três casos é trivial concluir ue a palavra r goza dessa mesma propriedade e portanto r L. (L L(G)): Provemos ue ualuer palavra r ue contenha um número de 1 s ue não exceda o número de 0 s pode ser derivada em G, ou seja r L(G), por indução no comprimento de r. Se r = 0, então r = e portanto pode ser trivialmente derivada em G. Seja então r L com r = n e suponhamos ue ualuer palavra r com comprimento menor ue n se tem r L r L(G). Suponhamos ue o primeiro caracter de r é um 0, se r é composta somente por 0 s então r temos ue S 0S e como 0 n 1 L por hipótese de indução existe uma derivação para 0 n 1 e portanto existe uma derivação S 0S r logo r L(G). Se pelo contrário existir algum 1 em r então r = 0r 1r para algum r, r L porue: se o último caracter de r é um 1 então r = 0r 1 e r L; se o último caracter é um 0 então tomemos o 1 mais à esuerda em r: r = 0r 01r 0 0 se r 0, r 0 0 L está o problema resolvido... se não é porue r 0 L e r 0 0 L (pois r 0 só contém 0 s) e r 0 contém pelo menos mais um 0 do ue 1 s (porue, por hipótese r 0 0 L e r L). Então tomamos o 1 seguinte: r = 0r 11r 1 0 se r 1, r 1 L o problema está resolvido senão é porue se tem r 1 L e r 1 L (porue r 0 tinha pelo menos um 0 mais ue ue 1 s e r 1 só contém mais um 1 ue r ), notando ue r 1 continua a ter de conter pelo menos mais um 0 do ue 1 s prosseguimos o processo para o 1 seguinte.... Temos garantia ue o processo termina com sucesso pois r termina com um 0 pelo ue para o último 1 (o mais à direita) não é possível ter com r n L e r n L. r = 0r n1r n0
Portanto r = 0r 1r como r, r L. Como r, r < n pela hipótese de indução r, r L(G) logo r L(G). O caso de r ter como primeiro caracter um 1 é inteiramente análogo ao anterior. 6.10 Uma gramática ue gera a linguagem é a gramática com as seguintes regras: S asc A C A aa ab C Cc Bc B bb Seja L a linguagem pedida, temos ue mostrar ue L = L(G) ou seja ue L L(G) L(G) L. (L(G) L) : Vamos mostrar o seguinte: B w então w é da forma b m com m N. Se w for derivável num só passo então w =. Se a derivação de w tiver m passos w é trivialmente da forma b m 1. C w então w é da forma b m c l com m, l N, l > 0. Se na derivação de w intervem somente uma vez a regra C então w tem ue ser da forma b m c. Se na derivação intervierem l regras C então w é trivialmente da forma b m c l. A w então w é da forma a n b m com n, m N, n > 0. Inteiramente análogo à anterior. S w então w é da forma a n b m c l com n, m, l N, n = l. Se na derivação de w só intervem uma vez a regra S então w é da forma a n b m ou b m c l. Como cada derivação usando a regra S asc acrescenta um a e um c, se S w então w tem a forma pretendida. (L L(G)) : Seja w L então w é da forma a n b m c l com n = l logo ou n > l ou n < l. Suponhamos ue n > l, seja n = l + k então S l a l Ac l k a l a k Bc k m a n b m c l logo w L(G). Se n < l a demonstração é inteiramente análoga. 6.15 Para mostrar ue a gramática é ambígua basta encontrar uma palavra com duas árvores de derivação distintas, p.e para : S 8 8888888 S S 8 8888888 S S S S S S S Uma gramática não ambígua, euivalente à anterior é: S P S P S P P (S) p
6.16 Para mostrar ue esta gramática é ambígua basta exibir duas árvores de derivação diferentes para uma mesma palavra, p.e 11111: S A B 1 A 1 1 A A 1 1 A S 7 7777777 A B 1 B 1 B B 1 B B 1 B B 1 B Uma gramática euivalente à anterior, mas não ambígua é: S 1S 0S 1 de derivação y esuerda. {,,,} das palavras com dois tipos de parêntesis bem casados. Definimos PAREN 2 indutivamente como o menor conjunto tal ue: PAREN 2 e x PAREN 2 PAREN 2 / PAREN 2. gere PAREN 2. esuerda e uma derivação pela direita para a palavra. {a,b,+,, }, S})