A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Análise Dada uma cadeia de terminais w, queremos saber se wL(G) ou não. Se for o caso, poderemos querer achar uma derivação de w. Um algoritmo que pode.

Apresentações semelhantes


Apresentação em tema: "Análise Dada uma cadeia de terminais w, queremos saber se wL(G) ou não. Se for o caso, poderemos querer achar uma derivação de w. Um algoritmo que pode."— Transcrição da apresentação:

1 Análise Dada uma cadeia de terminais w, queremos saber se wL(G) ou não. Se for o caso, poderemos querer achar uma derivação de w. Um algoritmo que pode nos dizer se wL(G) é um algoritmo de pertinência o termo análise descreve o modo de achar uma sequência de produções pela qual é derivada wL(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 wL(G). Por cause de produções da forma AB e A

3 Ambigüidade Uma gramática livre de contexto G é ambígua se existe wL(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 SaSb | 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 ABC ou Aa 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 Aa B1 B2…Bk para k0, com A, B1, BkV e aT.

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 AB 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 AB  P^ e B  P^, então A  P^ (b)Se AB  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 Sm B  A n A   *x para algum m,n,k0.
esta ocorrência de A aparece na derivação quando uma produção da forma B A  é aplicada: Sm B  A n A   *x para algum m,n,k0. 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: SmB   n kx absurdo!

16 SmA Bn  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 AB é usada em algum mo-mento S*A  B *x. a ocorrência de B desaparece apli-cando a produção B  mais tarde: SmA Bn  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: SmA 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
Aa ou AB1B2…Bk, k2 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 | n0} - {} = {anbn | n 1}.
Exemplo Derive a gramática na forma normal de Chomsky para o conjunto {anbn | n0} - {} = {anbn | n 1}. pegue gramática para {anbn | n0} : SaSb| 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


Carregar ppt "Análise Dada uma cadeia de terminais w, queremos saber se wL(G) ou não. Se for o caso, poderemos querer achar uma derivação de w. Um algoritmo que pode."

Apresentações semelhantes


Anúncios Google