Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouRyan Agre Alterado mais de 10 anos atrás
1
Análise Dada uma cadeia de terminais w, queremos saber se wL(G) ou não. Se for o caso, poderemos querer achar uma derivação de w. Um algoritmo que pode nos dizer se wL(G) é um algoritmo de pertinência o termo análise descreve o modo de achar uma sequência de produções pela qual é derivada wL(G).
2
análise óbvia se w está L(G):
construir todas as possíveis (e.g. as mais à esquerda) derivações e verificar se al-guma coincide com W. análise de pesquisa exaustiva Problemas: não é eficiente; é possível que ele nunca termine wL(G). Por cause de produções da forma AB e A
3
Ambigüidade Uma gramática livre de contexto G é ambígua se existe wL(G) com no mí-nimo duas árvores de derivação. ambiguidade a existência de ≥2 derivações à esquerda e à direita.
4
Exemplo: A gramática com produções SaSb | SS | é ambígua.
aabb tem duas árvores de derivação: S S S S a S b a b S b a S a b S
5
Soluções Re-escrever a gramática tal que exista somente uma análise possível; Associar regras de precedência (como feito em LP com os + e *) Esta solução está completamente fora da gramática. existem exemplos onde é impossível remover a ambiguidade da gramática.
6
L={anbncm|n,m>0}{anbmcm|n,m>0}
Abigüidade Inerente não-ambígua: existe uma gramática para L que é não-ambígua; inerentemente ambígua .se toda gramática para L é ambígua. e.g.: L={anbncm|n,m>0}{anbmcm|n,m>0}
7
Formas Normais A definição de uma GLC não impõe qualquer restrição no lado direito de uma produção. Em muitas situações (aplicações) é desejável colocar restrições. Estudaremos métodos de transformar uma GLC arbitrária numa equivalente que satisfaz certas restrições sobre sua forma.
8
Forma Normal de Chomsky
Uma gramática livre de contexto está na forma normal de Chomsky se todas as produções são da forma ABC ou Aa onde A, B, C V e a T.
9
Forma Normal de Greibach
Uma gramática livre de contexto está na forma normal de Greibach se todas as produções tem a forma Aa B1 B2…Bk para k0, com A, B1, BkV e aT.
10
Teorema de Normalização
Para toda GLC G, existe uma GLC G’ na forma normal de Chomsky e uma GLC G’’ na forma normal de Greibach tal que L(G’’)=L(G’)=L(G) - { }
11
Remoção de Produções Unitárias AB e -Produções
Lema: Para qualquer GLC G=(N, , P, S), exis-te uma GLC G’ sem -produção e sem produção unitária tq L(G’)=L(G) - {}.
12
Prova Seja P^ o menor conjunto de produ-ções contendo P e fechado sobre as duas regras: (a)Se AB P^ e B P^, então A P^ (b)Se AB P^ e B P^, então A P^
13
Seja G^ a gramática G^=(N, , P^, S) como P P^:
Podemos construir P^ indutivamen-te de P adicionando produções para satisfazer (a) e (b). Seja G^ a gramática G^=(N, , P^, S) como P P^: L(G) L(G^), obviamente! mas L(G)=L (G^), porque cada nova produção adicionada pode ser simula-da pela produção que a adicionou.
14
Agora mostramos que para cada cadeias não nulas x, qualquer derivação S*G^ x de tamanho mínimo não usa -produção nem produção unitária. Seja x considere a derivação de tamanho mínimo S*G^ x. Suponha para a contradição que A é usada em algum ponto da derivação S*A *x com ou não nulo.
15
Sm B A n A *x para algum m,n,k0.
esta ocorrência de A aparece na derivação quando uma produção da forma B A é aplicada: Sm B A n A *x para algum m,n,k0. Mas pela regra (a) B está tam-bém em P^, e esta produção poderia ter sido usada neste ponto dando uma derivação menor de x: SmB n kx absurdo!
16
SmA Bn B kx
Um argumento similar mostra que produções unitárias não são usadas em derivações de tamanho mínimo. Seja x e considere a derivação de tamanho mínimo S*G^ x. Suponha que AB é usada em algum mo-mento S*A B *x. a ocorrência de B desaparece apli-cando a produção B mais tarde: SmA Bn B kx
17
Mas pela regra (b), A está também em P^ e esta produção poderia ter sido usada dando uma derivação menor para x: SmA n kx Isto contradiz o tamanho mínimo da derivação. Logo as -produções e produções unitárias podem ser descartadas! qed
18
Transformando para a forma normal de Chomsky.
SPG só consideraremos gramáticas sem - produções e produções unitá-rias: Para cada a, introduza um novo não terminal Aa e a produção Aa a, e troque todas as ocorrências de a no lado direito das antigas regras (exceto das regras de forma B a) por Aa.
19
Então todas as produções são de uma das duas formas
Aa ou AB1B2…Bk, k2 onde os Bi são não terminais. O conjunto de cadeias terminais não muda, somente temos mais um passo(que antes)para gerar um sím-bolo terminal.
20
Para qualquer produção A B1B2
Para qualquer produção A B1B2. …Bk com K>2, introduza um novo não terminal C e troque esta produção por duas A B1C e C B2B3 …Bk .. Continue fazendo estas trocas até que todos os lados direitos tenham tamanho no máximo 2.
21
{anbn | n0} - {} = {anbn | n 1}.
Exemplo Derive a gramática na forma normal de Chomsky para o conjunto {anbn | n0} - {} = {anbn | n 1}. pegue gramática para {anbn | n0} : SaSb| Removendo as - produções temos: S aSb | ab que gera {anbn | n 1}.
22
Adicionamos não-terminais A, B e trocamos as produções para:
S ASB| AB A a B b Adicionamos um não-terminal C e trocamos B ASB por S AC C SB. A gramática na forma normal de Chomsky é S AB|AC A a B b C SB
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.