580 likes | 900 Views
Formas Normais de Gramáticas Livres de Contexto. Forma Normal de Chomsky. Todas as produções têm a forma:. e. variável. variável. terminal. Exemplos :. Forma Normal de Chomsky. Não Forma Normal de Chomsky. Conversão para Forma Normal de Chomsky. Exemplo :. Não Forma Normal
E N D
Forma Normal de Chomsky Todas as produções têm a forma: e variável variável terminal
Exemplos: Forma Normal de Chomsky Não Forma Normal de Chomsky
ConversãoparaForma Normal de Chomsky • Exemplo: Não Forma Normal de Chomsky
Gramática Final na Forma Normal de Chomsky: Gramática inicial
Emgeral: De qualquer gramática livre de contexto que não esteja na Forma Normal de Chomsky podemos obter: Uma gramática equivalente na Forma Normal de Chomsky
O Procedimento • Primeiro remova: • Variáveis nulas • Produções Unitárias
Para cada símbolo : Adicione a produção Nas produções: substitua por Nova variável:
Substitua toda produção por Novas variáveis intermediárias:
Teorema: Para toda gramática livre de contexto existe uma gramática equivalente na Forma Normal de Chomsky
Observações • Formasnormais de Chomsky são boas • para parsing e para a prova de teoremas • É muito fácil encontrar • a Forma Normal de Chomsky • para qualquer gramática livre de contexto
Forma Normal de Greinbach Todas as produções têm a forma: terminal variáveis
Exemplos: Forma Normal de Greinbach Não Forma Normal de Greinbach
Conversãopara a Forma Normal de Greinbach: Forma Normal de Greinbach
Teorema: Para qualquer gramática livre de contexto existe uma gramática equivalente na Forma Normal de Greinbach
Observações • Formasnormais de Greinbachsãomuito boas • para parsing • É difícil obter a Forma Normal de Greinbach • para qualquer gramática livre de contexto
O Algoritmo CYK Entrada: • Gramática na Forma Normal de Chomsky • String Saída: se ounão
Algoritmo CKY Exemplo de entrada: • Gramática : • String :
Portanto: ComplexidadedeTempo : Observação: O algoritmo CYK podeser facilmenteconvertidoem um parser
Autômato de Pilha -- PDA String de entrada Pilha Estados
Símbolo Marcador de Fundo de Pilha Pilha Pilha fundo de pilha símbolo especial
Os Estates Símbolo na entrada Símbolo desempilhado Símbolo empilhado
entrada pilha topo Substitua
entrada pilha topo Push
entrada pilha topo Pop
entrada pilha topo NãoMuda
NPDA: PDA NãoDeterminista Exemplo:
Exemplo de Execução: Instante 0 Entrada Pilha estado corrente
Instante 1 Entrada Pilha
Instante 2 Entrada Pilha
Instante 3 Input Pilha
Time 4 Entrada Pilha
Instante 5 Entrada Pilha
Instante 6 Entrada Pilha
Instante 7 Entrada Pilha
Instante 8 Entrada Pilha aceita
Um string é aceito se: • Toda a entrada é consumida • O último estado é um estado final A pilha está vazia no final
O string de entrada é aceito pelo NPDA:
Emgeral, é a linguagem aceita pelo NPDA:
Autômato de Pilha - convenções • Adotamos a convenção de que um autômato de pilha M aceita um string w se algum caminho de computação de w em M, iniciando no estado inicial, com a pilha vazia, termina em um estado final, com a pilha vazia. • Assim, todo autômato começa emplilhando o marcador de fundo de pilha e toda transição que leva a um estado final desempliha esse marcador de fundo de pilha. • Para simplificar, daqui em diante vamos supor que a pilha já começa tendo o marcador no fundo e que um string é aceito se a computação termina em um estado final, tendo a pilha apenas este marcador.