CT–200: Fundamentos de Automata e Linguagens Formais

1 CT–200: Fundamentos de Automata e Linguagens Formais Gr...
Author: Teresa Alcaide Sanches
0 downloads 4 Views

1 CT–200: Fundamentos de Automata e Linguagens Formais Gramáticas Livres de Contexto - Algoritmo CYK Gabriel Dischinger de Lima Paulo Honda Ota Professor: Carlos Henrique Q. Forster Nov/2016 CT-200

2 PROBLEMA A SER RESOLVIDODada uma Gramática Livre de Contexto G = (V, ∑ ,P , S), e uma cadeia w, onde: V é o conjunto finito de variáveis ∑ é o conjunto finito de simbolos terminais (o alfabeto) P é o conjunto finito de regras/produções S é o símbolo inicial sendo V and ∑ disjuntos A cadeia w pertence a linguagem gerada pela gramática G? A cadeia w é aceita/reconhecida? Nov/2016 CT-200

3 O ALGORITMO CYK Desenvolvido de maneira independente, em meados dos anos 60 início dos 70, por três pesquisadores: Cocke Younger Kasami O algoritmo trabalha sobre uma GLC (Gramática Livre de Contexto) na Forma Normal de Chomsky (pré-requisito) Usa programação dinâmica (a solução é encontrada a partir de sub soluções previamente calculadas e memorizadas) para reconhecer se a cadeia é gerada pela gramática. Nov/2016 CT-200

4 Forma Normal de ChomskyUma gramática G está na Forma Normal de Chomsky se todas as suas regras/produções seguirem uma das seguintes formas: Onde A,B,C são variáveis (símbolos não terminais), a é um símbolo terminal (representa um valor constante), S é a variável inicial e e é a cadeia vazia. Além disso nem B nem C podem ser a variável inicial. Nov/2016 CT-200

5 CYK - IDEIA PRINCIPAL Em termos informais, este algoritmo considera todas as subpalavras (substrings) da cadeia w e define T [i, j, k] para ser verdadeiro se a subpalavra a partir de i de comprimento j pode ser gerada a partir da variável Vk. A matriz booleana T é uma representação da matriz triangular M, que é preenchida de baixo para cima com símbolos variáveis. Uma vez consideradas as subpalavras de comprimento 1, ele passa para subpalavras de comprimento 2, e assim por diante. Nov/2016 CT-200

6 CYK - IDEIA PRINCIPAL Para subpalavras de comprimento maior que 1, ele considera todas as possíveis partições da subpalavra em duas partes, e verifica se há alguma produção Y → BC ∈ G tal que B corresponde à primeira parte e C corresponde à segunda parte da subpalavra. Se assim for, ele registra Y como combinando toda a subpalavra. Quando esse processo for concluído, a cadeia w será considerada gerada pela gramática se o símbolo de partida S foi registrado para a palavra inteira. Nov/2016 CT-200

7 CYK - IDEIA PRINCIPAL Ou seja:O algoritmo realiza uma análise ascendente (bottom-up) das cadeias; O algoritmo parte da cadeia a ser analisada e regride nas produções formando uma tabela triangular; A cadeia é aceita se quando o triângulo estiver completo o símbolo de partida da gramática estiver no topo do mesmo. Nov/2016 CT-200

8 CYK - CONSTRUÇÃO DA MATRIZ TRIANGULARCada linha da matriz corresponde a um tamanho de subpalavra (substring) Xi,i corresponde ao conjunto de variáveis Y tais que Y → wi é uma produção da gramática G Xi,j = U { Y | Y → BC ; B Vi,k e C  Vk+1,j } k  {i,j+1,...j-1} Nov/2016 CT-200

9 CYK - CONSTRUÇÃO DA MATRIZ TRIANGULARNov/2016 CT-200

10 CYK - CONSTRUÇÃO DA MATRIZ TRIANGULAR“Esquema da Roldana” Nov/2016 CT-200

11 1) Xi,i corresponde ao conjuntoCYK – EXEMPLO 1 Dada a gramática: S → AA | AS | b A → SA | AS | a A cadeia abaab é reconhecida? 1) Xi,i corresponde ao conjunto de variáveis Y tais que Y → wi é uma produção da gramática G Nov/2016 CT-200

12 2) Aplicar o “esquema da roldana”CYK – EXEMPLO 1 Dada a gramática: S → AA | AS | b A → SA | AS | a A cadeia abaab é reconhecida? 2) Aplicar o “esquema da roldana” Xi,j = U { Y | Y → BC ; B Vi,k e C  Vk+1,j } k  {i,j+1,...j-1} Nov/2016 CT-200

13 2) Aplicar o “esquema da roldana”CYK – EXEMPLO 1 Dada a gramática: S → AA | AS | b A → SA | AS | a A cadeia abaab é reconhecida? 2) Aplicar o “esquema da roldana” Xi,j = U { Y | Y → BC ; B Vi,k e C  Vk+1,j } k  {i,j+1,...j-1} Nov/2016 CT-200

14 2) Aplicar o “esquema da roldana”CYK – EXEMPLO 1 Dada a gramática: S → AA | AS | b A → SA | AS | a A cadeia abaab é reconhecida? 2) Aplicar o “esquema da roldana” Xi,j = U { Y | Y → BC ; B Vi,k e C  Vk+1,j } k  {i,j+1,...j-1} Nov/2016 CT-200

15 2) Aplicar o “esquema da roldana”CYK – EXEMPLO 1 Dada a gramática: S → AA | AS | b A → SA | AS | a A cadeia abaab é reconhecida? 2) Aplicar o “esquema da roldana” Xi,j = U { Y | Y → BC ; B Vi,k e C  Vk+1,j } k  {i,j+1,...j-1} Nov/2016 CT-200

16 CYK – EXEMPLO 2 Entendendo melhor b a a b a Dada a gramática:S → AB | BC A → BA | a B → CC | b C → AB | a A cadeia baaba é reconhecida? Fazer no quadro Nov/2016 CT-200

17 CYK – EXEMPLO 2 Entendendo melhor b a a b a B A,C Dada a gramática:S → AB | BC A → BA | a B → CC | b C → AB | a 1) Avaliando as produções da gramática que geram as subpalavras / subcadeias de tamanho 1 Nov/2016 CT-200

18 CYK – EXEMPLO 2 Entendendo melhor b a a b a B A,C S,A S,CDada a gramática: S → AB | BC A → BA | a B → CC | b C → AB | a 2) Avaliando as produções que geram as subpalavras / subcadeias de tamanho 2: ba, aa, ab, ba Nov/2016 CT-200

19 CYK – EXEMPLO 2 Entendendo melhor b a a b a B A,C S,A S,C -Dada a gramática: S → AB | BC A → BA | a B → CC | b C → AB | a 3) Avaliando as produções que geram as subpalavras / subcadeias de tamanho 3: baa = b,aa / ba,a aab = a,ab / aa,b aba = a,ba / ab,a Nov/2016 CT-200

20 CYK – EXEMPLO 2 Entendendo melhor b a a b a B A,C S,A S,C - S,A,CDada a gramática: S → AB | BC A → BA | a B → CC | b C → AB | a 4) Avaliando as produções que geram as subpalavras / subcadeias de tamanho 4: baab = b,aab / ba,aab / baa,b aaba = a,aba / aa,ba / aab,a Nov/2016 CT-200

21 CYK – EXEMPLO 2 Entendendo melhor b a a b a B A,C S,A S,C - S,A,CSímbolo S presente. Cadeia é reconhecida! S,A,C Dada a gramática: S → AB | BC A → BA | a B → CC | b C → AB | a 5) Avaliando as produções que geram a cadeia de tamanho 5 baaba = b,aaba ba,aba baa,ba baab,a Nov/2016 CT-200

22 CYK – Implementação Código fonte Nov/2016 CT-200

23 CYK – Implementação Código fonte Nov/2016 CT-200

24 CYK – Implementação Código fonte Nov/2016 CT-200

25 CYK – Implementação Nov/2016 CT-200

26 CYK – Implementação Nov/2016 CT-200

27 Nov/2016 CT-200

28 Nov/2016 CT-200

29 Nov/2016 CT-200

30 Nov/2016 CT-200

31 Nov/2016 CT-200

32 Nov/2016 CT-200

33 Nov/2016 CT-200

34 REFERÊNCIAS J. E. Hopcroft, R. Motwani, J. D. Ullman, Introduction to Automata Theory, Languages and Computation, Second Edition, Addison Wesley, 2001 T.A. Sudkamp, An Introduction to the Theory of Computer Science Languages and Machines, Third Edition, Addison Wesley, 2006 P. B.Menezes, Linguagens Formais e Autômatos, Terceira Edição, Sagra Luzzatto, 2000 Nov/2016 CT-200