• Nenhum resultado encontrado

Draft-v Gramáticas Independentes do Contexto O funcionamento de uma CFG Derivação de uma palavra

N/A
N/A
Protected

Academic year: 2021

Share "Draft-v Gramáticas Independentes do Contexto O funcionamento de uma CFG Derivação de uma palavra"

Copied!
12
0
0

Texto

(1)

Dr

aft

-v0.

2.1

11

Gramáticas Independentes do Contexto

Como vimos nos capítulos anteriores, apesar da classe das Linguagens Regulares serem particularmente “bem comportadas” tanto em termos de complexidade dos seus algoritmos associados, como em termos da decidibilidade, isto é da existência de algoritmos, da maioria dos seus problemas associados, as suas limitações de expressividade não permitem representar linguagens tão simples como a dos palíndromos de um dado alfabeto. Neste capítulo iremos introduzir a noção de gramática formal e com ela uma nova classe de linguagens formais: as Linguagens Independentes de Contexto.

Definição 11.1 (Gramática Independente de Contexto ou CFG) Uma gramática independente de contexto, ou CFG (do inglês “Context Free Grammar”), é um quadruplo ordenado hV, ⌃, P, Si, em que V é um conjunto finito, não vazio que chamamos conjunto de símbolos não terminais;

⌃ é um conjunto finito, não vazio que designamos por Alfabeto, ou por conjunto de símbolos terminais; P é um subconjunto finito, não vazio, de V ⇥ (⌃ [ V)?a que chamamos o conjunto das produções; S com (S 2 V) designa o chamado símbolo inicial da gramática.

11.1 O funcionamento de uma CFG

11.1.1 Derivação de uma palavra

Seja G = hV, ⌃, P, Si uma CFG, ↵, , 2 (⌃ [ V)?e A 2 V. Dizemos que ↵ se deriva por G, num passo,

de ↵A e escrevemos

↵A )G ↵

se A ! for uma produção de G. Da mesma forma dizemos que se deriva por G, em n passos, de ↵, e escrevemos

↵ )n G ,

se

(2)

Dr

aft

-v0.

2.1

para algumas palavras ↵1, . . . , ↵n-12 (⌃ [ V)?.

Sejam ↵, 2 (⌃ [ V)?, dizemos se deriva de ↵ por G, e escrevemos

↵ )? G

se existir n > 0 tal que

↵ )n G .

Definição 11.2 (linguagem definida por uma CFG) Seja G = hV, ⌃, P, Si uma CFG. A linguagem definida por G é

L(G) = {w 2 ⌃? | S )? G w}.

Exemplo 11.3 Tomemos a linguagem L = {0n1n | n 2 N} que sabemos não ser uma linguagem

regular. Esta é, no entanto, a linguagem gerada pela gramática G=h{S}, {0, 1}, {S ! ", S ! 0S1}, Si.

Normalmente, representamos, de forma muito mais legível, uma gramática, simplesmente pelo con-junto das suas produções, sendo o não terminal a primeira variável referida o símbolo inicial da gramática, desde que a diferenciação entre o conjunto dos símbolos terminais e o conjunto dos símbolos não terminais seja evidente. Da mesma forma, e para simplificar a leitura, representamos por A ! ↵0 | ↵1 |· · · | ↵n o conjunto das produções {A ! ↵0, A! ↵1, . . . , A! ↵n} para um mesmo

símbolo não terminal A. Neste caso, a gramática G seria apresentada como S ! " | 0S1.

A primeira produção, S ! ", estabelece que a palavra vazia, ", pertence à linguagem L. A segunda produção, S ! 0S1, estabelece que se tomarmos uma palavra da linguagem L e concatenarmos um 0 à esquerda e um 1 a direita obtemos uma palavra de L.

Para mostrar que L = L(G), comecemos por provar que L ◆ L(G). Seja w 2 L(G), isso significa que S )?

Gw, ou seja

((9n) S )n Gw).

Provemos então por indução sobre n que w 2 L. Se n = 1 isso significa que só é aplicada uma produção, e o resultado é uma palavra de ⌃?, ora a única forma de uma só produção produzir uma

palavra sem símbolos não terminais é a da produção aplicada ser S ! ", o que implica que w = ", e " 2 L. Suponhamos então que, para qualquer palavra w, se S )n

G w então w 2 L, e mostremos

que então podemos concluir que se S )n+1

G w0 isso implica que w02 L. Como n + 1 6= 1, podemos

concluir qua a primeira produção aplicada não pode ser aquela que produz " pelo que temos: S)G0S1)nG0w001= w0.

Ou seja, temos S )n

Gw00, para algum w00. Mas, pela hipótese de indução, isso implica que w002 L.

Como w0 = 0w001, e w00 2 L temos que w0 2 L, obrigatoriamente, e, portanto, todas as palavras

geradas pela gramática G são palavras da linguagem L.

Falta, então, mostrar que todas as palavras da linguagem L são geradas por G, ou seja L ✓ L(G). Primeiro observemos que todas as palavras de L têm comprimento par, ou seja que para qualquer palavra w de L, |w| = 2n para algum n. Procedamos então por indução sobre o comprimento das palavras de L. Se esse comprimento for 0, então a palavra em questão é a palavra vazia, ", que como vimos é gerada por G. Suponhamos que todas as palavras de L de tamanho 2n são geradas por G e seja w uma palavra de L com |w| = 2(n + 1). Mas então w = 0n+11n+1, portanto w = 0w01 com

(3)

Dr

aft

-v0.

2.1

w0= 0n1n. Como |w0|= 2nestamos nas condições da hipótese de indução, pelo que podemos garantir

que w02 L(G), ou seja S )?

Gw0. Mas então

S)G0S1)?G0w01= w,

logo w 2 L(G), o que termina a demonstração.

11.1.2 Árvores de Derivação

Uma outra forma de apresentar uma derivação de uma palavra por uma árvore é usando, o que se costuma designar por, uma árvore de derivação. Uma árvore de derivação é uma árvore, no sentido de um grafo, que tem como raíz o símbolo inicial da gramática. De cada símbolo não terminal E tem como filhos os nós que representam símbolos Ei de uma produção da gramática S ! E0E1· · · En. A palavra cuja derivação

é representada pela árvore, é aquela constituída pelos símbolos que constam das folhas da árvore, lidas da esquerda para a direita.

Consideremos, por exemplo, a seguinte gramática:

S ! (S) | S + S | S ⇥ S | A A ! 0 | 1.

Uma árvore de derivação da palavra (1 + 0) ⇥ 1 é:

S S ( S S 1 + S 0 ) ⇥ S 1 Exercício 34

1. Escreve gramáticas para as seguintes linguagens independentes de contexto: a) Linguagem formada pelos palíndromos de alfabeto {0, 1}.

b) A linguagem complementar da linguagem da alínea anterior. c) aibjck : i6= j _ j 6= k

2. Dada a gramática

S ! aB | bA A ! a | aS | bAA B ! b | bS | aBB. a) Identifica a linguagem que a gramática gera.

b) Para a palavra aaabbabbba encontra uma derivação à esquerda. c) Para a mesma palavra encontra uma derivação à direita.

d) Para a mesma palavra escreve uma árvore de derivação.

(4)

Dr

aft

-v0.

2.1

11.2 Simplificação de gramáticas

Lema 11.4 Dada uma CFG G = hV, ⌃, P, Si, representando uma linguagem não vazia, podemos en-contrar uma gramática G0=hV0, ⌃, P0, Si em que, ((8A 2 V0)(9w 2 ⌃?) A)?

G0 w).

Dem. Todos os símbolos não terminais A 2 V para os quais existe uma produção da forma A ! w, para alguma palavra w 2 ⌃?, têm claramente lugar em V0. Se a produção A ! X1X2· · · Xnexiste

em P, com os Xi símbolos terminais ou outros símbolos não terminais que já se encontrem

incluídos em V0, isso faz com que possamos incluir A em V0 também. O conjunto V0 pode ser

obtido como o fecho do processo atrás descrito. Depois de obtido V0podemos remover de P todas

as produções em que tomem lugar símbolos não terminais não constantes de V0, obtendo assim

P0. ⇤

Lema 11.5 Dada um CFG G = hV, ⌃, P, Si podemos encontrar uma gramática equivalente G0=hV0, ⌃, P0, Si

tal que para cada X 2 V0[ ⌃ existem ↵, 2 (V0[ ⌃)? tal que S )?↵X .

Dem. O conjunto V0[ ⌃, pode ser construído por um processo iterativo. Colocamos, primeiramente,

Sem V0. Se A é colocado em V0 e A ! ↵1| ↵2|· · · | ↵n, então adicionamos todas as variáveis

de ↵1, ↵2, . . . , ↵n a V0, assim como adicionamos os terminais de ↵1, ↵2, . . . , ↵n a ⌃0. P0 é o

conjunto das produções que contêm símbolos somente de V0[ ⌃0.

11.3 Forma Normal de Chomsky

Para muitas das demonstrações sobre as CFL que assentam sobre a sua representação por uma CFG é conveniente apresentar esta última sob uma forma binária. Essa forma é a chamada Forma Normal de Chomsky em que a gramática tem somente produções da forma

A ! BC em que B e C são símbolos não terminais; ou da forma

A ! a

em que a é um símbolo terminal. Se S for o símbolo inicial, poderá haver uma produção da forma S ! ".

Teorema 11.6 (Forma Normal de Chomsky) Qualquer linguagem independente do contexto admite uma gramática que a gera e que se encontra na Forma Normal de Chomsky (CNF), ou seja, todas as suas produções são da forma A ! BC ou A ! a com A, B, C símbolos não terminais e a símbolo terminal, com uma eventual produção S ! " se S for o símbolo inicial.

Dem. Seja G = hV, ⌃, P.Si uma CFG. Começamos por introduzir um novo símbolo não terminal S0,

fazemo-lo o novo símbofazemo-lo inicial e acrescentamos uma produção S0! S, sendo S o símbolo inicial original. Isto

garante que o símbolo inicial não ocorre em nenhum membro direito de uma produção da gramática. A gramática resultante é trivialmente equivalente à original.

Seguidamente eliminamos todas as produções-" não iniciais, ou seja toda as produções do tipo A ! ", em que A 2 V e A não inicial. Para tal procedemos da forma seguinte. Para cada produção A ! " (com A não inicial), removemos tal produção e para todas as outras produções, por cada ocorrência

(5)

Dr

aft

-v0.

2.1

do símbolo A no lado direito de uma produção (R ! uAv) acrescentamos uma produção em que essa ocorrência de A foi removida (R ! uv). Se a produção contiver somente A como membro direito da produção (R ! A) então acrescentamos uma produção-" (R ! ") a menos que essa produção já tivesse anteriormente sido alvo de remoção por este processo. É fácil ver que cada uma destas transformações preservam a linguagem definida pela gramática. No fim obtemos uma gramática equivalente à inicial sem produções-", a menos de uma eventual produção-" inicial.

Eliminam-se as produções unitárias. Para cada produção da forma A ! B, remove-se a produção da gramática e para cada produção B ! u acrescenta-se uma produção A ! u, a menos que esta produção fosse uma que tivesse sido anteriormente removida por este processo. Estas transformações preservam a linguagem gerada pela gramática, pelo que no fim teremos uma gramática sem produções unitárias equivalente à gramática original.

Finalmente rescrevem-se as produções para o formato desejado. Para cada produção da forma A ! u1u2· · · uk, com k 3sendo os ui símbolos não terminais ou símbolos terminais, substitui-se pelas

produções

A! u1A1, A1! u2A2, . . . , Ak-2! uk-1uk,

com Ai novos símbolos não terminais. Para cada ui 2 ⌃, substituímos ui por um novo símbolo não

terminal Uie acrescentamos a produção Ui! ui. Mais uma vez, cada uma desta transformações

pre-serva a linguagem aceite pela gramática, pelo que no fim do processo temos uma gramática equivalente à original, na Forma Normal de Chomsky. ⇤ Exemplo 11.7 Consideremos a gramática seguinte, e utilizemos o processo descrito na demonstração anterior para obter uma gramática equivalente, na Forma Normal de Chomsky

S ! ASA | aB A ! B | S

B ! b | ". Introduzimos um novo símbolo inicial,

S0 ! S S ! ASA | aB A ! B | S B ! b | ". Eliminamos o " S0 ! S S ! ASA | aB| a A ! B | S| " B ! b |". Agora temos que eliminar o " que acabamos de introduzir

S0 ! S

S ! ASA | aB | a| AS | SA | S

A ! B | S| "

(6)

Dr

aft

-v0.

2.1

Claro que a produção S ! S pode ser sumariamente eliminada. E podemos começar a eliminar produções unitárias. Primeiro a produção S0! S

S0 ! S| ASA | aB | a | AS | SA S ! ASA | aB | a | AS | SA A ! B | S B ! b. Depois a produção A ! S, S0 ! ASA | aB | a | AS | SA S ! ASA | aB | a | AS | SA A ! B |S| ASA | aB | a | AS | SA B ! b. Finalmente a produção A ! B, S0 ! ASA | aB | a | AS | SA S ! ASA | aB | a | AS | SA A ! B| ASA | aB | a | AS | SA| b B ! b.

E podemos, introduzindo novos símbolos não terminais, obter a gramática pretendida, S0 ! AA1| UB | a | AS | SA A1 ! SA U ! a S ! AA1| UB | a | AS | SA A ! AA1| UB | a | AS | SA | b B ! b.

11.4 Ambiguidade de gramáticas

Definição 11.8 (gramática ambígua) Seja G uma CFG, diz-se que G é, ambígua se existir uma palavra w 2 L(G) para a qual existam duas árvores de derivação diferentes (i.e. não isomorfas).

Consideremos a seguinte gramática para a linguagem das palavras com alfabeto {0, 1} em que o número de 0 é o mesmo que o número de 1:

(7)

Dr

aft

-v0.

2.1

Para a palavra 010101 2 L(G) as duas seguintes árvores de derivação são válidas: S S S 0 S " 1 S 0 S " 1 S 0 S " 1 S 0 S 1 S 0 S " 1 0 1

Portanto a gramática G é uma gramática ambígua. Isto não quer dizer que não seja possíver obter uma outra gramática G0não ambígua, para a qual L(G) = L(G0). Com efeito, consideremos a gramática G0dada

por S ! T | R | " T ! A | AB | ABT R ! B | BA | BAR A ! C | CA C ! 0A1 | 01 B ! D | DB D ! 1B0 | 10

é uma gramática não ambígua e representa a linguagem pretendida. O “truque”, neste caso, consistiu em garantir a identificação, sem margem para ambiguidades, qual o caracter que vai finalizar o mais pequeno prefixo da palavra considerada que também pertence à linguagem. A demonstração que esta gramática é não ambígua assenta exactamente na demonstração que o mais pequeno prefixo não vazio que também tenha o mesmo número de 0 e de 1, ou é 01 (ou 10) ou é da forma 00S11 (respectivamente 11S00) em que S é uma outra palavra da linguagem.

Exercício 36 Provar que a gramática anterior é não ambígua.

Mas em geral não é possível encontrar uma gramática não ambígua que represente uma dada linguagem independente de contexto.

Definição 11.9 (linguagem ambígua) Uma linguagem independente de contexto diz-se ambígua se não for possível representá-la por uma gramática independente de contexto que seja não ambígua.

A decisão se uma linguagem independente de contexto é ou não ambígua é, em geral, um problema não decidível pelo que não podemos esperar ter um método que, dada uma gramática independente de contexto, encontre uma gramática equivalente que não seja ambígua.

A exibição de uma linguagem ambígua é uma tarefa muito mais delicada que a simples exibição de uma gramática ambígua, como se pode verificar pela construção apresentada por Hopcroft e Ullman [HU79]. Uma solução muito mais simples, será apresentada depois de estudado o Lema de Ogden ??.

(8)

Dr

aft

-v0.

2.1

11.4.1 Eliminação de ambiguidades

Apesar da eliminação de ambiguidades ser uma tarefa particularmente difícil, quando não, como vimos atrás, completamente impossível, algumas técnicas permitem eliminar algumas ambiguidades comuns. Esta tarefa não se limita a satisfazer de alguma forma algum tipo de perfecionismo diletante, para muitas das aplicações de gramáticas, é imprescindível que estas não sejam ambíguas, porque isto, ou impede o funcionamento de algum tipo de analizador sintáctico (parser) ou, corresponde a algum tipo de ambiguidade na semântica que está associada à linguagem, o que pode ser inaceitável, como no caso da análise sintática de um compilador. 11.4.1.1 Estabelecimento de precedências

Consideremos, por exemplo a linguagem das expressões aritméticas com inteiros, que para simplificar vamos considerar com um só digito. Esta pode ser facilmente descrita pela seguinte CFG

S ! (S) | SOS | N O ! + | - | ⇥

N ! 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Mas esta gramática é trivialmente ambígua. Basta considerar a palavra 5 + 4 ⇥ 3, e verificar que esta tem duas diferentes árvores de derivação:

S S N 5 O + S S N 4 O ⇥ S N 3 S S S N 5 O + S N 4 O ⇥ S N 3

A primeira corresponde à avaliação “natural”, com a multiplicação efectuada antes da adição, e a segunda corresponde à execução das operações pela ordem inversa. O que podemos fazer para evitar este tipo de ambiguidades é reescrever a gramática por forma a deixar explícita qual a ordem pela qual devem ser avaliadas as diversas operações. A esta operação é usual designar por estabelecimento de precedências para as operações. O resultado pode ser o exemplificado pela seguinte gramática.

S ! SAS | F A ! + |

-F ! F ⇥ F | N | (S)

(9)

Dr

aft

-v0.

2.1

11.4.1.2 Avaliação da esquerda para a direita

Mesmo utilizando a gramática anterior, alguma ambiguidades persistem. Como é o caso de 1 + 2 + 3, para a qual as duas árvores de derivação seguintes são válidas.

S S S F N 1 A + S F N 2 A + S F N 3 S S F N 1 A + S S F N 2 A + S F N 3

Agora, apesar de se tratar da mesma operação, a ambiguidade é a da ordem pela qual devem ser avaliadas as operações. À primeira àrvore corresponde uma avaliação da esquerda para a direita e à segunda o sentido inverso. Introduzindo mais umas variáveis podemos impedir que a recursão se faça indiferentemente à esquerda ou à direita, e portanto evitar este tipo de ambiguidade. A gramática resultante poderia ser então o seguinte. S ! FAS | F A ! + | -F ! F0⇥ F | F0 F0 ! (S) | N N ! 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Esta gramática já não é ambígua. Este tipo de transformações, apesar de não ser, de forma alguma, uma solução universal para todas as gramáticas, até porque há linguagens intrinsecamente ambíguas, pode ser aplicada a um grande número de casos de linguagens de programação, sendo portanto uma técnica usual na construção de analisadores léxicos (parsers).

Exercício 37 Considera a gramática do Exercício 34

1. Mostra que a gramática gera a linguagem das palavras de alfabeto {0, 1} com o mesmo número de 0 e 1.

2. Mostra qua a gramática é ambígua.

3. Escreve uma gramática não ambígua para a mesma linguagem.

11.5 Gramáticas Regulares

Definição 11.10 (gramática linear à direita ou à esquerda) Seja G = hV, ⌃, P, Si é uma CFG. Diz-se que G é linear à direita Diz-se Diz-se todas as regras de G forem da forma A ! ⇢B ou A ! ⇢, para A e B não terminais e ⇢ uma palavra de ⌃. Diz-se que G é linear à esquerda se todas as regras de G forem da forma A ! B⇢ ou A ! ⇢. Em ambos os casos diz-se que G é uma gramática regular.

(10)

Dr

aft

-v0.

2.1

A seguinte gramática para a linguagem das palavras com alfabeto {0, 1} que têm um número ímpar de 0s é linear à direita.

A ! 1A | 0B B ! 1B | 0A | "

Se uma gramática G = hV, ⌃, P, Si é linear à direita então a gramática GRque se obtem substituindo

todas as produções da forma A ! ⇢B por A ! B⇢ é linear à esquerda e L(Gr) =L(G)R. Inversamente,

se tivermos uma gramática linear à esquerda revertendo as produções temos uma gramática linear à direita para a linguagem reversa.

Exercício 38 Mostra o resultado anterior.

As gramáticas regulares correspondem a linguagens regulares.

Teorema 11.11 Se a linguagem L tem uma gramática regular, então L é regular.

Dem. Suponhamos que L = L(G) e G = hV, ⌃, P, Si é linear à direita. Introduzindo novos não terminais, podemos modificar G de modo que todas as regras sejam da forma A ! B ou A ! ". Seja G0 =

hV0, ⌃, P0, Si a gramática resultante. A partir de G0podemos construir um DFA A = hV0, ⌃, , S, Fi tal

que (A, ) = B se A ! B 2 P0 e A 2 F se A ! " 2 P0.

Por indução no tamanho duma palavra ⇢ podemos mostrar que A )? se e só se (A, ⇢) 2 F para

qualquer não terminal A 2 V0. Então em particular ⇢ 2 L(G0)se e só se ⇢ 2 L(A).

Se L = L(G) e G = hV, ⌃, P, Si é linear à esquerda consideramos a gramática reversa GRe obtemos um

autómato para L(GR). Revertendo este autómato temos um autómato finito para L(G).

Para a gramática dada acima temos o seguinte DFA A = h{A, B}, {0, 1}, , {A}, {B}i A B 1 0 1 0 Inversamente,

Teorema 11.12 Uma linguagem L regular tem uma gramática regular.

Dem. Seja L = L(A) e A = hQ, ⌃, , q0, Fi um DFA. Construímos uma gramática G = hQ, ⌃, P, q0i para L

tal que P é constituído pelas regras qi! qjsempre que (qi, ) = qje qi! " se qi2 F.

Por indução no tamanho duma palavra ⇢ pode-se mostrar que qi)?⇢ se e só se ⇢ 2 L(qi). Resulta

que ⇢ 2 L(G) se e só se ⇢ 2 L(A). ⇤

11.6 Lema da Repetição para CFL

Para auxiliar a prova que uma linguagem não está em CFL, podemos recorrer a uma propriedade semelhante à encontrada para as linguagens regulares e que se traduziu no chamado Lema da Repetição (Teorema 5.8). Mais uma vez, o que se garante é que para palavras suficientemente grandes tem que haver um padrão para o qual todas as palavras desse padrão têm que pertencer à linguagem em causa.

(11)

Dr

aft

-v0.

2.1

Teorema 11.13 (Lema da repetição para CFL) Seja L uma linguagem independente de contexto, então tem-se

(9n)(8⇢)(9u, v, w, x, y)(8i)

((⇢2 L ^ |⇢| n ^ ⇢= uvwxy ^ |vwx| n ^ |vx| 1

=) ((i 0 =) uviwxiy

2 L)))). (11.1) Dem. Seja G uma gramática na forma normal de Chomsky (ver pag. 113), mostremos primeiro que se uma árvore de derivação não contém caminhos de comprimento maior a n, então as palavras derivadas têm que ter um comprimento inferior a 2n. A demonstração segue por indução sobre

n. No caso base, com n = 1, a proposição é trivial, pois a árvore de derivação não pode conter senão a derivação S ! com S o símbolo inicial e um símbolo terminal. Suponhamos então que n > 1. Então a primeira produção aplicada não pode ser senão do tipo S ! BC. Se as árvores de derivação com raízes em A e B não contêm caminhos de comprimento superior a n- 1, então cada uma delas não pode gerar palavras de tamanho superior a 2n-1. Logo S não

poderia gerar palavras de tamanho superior a 2n.

Seja G uma gramática na Forma Normal de Chomsky que representa a linguagem L, com m símbolos não terminais e seja n = 2m. Se ⇢ 2 L(L) e |⇢| n, então como |⇢| > 2m-1, qualquer

árvore de derivação de ⇢ contém um caminho de comprimento pelo menos m + 1. Seja P tal caminho. O caminho P tem m + 2 vértices em que todos, menos o último, são símbolos não terminais. Portanto, pelo princípio de Dirichlet (1.1), haverá pelo menos um símbolo não terminal, A, que ocorre pelo menos duas vezes em P. Sejam v1 e v2vértices em P com o mesmo

símbolo não terminal associado A, e supondo que v1 está mais próximo da raiz da árvore que

v2, sabemos que a distância de v1 ao símbolo terminal é, no máximo, m + 1. A sub-árvore T1

com origem em v1, representa a derivação de uma palavra de tamanho, no máximo, 2m. Isto

porque nenhum caminho em T1tem comprimento superior a m + 1. Seja ⇢1a palavra derivada

em T1. Se T2 for a árvore com origem em v2 e ⇢2 a palavra por si derivada, podemos escrever

⇢1= ⇢3⇢2⇢4. Note-se que ⇢3 e ⇢4 não podem ser os dois ao mesmo tempo " porque a primeira

produção em v1tem que ser da forma A ! BC, e a árvore T2 está completamente contida numa

das árvores com origem em B ou C. Portanto A)?

3A⇢4 A)?⇢2,

com |⇢3⇢2⇢4| 2m= n. Mas então

A)?i

3⇢2⇢i4,8i 2 N,

e a proposição do teorema resulta trivial. ⇤ Uma consequência deste novo “Lema da Repetição”, e desta vez uma consequência construtiva é a do colapso, para as linguagens unárias, das linguagens independentes do contexto nas linguagens regulares, expresso no resultado seguinte.

Teorema 11.14 Para o caso do alfabeto unário, a classe das linguagens independentes do contexto é coincidente com a das linguagens regulares.

Dem. Que as linguagens regulares são independentes do contexto não depende do tamanho do alfa-beto. Consideremos então uma linguagem L, CFL, com alfabeto ⌃ = {0}. Pelo Lema da Repetição (Teorema 11.13) sabemos que existe um inteiro n para o qual, todas as palavras, ⇢, de tamanho

(12)

Dr

aft

-v0.

2.1

superior a n admitem uma factorização ⇢ = uvwxy, com |vwx|  n por forma que para qualquer i se tem uviwxiy 2 L. Como se trata de palavras compostas somente do caracter 0 podemos

então permutar os factores e afirmar que 8i uwy(vx)i 2 L. Seja |uwy| = m e |vx| = `. Então

0m+i` 2 L, 8i 0. Podemos fazer m0 = m mod ` e 0m+i`| i 0 =0m0+i`

| i 0↵. Mas, então, L= {⇢ | ⇢2 L ^ |⇢|  n} [ [ `n [ mn 0m+i`| i 0 ,

ou seja, éuma reunião finita de linguagens regulares, e portanto também regular. ⇤

11.7 Ambiguidade de Linguagens

Há linguagens que são intrinsecamente ambíguas, ou seja, todas as CFG que as geram são ambíguas. O teorema seguinte garante a sua existência, dando o exemplo de uma linguagem nessas condições.

Teorema 11.15 A CFL L = aibjck| i= j _ j = k é uma linguagem (intrinsecamente) ambígua.

Dem. Que L é uma CFL é evidente pois podemo-la construir como união de duas CFL’s: {anbnc,| n, m 0}

e {anbmcm| n, m 0}. Seja G = hV⌃, P, Si uma CFG que gere a L.

Seja, então, n a constante do Lema de Ogden na sua versão ??. Consideremos a palavra z= ambmcm+m!

com m = max(n, 3) e marquemos em z todos os a’s. Então, sabemos que há uma factorização z = uvwxy e uma variável A 2 V, tal que, S )? uAy, A )? vAx e A )? w. Portanto, 8i

0, uviwxiy2 L. Tomemos i = 2, temos

↵= uv2wx2y

2 L

e vx tem, no máximo, m b’s, pois esse é o número total de b’s em z. Como m 3, então m! > m. Logo |↵|b 2m < m + m!  |↵|c. Pelo que a igualdade que é satisfeita por forma que ↵ 2 L é entre

o número de a’s e o número de b’s, ou seja, |↵|a = |↵|b. Portanto |vx|a = |vx|b, e |vx|a 1, pois vx

contém pelo menos uma posição marcada. Sabemos que tanto v como x têm todos os caracteres iguais porque senão ↵ não seria uma palavra de L. Assim v = aj e x = bj para algum 0  j  m. Seja

i= m!

j + 1. Para obter uma derivação de

= uiwxiy= am+m!bm+m!cm+m!

temos que usar, i vezes, a sub-derivação A )?vAx.

Podemos, agora, fazer exactamente o mesmo, com

z1= am+m!bmcm

marcando, desta vez, todos os c’s. mis uma vez, obtemos uma factorização z1= u1v1w1x1y1 e uma

variável A12 V com S )?u1A1y1, A1)?v1A1x1e A )?w1. Mais uma vez, v1= bke x1= ck. Se

tomarmos l =m!

k + 1, para obtermos uma derivação de

= u1vl1w1x1ly1= am+m!bm+m!cm+m!

temos que usar k vezes a sub-derivação A1)?v1A1x1.

Estas duas derivações são distintas. Para verificar isso basta observar que a primeira obtém todos os seus b’s, excepto m - j, através da sub-derivação A )? ajAbj, enquanto na segunda todos os b’s,

Referências

Documentos relacionados

No final, os EUA viram a maioria das questões que tinham de ser resolvidas no sentido da criação de um tribunal que lhe fosse aceitável serem estabelecidas em sentido oposto, pelo

Para analisar as Componentes de Gestão foram utilizadas questões referentes à forma como o visitante considera as condições da ilha no momento da realização do

Neste momento a vacina com a melhor perspetiva de disseminação pelos cuidados de saúde é a M.vaccae, pela sua ação como vacina terapêutica, aguardando-se a sua

Considerando-se que o trabalho de Coordenação Pedagógica revela complexidades pró- prias que, num contexto prático, posiciona o profissional perante a validação de registros de

Neste estudo foram estipulados os seguintes objec- tivos: (a) identifi car as dimensões do desenvolvimento vocacional (convicção vocacional, cooperação vocacio- nal,

A Ética Resolvendo Conflito Entre Direito e Moral Nesse outro estágio percebe-se que a eticidade contempla um Estado em que suas leis não são sentidas como mera coerção ao

11.101/05 modificou a disciplina da antiga função do síndico da massa falida e do comissário da concordata, para dispor a respeito da atuação do administrador

Esse tipo de teste relaciona-se com este trabalho pelo fato de que o servidor OJS será instalado e configurado pelo autor deste trabalho, ou seja, informações como sistema