Automatocom Pilha Pushdown Automaton

Documentos relacionados
Linguagens Livres de Contexto

Universidade Federal de Alfenas

Autômato com pilha. IBM1088 Linguagens Formais e Teoria da Computação. Evandro Eduardo Seron Ruiz

Pilha. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Linguagens Livres do Contexto. Adaptado de H. Brandão

Equivalênciaentre PDA e CFG

08/08/2011. Pilha. SCC0202 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo. Pilha. O que é? Para que serve?

Teoria da Computação

Máquinas de Turing - Computabilidade

Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica)

Aula 9: Máquinas de Turing

Autômatos de Pilha (AP)

Estados Equivalentes. Exemplo R: Sim, b e f. Note que se estamos em b ou f então:

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Linguagens Formais e Autômatos (LFA)

Aula 7: Autômatos com Pilha

Teoria da Computação. Máquinas Universais Máquina com Pilhas

a n Autômatos com Pilha: Definição Informal e Definição Formal Linguagem Aceita por um ACP ACPDet X ACPND Notação gráfica para ACP

Folha 4.1 Análise sintática descendente

Avaliação de expressões. Prof: Sérgio Souza Costa

Análise Sintática Bottom-up

Compiladores - Autômatos

Modelos de Computação Folha de trabalho n. 10

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

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

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

Aula 5 e 6 Pilhas e suas Aplicações. prof Leticia Winkler

Estruturas de Dados Encadeadas

SCC Algoritmos e Estruturas de Dados I

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

Propriedades de Fecho de Linguagens Regulares.

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

SCC Algoritmos e Estruturas de Dados I

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

Estruturas de Dados Aula 11: TAD Pilha

Algoritmos e Estrutura de Dados Aula 08 Pilhas

Estruturas de Dados Pilhas, Filas, Listas

Autômatos com Pilha. Douglas O. Cardoso docardoso.github.io

Pilhas Filas e Listas

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

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.

Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07

BCC242. Auômato Finito Determinístico

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Pilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista

Linguagens Formais e Autômatos P. Blauth Menezes

Teoria da Computação. Expressões Regulares e Autômatos Finitos. Thiago Alves

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 31. Instituto de C

COMPILADORES. Análise sintática. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática

Linguagens Formais e Autômatos P. Blauth Menezes

Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas. SCC-502 Algoritmos e Estruturas de Dados I

Pedro Vasconcelos DCC/FCUP. Programação Funcional 5 a Aula Definições recursivas

A Pilha. Aula 02. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria

Máquinas de Turing 1

Revisão: Tipo Abstrato de Dados Recursividade

Fundamentos da Programação

Geração de Código para LALG

Arvores, Percursos não recursivos, Arvores heterogêneas. Aula 19

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS

Questão 1 Analise o trecho do código abaixo, escrito na linguagem C#:

IV Gramáticas Livres de Contexto

Compiladores Ambiente de Execução

PCS Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 5: Encapsulamento e Tipo Abstrato de Dados

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

Aula de hoje. Comandos. Comandos simples. Comandos. Comandos de controle. Bloco de comandos. SCC Introdução à Programação para Engenharias

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

Compiladores - Análise Ascendente

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

BCC244. Alfabeto, String, Linguagem, Gramática. Registro aqui o agradecimento à Profa. Lucília por ceder slides que fazem parte deste materal.

Compiladores - Análise Ascendente

Autômatos com Pilha: Reconhecedores de LLCs

Linguagens de Programação Aula 14

Linguagens Livres-do-Contexto

Lista de exercícios 1

Organização e Arquitetura de Computadores I

Exemplos. Alocação Dinâmica de Pilhas. Pilhas. Pilhas. Implementação Seqüencial X Encadeada. SCE 182 Algoritmos e Estruturas de Dados I

Transcrição:

Automatocom Pilha Pushdown Automaton 1

Algoritmos Recursivos e Pilhas Princípio Geral em Computação: Qualquer algoritmo recursivo pode ser transformado em um não-recursivousando-se umapilhae um while-loop, que termina apenas quando a pilha está vazia. EX: JVM mantémosregistrosde ativaçãode cada chamada de método. Considere: long factorial(int n){ if (n<=0) return 1; return n*factorial(n-1); } Como JVM executa factorial(5)? 2

Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); Compute 5! 3

Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); f(5)= 5 f(4) 4

Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); f(4)= 4 f(3) f(5)= 5 f(4) 5

Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); f(3)= 3 f(2) f(4)= 4 f(3) f(5)= 5 f(4) 6

Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); f(2)= 2 f(1) f(3)= 3 f(2) f(4)= 4 f(3) f(5)= 5 f(4) 7

Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); f(1)= 1 f(0) f(2)= 2 f(1) f(3)= 3 f(2) f(4)= 4 f(3) f(5)= 5 f(4) 8

Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); f(0)= 1 f(1)= 1 f(0) f(2)= 2 f(1) f(3)= 3 f(2) f(4)= 4 f(3) f(5)= 5 f(4) 9

Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); 1 1= 1 f(2)= 2 f(1) f(3)= 3 f(2) f(4)= 4 f(3) f(5)= 5 f(4) 10

Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); 2 1= 2 f(3)= 3 f(2) f(4)= 4 f(3) f(5)= 5 f(4) 11

Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); 3 2= 6 f(4)= 4 f(3) f(5)= 5 f(4) 12

Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); 4 6= 24 f(5)= 5 f(4) 13

Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); 5 24= 120 14

Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); Return 5! = 120 15

De CFG s paraautômatoscom Pilha CFG s definem procedimentos recursivos: boolean derives(strings x, y) 1. if (x==y) return true 2. for(all u y) if derives(x,u) return true 3. return false EX: S # asa bsb 16

De CFG s para Máquinas de Pilha Por princípios gerais, qualquer computação recursiva pode ser executada usando-se uma pilha. Isso pode ser feito em uma versão simplificada de máquina com pilha de registro de ativação, chamada Autômato de Pilha ( Pushdown Automaton PDA) Q: Qual é a linguagem gerada por S # asa bsb? 17

De CFG s para Máquinas de Pilha R: Palíndromos em {a,b,#}* contendo exatamente um símbolo #. Q: Usando uma pilha, como podemos reconhecer tais strings? 18

De CFG s para Máquinas de Pilha A: Usamos um processo com três fases: 1. modo Push : Antes de ler #, emplihe qualquer símbolo lido. 2. Ao ler # troque de modo de operação. 3. modo Pop : Leia os símbolos restantes garantindo que cada novo símbolo lido é idêntico ao símbolo desempilhado. Aceite se for capaz de concluir com a pilha vazia. Caso contrário, rejeite; e rejeite se não for possível desempilhar em algum caso. 19

De CFG s para Máquinas de Pilha read ==a ou b? Push it read == top? Pop else: CRASH! (1) PUSH (2) read == #? (ignore stack) (3) POP empty stack? ACCEPT 20

De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baa 21

De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baa a 22

De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baa a a 23

De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baa a a a 24

De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baa b a a a 25

De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baa b a a a 26

De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baa a a a 27

De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baa a a 28

De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baa a REJECT (nonempty stack) 29

De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baaa a a 30

De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baaa a 31

De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baaa Pause input 32

De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baaa ACCEPT 33

De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baaaa a a 34

De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baaaa a 35

De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baaaa Pause input 36

De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baaaa CRASH 37

PDA s àla Sipser Para facilitar a análise, máquinas de pilha teóricas têm um conjuntorestritode operações. Cadalivro-author tem sua própria versão. PDAs descritos em Sipser são assim: Push/Pop agrupadosemúnicaoperação: substituiro símbolono topoda pilha Nenhum teste intrínsico de pilha vazia Epsilon é usadoparaaumentara funcionalidade: máquinas não deterministas. 38

Torna-se: read a or b? Push it Versão Sipser s (1) PUSH (2) read #? (ignore stack) a, ε a b, ε b read == peek? Pop Else: CRASH! (3) POP a, a ε b, b ε empty stack? ACCEPT ε, ε $ #, ε ε ε, $ ε 39

Versão Sipser s p x, y z q Significado da convenção do rótulo: Se está no estado p eo próximo símbolo é x e o topo da pilha é y, então vá para q e substitua ypor z na pilha. x = ε: ignore a entrada, não leia y = ε: ignore o topo da pilha e empilhe z z = ε: desempilhe y 40

Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ #, ε ε ε, $ ε push $ para detectar pilha vazia 41

Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ #, ε ε ε, $ ε aaab#baaa 42

Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε $ 43

Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε a $ 44

Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε a a $ 45

Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε a a a $ 46

Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε b a a a $ 47

Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε b a a a $ 48

Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε a a a $ 49

Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε a a $ 50

Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε a $ 51

Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε $ 52

Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε ACCEPT! 53

PDA Definição Formal DEF: Um autômatode pilha(pda) é uma6- tupla M = (Q, Σ, Γ, δ, q 0, F ) ondeq, Σe q 0, são comoparaum AF. Γ é o alpfabetoda pilha. δé uma função: δ : Q Σ Γ P ( Q Γ ε ε Portanto, dado um estadop,umasímbololido x e um símbolode pilhay, δ(p,x,y) retornatodo (q,z) talqueq é um estadoalvoe z é um símboloque deve substituir y. ε ) 54

PDA Definição Formal a, ε ε a, ε a b, ε b 0 1 2 a, a ε b, b ε ε, ε $ b, ε $ ε, $ ε Q: O que é δ(p,x,y) em cada caso? 1. δ(0,a,b) 2. δ(0,ε,ε) 3. δ(1,a,ε) 4. δ(3,ε,ε) 3 55

PDA Definição Formal a, ε ε a, ε a b, ε b 0 1 2 a, a ε b, b ε ε, ε $ b, ε $ ε, $ ε R: 1. δ(0,a,b) = 2. δ(0,ε,ε) = {(1,$)} 3. δ(1,a,ε) = {(0,ε),(1,a)} 4. δ(3,ε,ε) = 3 56

PDA -Exercício Forneça PDA spara reconhecer as seguintes linguagens: {a n b n n ℵ} {a n b 2n n ℵ} {a 2n b n n ℵ} {a i b j c k i = j ou i=k} {w w R w {0,1}* } {w {0,1} * o número de 0 s é igual ao de 1 s }