1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a...
Transcript of 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a...
![Page 1: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/1.jpg)
1
Automato de Pilha
![Page 2: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/2.jpg)
2
AgendaAutômato de Pilha Pilhas e recursão Definição Formal
Para a próxima aula Ler Cap 2.2
![Page 3: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/3.jpg)
17
De CFG’s para Máquinas de Pilha
CFG’s definem procedimentos recursivos:
boolean derives(strings x, y)
1. if (x==y) return true
2. for(all uy) if derives(x,u) return true
3. return false
EX: S # | aSa | bSb
![Page 4: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/4.jpg)
18
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 ?
![Page 5: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/5.jpg)
19
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?
![Page 6: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/6.jpg)
20
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.
![Page 7: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/7.jpg)
21
De CFG’s para Máquinas de Pilha
(1)PUSH
(3)POP
read ==a ou b ?
Push it
ACCEPT
(2)read == # ?
(ignore stack)
read == top ?Pop
else: CRASH!
empty stack?
![Page 8: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/8.jpg)
22
De CFG’s para Máquinas de Pilha
(1)PUSH
(3)POP
read a or b ?Push it
ACCEPT
(2)read # ?(ignore stack)
read == peek ?
PopElse: CRASH!
empty stack?
Input:aaab#baa
![Page 9: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/9.jpg)
23
De CFG’s para Máquinas de Pilha
(1)PUSH
(3)POP
read a or b ?Push it
ACCEPT
(2)read # ?(ignore stack)
read == peek ?
PopElse: CRASH!
empty stack?
aInput:aaab#baa
![Page 10: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/10.jpg)
24
De CFG’s para Máquinas de Pilha
(1)PUSH
(3)POP
read a or b ?Push it
ACCEPT
(2)read # ?(ignore stack)
read == peek ?
PopElse: CRASH!
empty stack?
a aInput:aaab#baa
![Page 11: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/11.jpg)
25
De CFG’s para Máquinas de Pilha
(1)PUSH
(3)POP
read a or b ?Push it
ACCEPT
(2)read # ?(ignore stack)
read == peek ?
PopElse: CRASH!
empty stack?
a a aInput:aaab#baa
![Page 12: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/12.jpg)
26
De CFG’s para Máquinas de Pilha
(1)PUSH
(3)POP
read a or b ?Push it
ACCEPT
(2)read # ?(ignore stack)
read == peek ?
PopElse: CRASH!
empty stack?
b a a aInput:aaab#baa
![Page 13: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/13.jpg)
27
De CFG’s para Máquinas de Pilha
(1)PUSH
(3)POP
read a or b ?Push it
ACCEPT
(2)read # ?(ignore stack)
read == peek ?
PopElse: CRASH!
empty stack?
b a a aInput:aaab#baa
![Page 14: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/14.jpg)
28
De CFG’s para Máquinas de Pilha
(1)PUSH
(3)POP
read a or b ?Push it
ACCEPT
(2)read # ?(ignore stack)
read == peek ?
PopElse: CRASH!
empty stack?
a a aInput:aaab#baa
![Page 15: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/15.jpg)
29
De CFG’s para Máquinas de Pilha
(1)PUSH
(3)POP
read a or b ?Push it
ACCEPT
(2)read # ?(ignore stack)
read == peek ?
PopElse: CRASH!
empty stack?
a aInput:aaab#baa
![Page 16: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/16.jpg)
30
De CFG’s para Máquinas de Pilha
(1)PUSH
(3)POP
read a or b ?Push it
ACCEPT
(2)read # ?(ignore stack)
read == peek ?
PopElse: CRASH!
empty stack?
aInput:aaab#baa
REJECT (nonempty stack)
![Page 17: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/17.jpg)
31
De CFG’s para Máquinas de Pilha
(1)PUSH
(3)POP
read a or b ?Push it
ACCEPT
(2)read # ?(ignore stack)
read == peek ?
PopElse: CRASH!
empty stack?
a aInput:aaab#baaa
![Page 18: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/18.jpg)
32
De CFG’s para Máquinas de Pilha
(1)PUSH
(3)POP
read a or b ?Push it
ACCEPT
(2)read # ?(ignore stack)
read == peek ?
PopElse: CRASH!
empty stack?
aInput:aaab#baaa
![Page 19: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/19.jpg)
33
De CFG’s para Máquinas de Pilha
(1)PUSH
(3)POP
read a or b ?Push it
ACCEPT
(2)read # ?(ignore stack)
read == peek ?
PopElse: CRASH!
empty stack?
Input:aaab#baaa
Pause input
![Page 20: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/20.jpg)
34
De CFG’s para Máquinas de Pilha
(1)PUSH
(3)POP
read a or b ?Push it
ACCEPT
(2)read # ?(ignore stack)
read == peek ?
PopElse: CRASH!
empty stack?
Input:aaab#baaa
ACCEPT
![Page 21: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/21.jpg)
35
De CFG’s para Máquinas de Pilha
(1)PUSH
(3)POP
read a or b ?Push it
ACCEPT
(2)read # ?(ignore stack)
read == peek ?
PopElse: CRASH!
empty stack?
a aInput:aaab#baaaa
![Page 22: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/22.jpg)
36
De CFG’s para Máquinas de Pilha
(1)PUSH
(3)POP
read a or b ?Push it
ACCEPT
(2)read # ?(ignore stack)
read == peek ?
PopElse: CRASH!
empty stack?
aInput:aaab#baaaa
![Page 23: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/23.jpg)
37
De CFG’s para Máquinas de Pilha
(1)PUSH
(3)POP
read a or b ?Push it
ACCEPT
(2)read # ?(ignore stack)
read == peek ?
PopElse: CRASH!
empty stack?
Input:aaab#baaaa
Pause input
![Page 24: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/24.jpg)
38
De CFG’s para Máquinas de Pilha
(1)PUSH
(3)POP
read a or b ?Push it
ACCEPT
(2)read # ?(ignore stack)
read == peek ?
PopElse: CRASH!
empty stack?
Input:aaab#baaaa
CRASH
![Page 25: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/25.jpg)
39
PDA’s à la Sipser
Para facilitar a análise, máquinas de pilha teóricas têm um conjunto restrito de operações. Cada livro-author tem sua própria versão. PDAs descritos em Sipser são assim: Push/Pop agrupados em única operação: substituir o símbolo no topo da pilha Nenehum texte intrínsico de pilha vazia Epsilon é usado para aumentar a funcionalidade: máquinas não deterministas.
![Page 26: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/26.jpg)
40
Versão Sipser’s
Torna-se:
(1)PUSH
(3)POP
read a or b ?Push it
ACCEPT
(2)read # ?
(ignore stack)
read == peek ?Pop
Else: CRASH!
empty stack?
$
aabb
#
$
aabb
![Page 27: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/27.jpg)
41
Versão Sipser’s
Significado da convenção do rótulo:Se está no estado p e o próximo símbolo é x
e o topo da pilha é y,então vá para q e substitua y por z na pilha.
x = : ignore a entrada, não leia
y = : ignore o topo da pilha e empilhe z
z = : desempilhe y
p qx, y z
![Page 28: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/28.jpg)
42
Versão Sipser’s
$
aabb
#
$
aabb
push $ para
detectar pilha vazia
![Page 29: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/29.jpg)
43
Versão Sipser’s
$
aabb
#
$
aabb
Input:aaab#baaa
![Page 30: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/30.jpg)
44
Versão Sipser’s
$
aabb
#
$
aabb
$Input:aaab#baaa
![Page 31: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/31.jpg)
45
Versão Sipser’s
$
aabb
#
$
aabb
a $Input:aaab#baaa
![Page 32: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/32.jpg)
46
Versão Sipser’s
$
aabb
#
$
aabb
a a $Input:aaab#baaa
![Page 33: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/33.jpg)
47
Versão Sipser’s
$
aabb
#
$
aabb
a a a $Input:aaab#baaa
![Page 34: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/34.jpg)
48
Versão Sipser’s
$
aabb
#
$
aabb
b a a a $Input:aaab#baaa
![Page 35: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/35.jpg)
49
Versão Sipser’s
$
aabb
#
$
aabb
b a a a $Input:aaab#baaa
![Page 36: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/36.jpg)
50
Versão Sipser’s
$
aabb
#
$
aabb
a a a $Input:aaab#baaa
![Page 37: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/37.jpg)
51
Versão Sipser’s
$
aabb
#
$
aabb
a a $Input:aaab#baaa
![Page 38: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/38.jpg)
52
Versão Sipser’s
$
aabb
#
$
aabb
a $Input:aaab#baaa
![Page 39: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/39.jpg)
53
Versão Sipser’s
$
aabb
#
$
aabb
$Input:aaab#baaa
![Page 40: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/40.jpg)
54
Versão Sipser’s
$
aabb
#
$
aabb
Input:aaab#baaa
ACCEPT!
![Page 41: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/41.jpg)
55
PDA Definição Formal
DEF: Um autômato de pilha (PDA) é uma 6-tupla M = (Q, , , , q0, F ) onde Q, e q0, são como para um FA. é o alpfabeto da pilha. é uma função:
Portanto, dado um estado p, uma símbolo lido x e um símbolo de pilha y, p,x,yretorna todo (q,z) tal que q é um estado alvo e z é um símbolo que deve substituir y.
)(Σ:δ εεε QPQ
![Page 42: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/42.jpg)
56
PDA Definição Formal
Q: O que é p,x,y em cada caso?1. 0,a,b2. 0,,3. 1,a,4. 3,,
0 1 2$
3
aabb
b$
$
aabb
a
![Page 43: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/43.jpg)
57
PDA Definição Formal
R: 1. 0,a,b2. 0,,= {(1,$)}3. 1,a,= {(0,),(1,a)}4. 3,,=
0 1 2$
3
aabb
b$
$
aabb
a
![Page 44: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/44.jpg)
58
PDA: Exercício
(Sipser 2.6.a) Desenhe um PDA que aceite a linguagem
L = { x {a,b}* | na(x) = 2nb(x) }
NOTA: O string vazio está em L.
![Page 45: 1 Automato de Pilha. 2 Agenda Autômato de Pilha Pilhas e recursão Definição Formal Para a próxima aula Ler Cap 2.2.](https://reader031.fdocumentos.tips/reader031/viewer/2022012918/552fc12e497959413d8d2ec7/html5/thumbnails/45.jpg)
61
PDA Exemplo.Sem bolhas
$
a$ $aAA
$
Aaa
b$ $ba a
a
a
bAA
$$