1 automato de pilha. 2 agenda autômato de pilha pilhas e recursão definição formal para a...

45
1 Automato de Pilha

Upload: internet

Post on 18-Apr-2015

109 views

Category:

Documents


3 download

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

61

PDA Exemplo.Sem bolhas

$

a$ $aAA

$

Aaa

b$ $ba a

a

a

bAA

$$