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

Documentos relacionados
Draft-v0.2. Gramáticas Independentes do Contexto O funcionamento de uma CFG Derivação de uma palavra

Árvores (ordenadas) Departamento de Ciência de Computadores da FCUP MC Aula 11 1

Vamos estudar neste capítulo algumas características da classe das linguagens regulares sobre um alfabeto. Entre elas salientámos:

Faculdade de Computação

Aula 8: Gramáticas Livres de Contexto

Segunda Lista de Exercícios 2004/2...

Gramáticas e Linguagens Independentes de Contexto

Propriedades das Linguagens Livres do Contexto

Compiladores - Gramáticas

Compiladores - Gramáticas

Capítulo Métodos para transformar gramáticas ái Duas formas Normais (Chomsky e Greibach) ADC/TC/Cap.6/ /LEI/DEIFCTUC 268

Propriedades de Linguagens Livres de Contexto. Propriedades de Linguagens Livres de Contexto. Propriedades de Linguagens Livres de Contexto

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

Gramáticas ( [HMU00], Cap. 5.1)

Formas normais. Forma normal de Greibach (FNG) todas as produções são da forma

Gramáticas e Linguagens independentes de contexto

Marcos Castilho. DInf/UFPR. 21 de março de 2019

As linguagens regulares são I.C Proposição Qualquer linguagem regular é independente de contexto.

Geradores e relações

LINGUAGENS FORMAIS E AUTÔMATOS. Prova 2-10/06/ Prof. Marcus Ramos

Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais

Gramática Livre de Contexto

Dada uma gramática G = (V, T, P, S), tal que ε ² L(G), construir G, sem produções-ε, de modo a que L(G) = L(G ).

Exemplo preliminar. Considere a linguagem dos Palíndromos Lpal:

Linguagens Formais e Autômatos. Simplificação de Gramáticas Livre do Contexto (GLC)

SCC Capítulo 2 Linguagens Livres de Contexto e Autômatos de Pilha (versão 2)

Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ.

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

Transformações úteis para GLC: (1) eliminação de produções nulas; (2) eliminação de produções unitárias; (3) Eliminação de símbolos estéreis e

Gramática Livre de Contexto

Linguagens Livres de Contexto

Construção de Compiladores Aula 16 - Análise Sintática

Automata e Linguagens Formais

COMPILADORES. Revisão Linguagens formais Parte 02. Prof. Geovane Griesang

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)

Espaços Euclidianos. Espaços R n. O conjunto R n é definido como o conjunto de todas as n-uplas ordenadas de números reais:

Linguagens Formais e Problemas de Decisão

Problema A Codificação Símbolos Dado um inteiro n, n é N representação de inteiros 0,1,...,b - 1 numa base b Dado um grafo G, G é conexo?

LLC's: Lema do Bombeamento e Propriedades de Fechamento

Linguagens Formais - Preliminares

Autómatos de pilha e Gramáticas independentes de contexto

Linguagens Formais. Aula 01 - Conceitos Básicos. Prof. Othon Batista Mestre em Informática

Compiladores - Análise Ascendente

Compiladores - Análise Ascendente

Autómatos de pilha e GIC

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados.

14.1 Linguagens decidíveis ou Turing reconhecíveis

Linguagens Formais e Autômatos P. Blauth Menezes

Gramáticas Livres de Contexto

Teoria da Computação Aula 02 Introdução

Problemas decidíveis para LICs

Teoria das Linguagens. Linguagens Formais e Autómatos (Linguagens)

Uma gramática é ambígua se existe alguma cadeia para qual ela tem mais de uma árvore sintática

Draft-v0.1. Máquinas de Turing Máquinas de Turing

SCC Capítulo 3 Linguagens Sensíveis ao Contexto e Autômatos Limitados Linearmente

Teoria de Linguagens 1 o semestre de 2018 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 17/4/2018 Valor: 10 pontos

Análise Sintática Introdução

Modelos de Computação Folha de trabalho n. 8

SCC Capítulo 1 Linguagens Regulares e Autômatos Finitos

Linguagens Formais e Autômatos

IBM1088 Linguagens Formais e Teoria da

Expressões regulares

Conceitos Básicos. Vocabulário Cadeias Linguagens Expressões Regulares Problema X Linguagem

MAC-4722 Linguagens, Autômatos e Computabilidade Lista L3

LINGUAGENS FORMAIS Definições. Desenvolveram-se na História em função da necessidade dos grupos humanos que as empregavam

Construção de Compiladores Aula 17 - Análise Sintática Descendente

Unidade 5 - Subespaços vetoriais. A. Hefez e C. S. Fernandez Resumo elaborado por Paulo Sousa. 10 de agosto de 2013

COMPILADORES. Análise sintática. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática

Gramática. Prof. Yandre Maldonado e Gomes da Costa. Prof. Yandre Maldonado - 1

UNIVERSIDADE DA BEIRA INTERIOR

Gramática. Gramática. Gramática

Problemas decidíveis para LICs

TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO

Linguagens Regulares. Prof. Daniel Oliveira

LINGUAGENS FORMAIS E AUTÔMATOS

1 Congruências e aritmética modular

Tópicos de Matemática. Teoria elementar de conjuntos

Espaços vectoriais reais

Reduce: reduz o que está imediatamente à esquerda do foco usando uma produção

7.1. Autómatos de pilha não-determinísticos (NPDA) 7.3. Autómatos de pilha determinísticos e linguagens livres de contexto determinísticas.

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

AFNs, Operações Regulares e Expressões Regulares

Linguagens e Programação Gramáticas. Paulo Proença

Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios

Conceitos básicos de Teoria da Computação

Lema do Bombeamento Linguagens Livres de Contexto

Linguagens Livres de Contexto

CAPÍTULO 8 PROPRIEDADES DAS LINGUAGENS LIVRES DE CONTEXTO

Lista de Exercícios CT-200 Primeiro Bimestre Carlos Henrique Quartucci Forster Estagiário: Wesley Telles. Revisão de Teoria de Conjuntos

Cálculo Diferencial e Integral I

Conceitos Básicos. Vocabulário Cadeias Linguagens Problema

Compiladores Aula 4. Celso Olivete Júnior.

Aula 1: Introdução ao curso

Lógica Proposicional

Linguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior.

Teoria de Linguagens 2 o semestre de 2017 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 19/9/2017 Valor: 10 pontos

Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 2. Conceitos Básicos da Teoria da Computação

formais e autómatos Linguagens g recursivas e recursivamente enumeráveis Gramáticas não-restringidas

5 Congruências lineares. Programa. 1 Parte 1 - Conjuntos e Aplicações. 1 Conjuntos. 4 Indução matemática e divisibilidade

Transcrição:

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. este 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. (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, i, emque 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; com ( 2 V) designa o chamado símbolo inicial da gramática.. O funcionamento de uma CFG.. Derivação de uma palavra eja G = hv,, P, i 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, emn passos, de, e escrevemos ) n G, se ) G, ) G 2,..., n- ), 09

para algumas palavras,..., n- 2 ( [ V)?. ejam, 2 ( [ V)?, dizemos se deriva de por G, e escrevemos se existir n>0tal que )? G ) n G. Definição.2 (linguagem definida por uma CFG) eja G = hv,, P, i uma CFG. A linguagem definida por G é L(G) ={w 2? )? G w}. Exemplo.3 Tomemos a linguagem L = {0 n n n 2 } que sabemos não ser uma linguagem regular. Esta é, no entanto, a linguagem gerada pela gramática G = h{}, {0, }, {! ",! 0},i. ormalmente, representamos, de forma muito mais legível, uma gramática, simplesmente pelo conjunto 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 n o conjunto das produções {A! 0,A!,...,A! n } para um mesmo símbolo não terminal A. este caso, a gramática G seria apresentada como! " 0. A primeira produção,! ", estabelece que a palavra vazia, ", pertence à linguagem L. A segunda produção,! 0, estabelece que se tomarmos uma palavra da linguagem L e concatenarmos um 0 à esquerda e um a direita obtemos uma palavra de L. Para mostrar que L = L(G), comecemos por provar que L L(G). eja w 2L(G), isso significa que )? G w, ou seja ((9n) ) n G w). Provemos então por indução sobre n que w 2 L. e n = 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! ", o que implica que w = ", e " 2 L. uponhamos então que, para qualquer palavra w, se ) n G w então w 2 L, e mostremos que então podemos concluir que se ) n+ G w 0 isso implica que w 0 2 L. Como n + 6=, podemos concluir qua a primeira produção aplicada não pode ser aquela que produz " pelo que temos: ) G 0 ) n G 0w 00 = w 0. Ou seja, temos ) n G w 00, para algum w 00. Mas, pela hipótese de indução, isso implica que w 00 2 L. Como w 0 = 0w 00, e w 00 2 L temos que w 0 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. e esse comprimento for 0, então a palavra em questão é a palavra vazia, ", que como vimos é gerada por G. uponhamos que todas as palavras de L de tamanho 2n são geradas por G esejaw uma palavra de L com w = 2(n + ). Mas então w = 0 n+ n+, portanto w = 0w 0 com 0

w 0 = 0 n n. Como w 0 = 2n estamos nas condições da hipótese de indução, pelo que podemos garantir que w 0 2L(G), ou seja )? G w 0. Mas então ) G 0 )? G 0w 0 = w, logo w 2L(G), o que termina a demonstração...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 E i de uma produção da gramática! E 0 E E n. 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:! () + A A! 0. Uma árvore de derivação da palavra ( + 0) é: Exercício 34 ( +. Escreve gramáticas para as seguintes linguagens independentes de contexto: a) Linguagem formada pelos palíndromos de alfabeto {0, }. b) A linguagem complementar da linguagem da alínea anterior. c) a i b j c k : i 6= j _ j 6= k 2. Dada a gramática 0 )! ab ba A! a a baa B! b b 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. * Exercício 35 Escreve uma CFG para a linguagem complementar de ww : w 2 {0, }?.

.2 implificação de gramáticas Lema.4 Dada uma CFG G = hv,, P, i, representando uma linguagem não vazia, podemos encontrar uma gramática G 0 = hv 0,,P 0,i em que, ((8A 2 V 0 )(9w 2? ) A )? G w). 0 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 V 0. e a produção A! X X 2 X n existe em P, com os X i símbolos terminais ou outros símbolos não terminais que já se encontrem incluídos em V 0, isso faz com que possamos incluir A em V 0 também. O conjunto V 0 pode ser obtido como o fecho do processo atrás descrito. Depois de obtido V 0 podemos remover de P todas as produções em que tomem lugar símbolos não terminais não constantes de V 0, obtendo assim P 0. Lema.5 Dada um CFG G = hv,, P, i podemos encontrar uma gramática equivalente G 0 = hv 0,,P 0,i tal que para cada X 2 V 0 [ existem, 2 (V 0 [ )? tal que )? X. Dem. O conjunto V 0 [, pode ser construído por um processo iterativo. Colocamos, primeiramente, em V 0. e A é colocado em V 0 e A! 2 n, então adicionamos todas as variáveis de, 2,..., n a V 0, assim como adicionamos os terminais de, 2,..., n a 0. P 0 éo conjunto das produções que contêm símbolos somente de V 0 [ 0..3 Forma ormal 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 ormal 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. e for o símbolo inicial, poderá haver uma produção da forma! ". Teorema.6 (Forma ormal de Chomsky) Qualquer linguagem independente do contexto admite uma gramática que a gera e que se encontra na Forma ormal de Chomsky (CF), 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! " se for o símbolo inicial. Dem. eja G = hv,, P.i uma CFG. Começamos por introduzir um novo símbolo não terminal 0, fazemolo o novo símbolo inicial e acrescentamos uma produção 0!, sendo 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. eguidamente 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 2

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). e 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. o 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-seaproduçã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! u u 2 u k, com k 3 sendo os u i símbolos não terminais ou símbolos terminais, substitui-se pelas produções A! u A,A! u 2 A 2,...,A k-2! u k- u k, com A i novos símbolos não terminais. Para cada u i 2, substituímos u i por um novo símbolo não terminal U i e acrescentamos a produção U i! u i. Mais uma vez, cada uma desta transformações preserva a linguagem aceite pela gramática, pelo que no fim do processo temos uma gramática equivalente à original, na Forma ormal de Chomsky. Exemplo.7 Consideremos a gramática seguinte, e utilizemos o processo descrito na demonstração anterior para obter uma gramática equivalente, na Forma ormal de Chomsky Introduzimos um novo símbolo inicial, Eliminamos o "! AA ab A! B B! b ". 0!! AA ab A! B B! b ". 0!! AA ab a A! B " B! b ". Agora temos que eliminar o " que acabamos de introduzir 0!! AA ab a A A A! B " B! b. 3

Claro que a produção! pode ser sumariamente eliminada. produções unitárias. Primeiro a produção 0! E podemos começar a eliminar Depois a produção A!, Finalmente a produção A! B, 0! AA ab a A A! AA ab a A A A! B B! b. 0! AA ab a A A! AA ab a A A A! B AA ab a A A B! b. 0! AA ab a A A! AA ab a A A A! B AA ab a A A b B! b. E podemos, introduzindo novos símbolos não terminais, obter a gramática pretendida, 0! AA UB a A A A! A U! a! AA UB a A A A! AA UB a A A b B! b..4 Ambiguidade de gramáticas Definição.8 (gramática ambígua) eja G uma CFG, diz-se que G é, ambígua se existir uma palavra w 2L(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, } em que o número de 0 éomesmoqueonúmerode:! " 0 0 4

Para a palavra 000 2L(G) as duas seguintes árvores de derivação são válidas: 0 " 0 " 0 " 0 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 G 0 não ambígua, para a qual L(G) =L(G 0 ). Com efeito, consideremos a gramática G 0 dada por! T R " T! A AB ABT R! B BA BAR A! C CA C! 0A 0 B! D DB D! B0 0 é 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 ede, ou é 0 (ou 0) ou é da forma 00 (respectivamente 00) emque é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.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??. 0 " 0 5

.4. 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..4.. 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! () O O! + -! 0 2 3 4 5 6 7 8 9 Mas esta gramática é trivialmente ambígua. Basta considerar a palavra 5 + 4 3, everificarqueestatem duas diferentes árvores de derivação: 5 O + 4 O 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. 5 O +! A F A! + - F! F F ()! 0 2 3 4 5 6 7 8 9 4 O 3 6

.4..2 Avaliação da esquerda para a direita Mesmo utilizando a gramática anterior, alguma ambiguidades persistem. Como é o caso de + 2 + 3, para a qual as duas árvores de derivação seguintes são válidas. F A + F 2 A + F 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.! FA F A! + - F! F 0 F F 0 F 0! ()! 0 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. Mostra que a gramática gera a linguagem das palavras de alfabeto {0, } com o mesmo número de 0 e. 2. Mostra qua a gramática é ambígua. 3. Escreve uma gramática não ambígua para a mesma linguagem. F A +.5 Gramáticas Regulares Definição.0 (gramática linear à direita ou à esquerda) eja G = hv,, P, i éumacfg.dizse que G é linear à direita se 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-sequeG é 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. F 2 A + F 3 7

A seguinte gramática para a linguagem das palavras com alfabeto {0, } que têm um número ímpar de 0s élinearàdireita. A! A 0B B! B 0A " e uma gramática G = hv,, P, i é linear à direita então a gramática G R que se obtem substituindo todas as produções da forma A! B por A! B élinearàesquerdael(g r )=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. e a linguagem L tem uma gramática regular, então L é regular. Dem. uponhamos que L = L(G) e G = hv,, P, i é linear à direita. Introduzindo novos não terminais, podemos modificar G de modo que todas as regras sejam da forma A! B ou A! ". eja G 0 = hv 0,,P 0,i a gramática resultante. A partir de G 0 podemos construir um DFA A = hv 0,,,, Fi tal que (A, )=B se A! B 2 P 0 e A 2 F se A! " 2 P 0. Por indução no tamanho duma palavra podemos mostrar que A )? se e só se qualquer não terminal A 2 V 0. Então em particular 2L(G 0 ) se e só se 2L(A). (A, ) 2 F para e L = L(G) e G = hv,, P, i é linear à esquerda consideramos a gramática reversa G R e obtemos um autómato para L(G R ). 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, },, {A}, {B}i Inversamente, Teorema.2 Uma linguagem L regular tem uma gramática regular. A Dem. eja L = L(A) e A = hq,,, q 0,Fi um DFA. Construímos uma gramática G = hq,, P, q 0 i para L tal que P é constituído pelas regras q i! q j sempre que (q i, )=q j e q i! " se q i 2 F. 0 0 Por indução no tamanho duma palavra pode-se mostrar que q i )? se e só se 2L(q i ).Resulta que 2L(G) se e só se 2L(A). B.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. 8

Teorema.3 (Lema da repetição para CFL) eja L uma linguagem independente de contexto, então tem-se (9n)(8 )(9u, v, w, x, y)(8i) (( 2 L ^ n ^ = uvwxy ^ vwx apple n ^ vx =) ((i 0 =) uv i wx i y 2 L)))). (.) Dem. eja G uma gramática na forma normal de Chomsky (ver pag. 3), 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 2 n. A demonstração segue por indução sobre n. o caso base, com n =, a proposição é trivial, pois a árvore de derivação não pode conter senão a derivação! com o símbolo inicial e um símbolo terminal. uponhamos então que n>. Então a primeira produção aplicada não pode ser senão do tipo! BC. e as árvores de derivação com raízes em A e B não contêm caminhos de comprimento superior a n -, então cada uma delas não pode gerar palavras de tamanho superior a 2 n-. Logo não poderia gerar palavras de tamanho superior a 2 n. eja G uma gramática na Forma ormal de Chomsky que representa a linguagem L, com m símbolos não terminais e seja n = 2 m. e 2L(L) e n, então como >2 m-, qualquer árvore de derivação de contém um caminho de comprimento pelo menos m +. eja 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 (.), haverá pelo menos um símbolo não terminal, A, que ocorre pelo menos duas vezes em P. ejam v e v 2 vértices em P com o mesmo símbolo não terminal associado A, e supondo que v está mais próximo da raiz da árvore que v 2, sabemos que a distância de v ao símbolo terminal é, no máximo, m +. A sub-árvore T com origem em v, representa a derivação de uma palavra de tamanho, no máximo, 2 m. Isto porque nenhum caminho em T tem comprimento superior a m +. eja a palavra derivada em T. e T 2 for a árvore com origem em v 2 e 2 a palavra por si derivada, podemos escrever = 3 2 4. ote-se que 3 e 4 não podem ser os dois ao mesmo tempo " porque a primeira produção em v tem que ser da forma A! BC, e a árvore T 2 está completamente contida numa das árvores com origem em B ou C. Portanto com 3 2 4 apple 2 m = n. Mas então e a proposição do teorema resulta trivial. A )? 3 A 4 A )? 2, A )? i 3 2 i 4, 8i 2, 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.4 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 alfabeto. Consideremos então uma linguagem L, CFL, com alfabeto = {0}. Pelo Lema da Repetição (Teorema.3) sabemos que existe um inteiro n para o qual, todas as palavras,, de tamanho 9

superior a n admitem uma factorização = uvwxy, com vwx apple n por forma que para qualquer i se tem uv i wx i y 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. eja uwy = m e vx = `. Então 0 m+i` 2 L, 8i 0. Podemos fazer m 0 = m mod ` e 0 m+i` i 0 = 0 m 0 +i` i 0. Mas, então, L = { 2 L ^ apple n} [ [ [ 0 m+i` i 0, `applen mapplen ou seja, éuma reunião finita de linguagens regulares, e portanto também regular..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.5 ACFLL = a i b j c k 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: {a n b n c, n, m 0} e {a n b m c m n, m 0}. ejag = hv, P, i uma CFG que gere a L. eja, então, n a constante do Lema de Ogden na sua versão??. Consideremos a palavra z = a m b m c m+m! com m = max(n, 3) e marquemos em z todos os a s. Então, sabemos que há uma factorização z = uvwxy eumavariávela 2 V, talque, )? uay, A )? vax e A )? w. Portanto, 8i 0, uv i wx i y 2 L. Tomemos i = 2, temos = uv 2 wx 2 y 2 L e vx tem, no máximo, mb s, pois esse é o número total de b s em z. Como m 3, entãom! >m. Logo b apple 2m < m + m! apple c. Pelo que a igualdade que é satisfeita por forma que 2 L éentre onúmerodea s e o número de b s, ou seja, a = b. Portanto vx a = vx b,e vx a, pois vx contém pelo menos uma posição marcada. abemos que tanto v como x têm todos os caracteres iguais porque senão não seria uma palavra de L. Assim v = a j e x = b j para algum 0 apple j apple m. eja i = m! +. Para obter uma derivação de j = u i wx i y = a m+m! b m+m! c m+m! temos que usar, i vezes, a sub-derivação A )? vax. Podemos, agora, fazer exactamente o mesmo, com z = a m+m! b m c m marcando, desta vez, todos os c s. mis uma vez, obtemos uma factorização z = u v w x y euma variável A 2 V com )? u A y, A )? v A x e A )? w.maisumavez,v = b k e x = c k.e tomarmos l = m! +, para obtermos uma derivação de k = u v l w x l y = a m+m! b m+m! c m+m! temos que usar k vezes a sub-derivação A )? v A x. 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ésdasub-derivaçãoa )? a j Ab j, enquanto na segunda todos os b s, excepto m - k, são obtidos pela sub-derivação A )? b l A c l. 20