Equivalênciaentre PDA e CFG

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

Automatocom Pilha Pushdown Automaton

Aula 7: Autômatos com Pilha

Expressões Regulares e Gramáticas Regulares

Linguagens Formais e Autômatos P. Blauth Menezes

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

Linguagens Livres de Contexto

Universidade Federal de Alfenas

Compiladores - Análise Ascendente

Autómatos de Pilha. Cada transição é caracterizada pelo estado, símbolo que está ser lido e o elemento no topo da pilha. dados de entrada.

Aula 9: Máquinas de Turing

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

Alfabeto, Cadeias, Operações e Linguagens

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

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.

Linguagens Formais e Autômatos P. Blauth Menezes

Propriedades de Fecho de Linguagens Regulares.

Linguagens Livres de Contexto

BCC242. Auômato Finito Determinístico

TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Lista de exercícios 1

Fundamentos da Teoria da Computação

Linguagens Regulares. Prof. Daniel Oliveira

INE5317 Linguagens Formais e Compiladores AULA 9: Propriedades e Reconhecimento das Linguagens Livres do Contexto

O que é Linguagem Regular. Um teorema sobre linguagens regulares. Uma aplicação do Lema do Bombeamento. Exemplo de uso do lema do bombeamento

Autômatos com Pilha: Reconhecedores de LLCs

Apostila 03 - Linguagens Livres de Contexto Exercícios

Capítulo 1: Alfabetos, cadeias, linguagens

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

a n Sistemas de Estados Finitos AF Determinísticos

LINGUAGENS FORMAIS E AUTÔMATOS

1 Expressões Regulares e Linguagens

Gramática. Gramática. Gramática

Capítulo 3: Gramáticas

Máquina de Turing. Controle finito

Apostila 01 Fundamentação da Teoria da Computação e Linguagens Formais

INE5317 Linguagens Formais e Compiladores AULA 5: Autômatos Finitos

Compiladores - Gramáticas

Matemática Discreta para Ciência da Computação

Definições Exemplos de gramáticas

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

Linguagens livres de contexto e autômatos de pilha

Compiladores. Top-Down x Bottom Up. Plano da aula. Redução exemplo 1. Redução exemplo 1. Lembrando: construir a tabela de análise LL(1) A Abc b B d

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

Hierarquia de Chomsky Exemplos de gramáticas

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

Linguagens Formais e Autômatos 02/2016. LFA Aula 01 24/10/2016. Celso Olivete Júnior.

Linguagens Regulares, Operações Regulares

Análise Sintática (Cap. 04) Análise Sintática Descendente

Analisadores Sintáticos LR

Linguagens e Autômatos

Teoria de Linguagens 2 o semestre de 2015 Professor: Newton José Vieira Primeira Lista de Exercícios Entrega: até 16:40h de 15/9.

EXPRESSÕES RELACIONAIS

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

Análise Sintática. Fabiano Baldo

Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

Compiladores - Autômatos

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

Eles, possivelmente, servirão posteriormente de ideia para problemas mais difíceis.

Análise Sintática (Cap. 04) Análise Sintática Ascendente Analisador Sintático LR

Aula 5: Conversões Entre Bases Numéricas

Análise sintática. Análise sintática. Top-down ou descendente. Com retrocesso: por tentativa e erro. Preditiva: para gramáticas LL(1) 09/04/2012

1 Conjuntos, Números e Demonstrações

Compiladores Analisador Sintático. Prof. Antonio Felicio Netto Ciência da Computação

Apostila 02. Objetivos: Estudar os autômatos finitos Estudar as expressões regulares Estudar as gramáticas regulares Estudar as linguagens regulares

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)

Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre.googlepages.

Plano da aula. Compiladores. Os erros típicos são sintáticos. Análise Sintática. Usando Gramáticas. Os erros típicos são sintáticos

Lista de Exercícios Definição de gramáticas e Autômatos Finitos Determinísticos

Pilhas. ser acessada somente por uma de suas extremidades. pelo topo. S Uma pilha é uma estrutura linear de dados que pode

Linguagens Formais e Autômatos P. Blauth Menezes

Lógica Proposicional

Lógica. Fernando Fontes. Universidade do Minho. Fernando Fontes (Universidade do Minho) Lógica 1 / 65

Programação Funcional Aulas 5 & 6

Faculdade de Computação

Fluxograma Pseudocódigo Estruturas de decisão. Professor Leandro Augusto Frata Fernandes

Polinômios. 2) (ITA-1962) Se x³+px+q é divisível por x²+ax+b e x²+rx+s, demonstrar que:

Construção de Compiladores

Definições Hierarquia de Chomsky Exemplos de gramáticas

TRANSFORMAÇÃO DE GRAMÁTICAS LIVRES DO CONTEXTO PARA EXPRESSÕES REGULARES ESTENDIDAS

Teoria da Computação. 2006/2007 Trabalho prático nº 1. Trabalho realizado por: Pedro Oliveira ( ) Rui Costa ( ) Turma: TP1

Demonstrações. Terminologia Métodos

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO II Campus Rio Pomba

Cálculo Diferencial e Integral 2 Formas Quadráticas

Teoria da Computação. Unidade 1 Conceitos Básicos. Referência Teoria da Computação (Divério, 2000)

04 Recursão SCC201/501 - Introdução à Ciência de Computação II

ESTRUTURA DE DADOS PILHAS SEQUENCIAIS

ESTRUTURA DE DADOS VETORES E LISTAS LINEARES

Transcrição:

Equivalênciaentre PDA e CFG

CFG PDA Gramáticas Lineares à direita podem ser convertidasparanfa s. Emgeral, CFG s podemserconvertidasparapda s. Em NFA REX foiútilconsiderargnfa s comoestágiointermediário. De modosimilar, seráútilconsideraraquipda s Generalizados.

PDA s Generalizados Um PDA Generalizado (GPDA) é como um PDA, exceto que permite substituir o topo da pilha por um string, e não apenas um caractere ou o string vazio. É fácil converter um GPDA para um PDA: basta substituir cada push de um string por uma sequência de push s simples.

CFG PDA Converta a gramática S ε a b asa bsb emum PDA. A idéiaé simularas derivações gramaticaiscom o PDA.

CFG PDA Comece com três estados para o GPDA: S ε a b asa bsb

CFG PDA A primeira transição empilha S$ de modo que se possa testar pilha vazia ($), e também iniciar a simulação (S). S ε a b asa bsb

CFG PDA Possibilite reading/popping de terminais de modo que se possa ler qualquer string de terminais gerado. S ε a b asa bsb

CFG PDA Simule todas as productions adicionando transições sem leitura. S ε a b asa bsb

CFG PDA Pop $ para aceitar quando a pilha está vazia (não deve haver mais nenhuma variável e todos os terminais devem ser lidos). S ε a b asa bsb

CFG PDA Converta o GPDA em um PDA usual, dividindo push s compostos. S ε a b asa bsb

CFG PDA S ε a b asa bsb bbaabb

CFG PDA S ε a b asa bsb bbaabb $

CFG PDA S ε a b asa bsb bbaabb S $

CFG PDA S ε a b asa bsb bbaabb b $

CFG PDA S ε a b asa bsb bbaabb S b $

CFG PDA S ε a b asa bsb bbaabb b S b $

CFG PDA S ε a b asa bsb bbaabb S b $

CFG PDA S ε a b asa bsb bbaabb b b $

CFG PDA S ε a b asa bsb bbaabb S b b $

CFG PDA S ε a b asa bsb bbaabb b S b b $

CFG PDA S ε a b asa bsb bbaabb S b b $

CFG PDA S ε a b asa bsb bbaabb a b b $

CFG PDA S ε a b asa bsb bbaabb S a b b $

CFG PDA S ε a b asa bsb bbaabb a S a b b $

CFG PDA S ε a b asa bsb bbaabb S a b b $

CFG PDA S ε a b asa bsb bbaabb a b b $

CFG PDA S ε a b asa bsb bbaabb b b $

CFG PDA S ε a b asa bsb bbaabb b $

CFG PDA S ε a b asa bsb bbaabb $

CFG PDA S ε a b asa bsb bbaabb aceita!

CFG PDA Intuitivamente, toda derivação mais à esquerda pode ser simuladaemum PDA comoa seguir: 1. EmpilheS 2. Mudea variávelno topoda pilhade acordocom a próxima regraa serusada 3. Leia a entradaparaobtero terminal queestiverno topoda pilha 4. Se a pilhaestivervaziaaolertodaa entrada, aceite. Senão, volte aono. 2 Por outro lado, toda computação c/ aceitação necessariamentepassapelospassosacimae, portanto simula derivação mais à esq. em G. Isso mostra que o PDA construído aceita a linguagem gerada pela gramática original.

Exercício Forneça PDA s para as CFG s das linguagens a seguir: {a i b j c k i=j ou j=k} Forneça PDA s para as CFG s: a) E E + T T T T * F F F ( E ) a b) R X R X S S a T b b T a T X T X X ε X a b

Gramática Sensível ao Contexto Existeumaforma aindamaisgeralde gramática. Emuma gramática não livre de contexto, em geral todo substring de variáveis/terminais pode ser substituído de umavez. Porexemplo, sendo Σ= {a,b,c} considere: S ε ASBC A a CB BC ab ab bb bb bc bc cc cc Porrazõestécnicas, se todaregraé talqueo tamanhodo ladoesquerdoda regraé menorouigualaodo lado direito, a gramática é chamada sensível ao contexto.

Exercício Qual é a linguagem gerada por: S ε ASBC A a CB BC ab ab bb bb bc bc cc cc

Exercício Resposta: {a n b n c n }. Na próxima aula veremos que essa linguagem não é livre de contexto. Portanto, perturbar a propriedade de independência de contexto possibilita expandir a classe de linguagens.

PDA CFG Para convertes PDA s para CFG s vamos precisar simular a pilha dentro de regras. Portanto, quanto mais simples as operações de pilha, mais fácil deverá ser isso. Além disso, outras restrições podem ser úteis. Portanto, vamos primeiro converter nosso PDA em um PDA tão simples quanto possível:

PPP CFG Hipótese Simplificadora 1. Hipótese PPP : A pilha apenas permite Pushs e Pops simples. 2. Um único estado de aceitação. 3. Pilha Vazia: Um string é aceito sse sua computação termina no estado de aceitação com a pilha vazia. Vamos converter um exemplo típico nessa forma:

Simplificando o PDA Original ε, ε $ a, X Y a, ε ε b, ε X ε, $ ε

Simplificando o PDA 1. Push Pop Puro 1A) Garanta que a pilha está sempre ativa substituindo transição com pilha inativapor um push seguido imediatamente de um pop de um símbolo dummy. ε, ε $ a, X Y a, ε ε b, ε X ε, $ ε

Simplificando o PDA 1. Push Pop Puro 1A) Garanta que a pilha está sempre ativa substituindo transição com pilha inactive por um push seguido imediatamente de um pop de um novo símbolo dummy. ε, ε $ a, X Y ε,d ε a, ε D b, ε X ε, $ ε

Simplificando o PDA 1. Push Pop Puro 1B) Toda transição que substitui o topoda pilha deve ser convertido em um pop seguido de push. ε, ε $ a, X Y ε,d ε a, ε D b, ε X ε, $ ε

Simplificando o PDA 1. Pure Push Pop 1B) Toda transição que substitui o topoda pilha deve ser convertido em um pop seguido de push. a, X ε ε, ε Y ε,d ε ε, ε $ a, ε D b, ε X ε, $ ε

Simplificando o PDA 2. Estado de Aceitação Único Desligue os estados de aceitação originais e conecte-os a um novo estado de aceitação (não esquecendo que a pilha não pode ser ignorada). a, X ε ε, ε Y ε,d ε ε, ε $ a, ε D b, ε X ε, $ ε

Simplificando o PDA 2. Estado de Aceitação Único Desligue os estados de aceitação originais e conecte-os a um novo estado de aceitação (não esquecendo que a pilha não pode ser ignorada). ε,d ε ε, ε Y a, X ε ε,d ε a, ε D ε,ε D ε, ε $ b, ε X ε, $ ε

Simplificando o PDA 3. Pilha Vazia Garanta que o conteúdo da pilha é esvaziado, adicionando um novo símbolo dummy marcador de pilha vazia e novos estados inicial/aceitação. ε,d ε ε, ε Y a, X ε ε,d ε a, ε D ε,ε D ε, ε $ b, ε X ε, $ ε

Simplificando o PDA 3. Pilha Vazia Garanta que o conteúdo da pilha é esvaziado, adicionando um novo símbolo dummy marcador de pilha vazia e novos estados inicial/aceitação. ε, ε ε,ε D ε, ε ε, ε Y a, X ε ε,d ε ε,$ ε ε,x ε ε,y ε ε,d ε a, ε D ε,d ε ε,ε D ε, ε $ b, ε X ε, $ ε

Simplificando o PDA Resultado ε, ε ε,ε D ε, ε ε, ε Y a, X ε ε,d ε ε,$ ε ε,x ε ε,y ε ε,d ε a, ε D ε,d ε ε,ε D ε, ε $ b, ε X ε, $ ε

PDA CFG Uma vez que o PDA seja convertido nessa forma mais restrita, podemos convertê-lo em uma CFG por meio de um procedimento padrão. Agora que caminhos de aceitação começam e terminam com a pilha vazia, é possível considerar caminhos desse tipo entre quaisquer dois estados e recursivamente gerar todos esses caminhos. Essa relação recursiva entre caminhos dará origem à recursão que é característica de gramáticas livres de contexto.

PDA CFG Recursão sobre Caminhos Notação: dados dois estados q,r do PDA, e um string x do dado alfabeto de entrada, a notação q-x r significa que é possível ir deqpara r lendo a entrada x, começando e terminando com pilha vazia: q input x r a a a $ Q: Expresse aceitação em termos dessa notação.

PDA CFG Recursão sobre Caminhos R: Para nosso PDA restrito, com estado de aceitação único q F, um string xé aceito sse q 0 -x q F Portanto, todos os strings aceitos são gerados se podemos gerar todas as triples que satisfazem q-x r. Isso é feito de modo recursivo sobre o comprimento do caminho: 1. Regra-Base: Podemos sempre considerar que o string vazio leva de qpara qsem modificar a pilha, já que nada é lido: q-ε q

PDA CFG Recursão sobre Caminhos 2. Regra de Recursão Transitive: Se podemos ir de q para rsem afetar a pilha, assim como de rpara s, então podemos combinar os caminhos para obter um caminho de qpara r. I.e: q-x r er-y s implica q-xy s x y q r s xy

PDA CFG Recursão sobre Caminhos 3. Regrade RecursãoPush-Pop: Se podemosirde q parar semafetara pilha, e empilhamosum símbolox indo de p paraq, o qualé desempilhadoaoirde rparas, então vamosde pparassobrepilhavazia: q-x r e (q,x) δ(p, a, ε)e (s, ε) δ(r,b,x) implica p- axb s X x X q r p a, ε X b, X ε s axb

PDA CFG Recursão sobre Caminhos LEMA: Toda tripla q-x r deve poder ser gerada indutivamente por uma das regras (1), (2) ou (3). Prova. Por indução sobre o comprimento ndo caminho q-x r. Caso Base (n = 0): xé o string vazio e tais camihos são gerados pela regra (1). Indução (n > 0): Siga o caminho, iniciando com pilha vazia. Existem 2 possíveis situações: I. A pilha é esvaziada em algum ponto intermediário. II. A pilha nunca fica vazia antes do final.

PDA CFG Recursão sobre Caminhos Caso I. Em algum ponto intermediário, digamos estado s, a pilha é esvaziada. Então divida o caminho em 2 partes, cada qual com sua parte do string de entrada, e cada um começando e terminando com a pilha vazia. I.e. divida x como x= uvtal que q-u s e s-v r. Então aplique a regra (2).

PDA CFG Recursão sobre Caminhos CasoII. A pilhanãoficavaziaemnenhumestado intermediário. Portanto, a primeira transição faz push (nenhumpop) de um símbolo X que apenasé desempilhadonaúltimatransição. Sejaso estadodestinoda primeiratransição, e t o estado origem da última transição. Então podemosirde sparatsob pilhavazia, lendo algumstring u. Alémdisso, (s,x) δ(p,a,ε), (r,ε) δ(t,b,x) e x = aub. Essaé exatamentea situaçãoà quala regra(3) se aplica. Issocompletaa prova.

PDA CFG A Gramática As três regras para gerar todos os caminhos nos dão uma gramática para gerar todos os rótulos desses caminhos. A gramática terávariáveisescritascomoa qr a qualirá gerartodososstrings x paraosquaisqx r. Q: Supondoisso, qualdevesera variável inicial?

PDA CFG A Gramática Símbolos R: S = A q 0qF Isso porque são aceitos exatamente os strings x para os quais vale q 0 -x q F. Além dessa variável inicial, as outras variáveis em Vsão todos os A qr para os quais existe um caminho de qpararque começa e termina com pilha vazia. 1 O conjunto de símbolos terminais Σé o alfabeto de entrada do PDA.

PDA CFG A Gramática Regras As regras são exatamente (1), (2) e (3): 1. Inclua uma regra A qq ε para cada estado q do PDA. 2. Inclua uma regra A pr A pq A qr para cada tripla p,q,r tais que A pr,a pq e A qr estão em V. 3. Inclua uma regra A ps aa qr b para cada p,s,q,r tais que A ps e A qr estão em V, e existem no PDA transições (q,x) δ(p,a,ε), e (s,ε) δ(r,b,x) para um mesmo símbolo de pilha X.

PDA CFG O PDA abaixo já está na forma correta (a forma restrita PPP) : (, ε X ), X ε q ε, ε $ r ε, $ ε s Q: Qual é a linguagem aceita?

PDA CFG R: BP = parenteses balanceados. O número de X s na pilha relete o nível corrente de aninhamento de parenteses q ε, ε $ (, ε X ), X ε Q: Quais são as variáveis da gramática equivalente? Qual é a variável inicial? r ε, $ ε s

PDA CFG R: V = {A qs, A qq, A rr, A ss }, S = A qs Não precisamos de A rq, A sq, A sr : direção errada. Não precisamos de A qr oua rs porque não se pode empilhar ou desempilhar $ estando em r. q ε, ε $ (, ε X ), X ε Q: Que produções obtemos da regra (1)? r ε, $ ε s

PDA CFG R: A qq ε, A rr ε, A ss ε (, ε X ), X ε q ε, ε $ r ε, $ ε s Q: Que produções obtemos da regra (2)?

PDA CFG A: A qs A qq A qs A qs A ss A qq A qq A qq A rr A rr A rr A ss A ss A ss (, ε X ), X ε q ε, ε $ r ε, $ ε s Q: Que produções obtemos da regra (3)?

A: A qs A rr, A rr (A rr ) Portanto a gramática é: 1 PDA CFG A qs A rr A qq A qs A qs A ss A rr ε A rr A rr (A rr ) A qq ε A qq A qq A ss ε A ss A ss (, ε X ), X ε q ε, ε $ r ε, $ ε s Q: Alguma simplificação óbvia?

PDA CFG A: AparentementeA qq ea ss sãopuramente autoreferenciaveis, portantoa únicamaneirade concluir uma derivação em que ocorram seria apagá-las. Entãopodemosremover A qq,a ss desde que sejam substituídas por ε: A qs A rr A qq A qs A qs A ss A rr ε A rr A rr (A rr ) A qq ε A qq A qq A ss ε A ss A ss Torna-se: A qs A rr A qs A rr ε A rr A rr (A rr )

A qs A rr A qs A rr ε A rr A rr (A rr ) PDA CFG Renomeiras variáveisparaobter: S T S T ε TT (T ) Respostafinal (Snãoé necessário, poiso seupapel é apenasgerart ): T ε TT (T )

Exercício Converta para CFG sos PDA sdas seguintes linguagens: {wcw R w {a, b}*} {a n b n n ℵ} {a n b n c m d m n,m ℵ}