… 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
Download

ftc11 - Decom