… NPDAs continuação 1 Empilhando Strings Símbolo Símbolo String de entrada desempilhado empilhado a, b ® w q1 q2 2 Exemplo: q1 a, b ® cdf q2 entrada a a pilha b h e $ top Push c d f h e $ string empilhado 3 Outro exemplo de NPDA NPDA M L ( M ) { w : n a nb } a, $ ® 0$ a, 0 ® 00 a, 1 ® l b, $ ® 1$ b, 1® 11 b, 0 ® l q1 , $ $ q2 4 Exemplo de Execução: Instante 0 Entrada a b b a a b a, $ ® 0$ a, 0 ® 00 a, 1 ® l estado corrente b, $ ® 1$ b, 1® 11 b, 0 ® l q1 , $ $ $ Pilha q2 5 Instante 1 Entrada a b b a a b a, $ ® 0$ a, 0 ® 00 a, 1 ® l b, $ ® 1$ b, 1® 11 b, 0 ® l q1 , $ $ 0 $ Pilha q2 6 Instante 3 Entrada a b b b a a 0 a, $ ® 0$ a, 0 ® 00 a, 1 ® l b, $ ® 1$ b, 1® 11 b, 0 ® l q1 , $ $ $ Pilha q2 7 Instante 4 Entrada a b b b a a a, $ ® 0$ a, 0 ® 00 a, 1 ® l b, $ ® 1$ b, 1® 11 b, 0 ® l q1 , $ $ 1 $ Pilha q2 8 Instante 5 Entrada a b b b a a a, $ ® 0$ a, 0 ® 00 a, 1 ® l b, $ ® 1$ b, 1® 11 b, 0 ® l q1 , $ $ 1 1 $ Pilha q2 9 Instante 6 Entrada a b b b a a a, $ ® 0$ a, 0 ® 00 a, 1 ® l b, $ ® 1$ b, 1® 11 b, 0 ® l q1 , $ $ 1 1 $ Pilha q2 10 Instante 7 Entrada a b b b a a a, $ ® 0$ a, 0 ® 00 a, 1 ® l b, $ ® 1$ b, 1® 11 b, 0 ® l q1 , $ $ 1 $ Pilha q2 11 Instante 8 Entrada a b b b a a a, $ ® 0$ a, 0 ® 00 a, 1 ® l b, $ ® 1$ b, 1® 11 b, 0 ® l $ Pilha aceita q1 , $ $ q2 12 Formalização de NPDAs 13 a, b ® w q1 q2 Função de Transição : ( q1 , a , b ) {( q 2 , w )} 14 a, b w q2 q1 a, b w q3 Função de Transição: ( q1 , a , b ) {( q 2 , w ), ( q 3 , w )} 15 Definição Formal Autômato de Pilha Não Determinista NPDA M = (Q, S, G, d, q0, F) Estados Estados finais Alfabeto de entrada Estado inicial Alfabeto de pilha Função de Transição 16 Descrição Instantânea (q, u , s) Estado corrente Entrada restante Conteúdo corrente da pilha 17 Exemplo: Descrição Instantânea ( q1 , bbb , aaa $) Instante 4: Entrada a a a b b b a, l ® a b, a ® l a a a $ Pilha l , l ® l b, a ® l l , $ ® $ q3 q0 q2 q1 18 Exemplo: Descrição Instantânea ( q 2 , bb , aa $) Instante 5: Entrada a a a b b b a, l ® a b, a ® l a a a $ Pilha l , l ® l b, a ® l l , $ ® $ q3 q0 q2 q1 19 Escrevemos: ( q1 , bbb , aaa $) ( q 2 , bb , aa $) Instante 4 Instante 5 20 Uma computação: ( q 0 , aaabbb ,$) ( q1 , aaabbb ,$) ( q1 , aabbb , a $) ( q1 , abbb , aa $) ( q1 , bbb , aaa $) ( q 2 , bb , aa $) ( q 2 , b , a $) ( q 2 , ,$) ( q 3 , ,$) a, l ® a b, a ® l l , l ® l b, a ® l l , $ ® $ q3 q0 q2 q1 21 ( q 0 , aaabbb ,$) ( q1 , aaabbb ,$) ( q1 , aabbb , a $) ( q1 , abbb , aa $) ( q1 , bbb , aaa $) ( q 2 , bb , aa $) ( q 2 , b , a $) ( q 2 , ,$) ( q 3 , ,$) Por conveniência escrevemos: ( q 0 , aaabbb ,$) ( q 3 , ,$) 22 Definição Formal Linguagem de um NPDA M : * L(M ) = {w : (q0 , w,$) ≻ (q f , l, $)} Estado inicial Estado final 23 Exemplo: ( q 0 , aaabbb ,$) ( q 3 , ,$) aaabbb L ( M ) NPDA M : a, l ® a b, a ® l l , l ® l b, a ® l l , $ ® $ q3 q0 q2 q1 24 n n ( q 0 , a b ,$) ( q 3 , ,$) n n a b L(M ) NPDA M : a, l ® a b, a ® l l , l ® l b, a ® l l , $ ® $ q3 q0 q2 q1 25 Portanto: n n L ( M ) { a b : n 0} NPDA M : a, l ® a b, a ® l l , l ® l b, a ® l l , $ ® $ q3 q0 q2 q1 26 NPDAs Aceitam Linguagens Livres de Contexto 27 Teorema: Linguagens (Gramáticas) Livres de Contexto Linguagens Aceitas por NPDAs 28 Prova - Passo 1: Linguagens (Gramáticas) Livres de Contexto Linguagens Aceitas por NPDAs Converter qualquer gramática livre de contexto G em um NPDA M com: L ( G ) L ( M ) 29 Prova - Passo 2: Linguagens (Gramáticas) Livres de Contexto Linguagens Acceitas por NPDAs Converter qualquer NPDA M em uma gramática livre de contexto G com: L ( G ) L ( M ) 30 Convertendo Gramáticas Livres de Contexto para NPDAs 31 Exemplo de gramática: S aSTb S b T Ta T Qual seria o NPDA equivalente? 32 Gramática: S aSTb NPDA: S b T Ta T q0 , S aSTb , S b , T Ta a, a ,T b, b , S q1 l, $ ® $ q2 33 O NPDA simula derivações mais à esquerda da gramática L(Gramática) = L(NPDA) 34 Gramática: S aSTb S b T Ta T Uma derivação mais à esquerda: S aSTb abTb abTab abab 35 Execução do NPDA: Instante 0 Entrada a b a b , S aSTb $ , S b estado corrente q0 Pilha , T Ta a, a ,T b, b , S q1 l, $ ® $ q2 36 Instante 1 Entrada a b a b S , S aSTb $ , S b q0 Pilha , T Ta a, a ,T b, b , S q1 l, $ ® $ q2 37 Instante 2 Entrada S T a b a b b $ , S aSTb , S b q0 Pilha , T Ta a, a ,T b, b , S a q1 l, $ ® $ q2 38 Instante 3 Entrada S T a b a b b $ , S aSTb , S b q0 Pilha , T Ta a, a ,T b, b , S a q1 l, $ ® $ q2 39 Instante 4 Entrada b a b a b T b $ , S aSTb , S b q0 Pilha , T Ta a, a ,T b, b , S q1 l, $ ® $ q2 40 Instante 5 Entrada b a b a b T b $ , S aSTb , S b q0 Pilha , T Ta a, a ,T b, b , S q1 l, $ ® $ q2 41 Instante 6 Entrada T a b a b a b $ , S aSTb , S b q0 Pilha , T Ta a, a ,T b, b , S q1 l, $ ® $ q2 42 Instante 7 Entrada T a b a b a b $ , S aSTb , S b q0 Pilha , T Ta a, a ,T b, b , S q1 l, $ ® $ q2 43 Instante 8 Entrada a b a b a b $ , S aSTb , S b q0 Pilha , T Ta a, a ,T b, b , S q1 l, $ ® $ q2 44 Instante 9 Entrada a b a b b $ , S aSTb , S b q0 Pilha , T Ta a, a ,T b, b , S q1 l, $ ® $ q2 45 Instante 10 Entrada a b a b , S aSTb $ , S b Pilha , T Ta a, a ,T b, b aceita q0 , S q1 l, $ ® $ q2 46 Em geral: Dada qualquer gramática G Podemos construir aum NPDA M com L (G ) L ( M ) 47 Construindo um NPDA M a partir de G : Para cada produção Para cada terminal a A w , A w q0 , S a, a q1 l, $ ® $ q2 48 Gramática G gera o string w se e somente se NPDA M aceita w L (G ) L ( M ) 49 Portanto: Para qualquer gramática livre de contexto existe um NPDA que aceita a mesma linguagem gerada pela gramática 50 Convertendo NPDAs para Gramáticas Livres de Contexto 51 Para qualquer NPDA M vamos construir uma gramática livre de contexto G com L ( M ) L (G ) 52 Intuição: A gramática simula a máquina Uma derivação na Gramática G : S abc ABC abc Configuração corrente no NPDA M 53 Uma derivação na Gramática G : terminais variáveis S abc ABC abc Entrada processada Conteúdo da pilha no NPDA M 54 Algumas Modificações Necessárias Primeiro, modificamos o NPDA: • Ele tem um único estado final q f • Ele esvazia a pilha quando aceita a entrada NPDA Original Esvazia a pilha qf 55 Segundo, modificamos as transições do NPDA: todas as transições terão a forma qi a, B qj ou qi a , B CD qj B,C, D : símbolos de pilha 56 Exemplo de um NPDA na forma correta: L ( M ) { w : n a nb } $ : símbolo inicial na pilha a, $ ® 0$ a, 0 ® 00 a, 1 ® l q0 b, $ ® 1$ b, 1® 11 b, 0 ® l , $ qf 57 A Contrução da Gramática Gramática G : símbolo na pilha Variáveis: ( q i Bq j ) estados Terminais: Simbolos de entrada doNPDA58 Para cada transição qi a, B qj Adicionamos a produção ( q i Bq j ) a 59 Para cada transição qi a , B CD qj Adicionamos a produção ( q i Bq k ) a ( q j Cq l )( q l Dq k ) Para todos os estados q k , ql 60 Símbolo de fundo de pilha Variável inicial: (qo $ q f ) Estado inicial Estado final 61 Exemplo: a, $ ® 0$ a, 0 ® 00 a, 1 ® l q0 b, $ ® 1$ b, 1® 11 b, 0 ® l , $ qf Produções na gramática: ( q 0 1q 0 ) a 62 Exemplo: a, $ ® 0$ a, 0 ® 00 a, 1 ® l q0 b, $ ® 1$ b, 1® 11 b, 0 ® l , $ qf Produções na gramática: ( :q 0 $ q 0 ) b ( q 0 1q 0 )( q 0 $ q 0 ) | b ( q 0 1q f )( q f $ q 0 ) ( q 0 $ q f ) b ( q 0 1q 0 )( q 0 $ q f ) | b ( q 0 1q f )( q f $ q f ) 63 Exemplo: a, $ ® 0$ a, 0 ® 00 a, 1 ® l q0 b, $ ® 1$ b, 1® 11 b, 0 ® l , $ qf Produções na gramática: (q0 $ q f ) 64 Gramática resultante: (q0 $q f ) : variável inicial ( q 0 $ q 0 ) b ( q 0 1q 0 )( q 0 $ q 0 ) | b ( q 0 1q f )( q f $ q 0 ) ( q 0 $ q f ) b ( q 0 1q 0 )( q 0 $ q f ) | b ( q 0 1q f )( q f $ q f ) ( q 0 1q 0 ) b ( q 0 1q 0 )( q 0 1q 0 ) | b ( q 0 1q f )( q f 1q 0 ) ( q 0 1q f ) b ( q 0 1q 0 )( q 0 1q f ) | b ( q 0 1q f )( q f 1q f ) ( q 0 $ q 0 ) a ( q 0 0 q 0 )( q 0 $ q 0 ) | a ( q 0 0 q f )( q f $ q 0 ) ( q 0 $ q f ) a ( q 0 0 q 0 )( q 0 $ q f ) | a ( q 0 0 q f )( q f $ q f ) 65 ( q 0 0 q 0 ) a ( q 0 0 q 0 )( q 0 0 q 0 ) | a ( q 0 0 q f )( q f 0 q 0 ) ( q 0 0 q f ) a ( q 0 0 q 0 )( q 0 0 q f ) | a ( q 0 0 q f )( q f 0 q f ) ( q 0 1q 0 ) a (q0 0 q0 ) b (q0 $ q f ) 66 Derivação do string (q0 $ q f ) abba a ( q 0 0 q 0 )( q 0 $ q f ) ab ( q 0 $ q f ) abb ( q 0 1q 0 )( q 0 $ q f ) abba ( q 0 $ q f ) abba 67 Em geral, na Gramática: (q0 $ q f ) w se e somente se w é aceito pelo NPDA 68 Explicação: Pela construção da Gramática: ( q i Aq j ) w se e somente se no NPDA: indo de q i para q j a pilha não muda abaixo de A e A é removido da pilha 69