Top Banner
PushDown Automata
58

PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Jan 19, 2016

Download

Documents

Reynard Sanders
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

PushDown Automata

Page 2: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

What is a stack?

• A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

• In order to access other elements I have to remove those that are on top one by one.

Page 3: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Stack

Page 4: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Stack

Page 5: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Stack

Page 6: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Stack

Page 7: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Stack

Page 8: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Stack

Page 9: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Stack

Page 10: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Stack

Page 11: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

What is a PDA?

• A PDA is an enhanced finite automaton that also contains an infinite stack.

• The transitions in a PDA are of the form a, x ⟶ y

meaning that if you see an a in the input string and the stack contains the symbol x on top then you remove the x and add a y.

• The stack gives us extra power to recognize non-regular languages.

Page 12: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Transitions

• Transitions of the form a, x ⟶ y require that the next input symbol should be a and the top stack symbol should be x.

q q’a, x ⟶ yxw

...abb...

Stack Input

q q’a, x ⟶ yyw

...abb...

Stack Input

Page 13: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Transitions

• Transitions of the form ε, x ⟶ y require that the top stack symbol is x.

q q’ε, x ⟶ y

xw

Stack Input

q q’ε, x ⟶ y

yw

Stack Input

...abb... ...abb...

Page 14: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Transitions

• Transitions of the form a, ε ⟶ y require that the next input symbol is a.

q q’a, ε ⟶ y

xw

Stack Input

q q’a, ε ⟶ y

yxw

Stack Input

...abb... ...abb...

Page 15: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Transitions

• Transitions of the form ε, ε ⟶ y can be followed without restrictions.

q q’ε, ε ⟶ y

xw

Stack Input

q q’ε, ε ⟶ y

yxw

Stack Input

...abb... ...abb...

Page 16: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

PDA Accept – Reject Status

• The PDA accepts when there exists a computation path such that:– The computation path ends in an accept state– All the input is consumed– (no requirement for the stack)

• The PDA rejects when all the paths:– Either end in a non-accepting state– Or are incomplete (meaning that at some point

there is no possible transition under the current input and stack symbols)

Page 17: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

A PDA for {anbn : n ≥ 0}

• We usually use the stack for counting. • For this language for example, you first insert

all the as in the stack until you start seeing bs .• When you see the first b start removing as

from the stack.• When you have consumed the whole string

you check the stack: if it’s empty then this means that the number of as equals the number of bs.

Page 18: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Is the stack empty?

How can you check if the stack is empty? • What we usually do is to place a special

symbol (for example a $) at the bottom of the stack.

• Whenever we find the $ again we know that we reached the end of the stack.

• In order to accept a string there is no need for the stack to be empty.

Page 19: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Stack push and pop in PDA

• a, ε ⟶ t when you see an a in the input push t on the stack• a, b ε⟶ when you see an a in the input and b is on the top of the stack, pop b out.

Page 20: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

A PDA for {anbn : n ≥ 0}

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ ab, a ⟶ ε

b, a ⟶ ε

Page 21: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Visualization of {anbn:n ≥ 0}

aaabbb

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ ab, a ⟶ ε

b, a ⟶ ε

Page 22: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Visualization of {anbn:n ≥ 0}

aaabbb

$

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ a

b, a ⟶ εb, a ⟶ ε

Page 23: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Visualization of {anbn:n ≥ 0}

aaabbb

a$

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ a

b, a ⟶ εb, a ⟶ ε

Page 24: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Visualization of {anbn:n ≥ 0}

aaabbb

aa$

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ a

b, a ⟶ εb, a ⟶ ε

Page 25: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Visualization of {anbn:n ≥ 0}

aaabbb

aaa$

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ a

b, a ⟶ εb, a ⟶ ε

Page 26: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Visualization of {anbn:n ≥ 0}

aaabbb

aa$

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ a

b, a ⟶ εb, a ⟶ ε

Page 27: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Visualization of {anbn:n ≥ 0}

aaabbb

a$

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ a

b, a ⟶ εb, a ⟶ ε

Page 28: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Visualization of {anbn:n ≥ 0}

aaabbb

$

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ a

b, a ⟶ εb, a ⟶ ε

Page 29: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Visualization of {anbn:n ≥ 0}

aaabbb

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ a

b, a ⟶ εb, a ⟶ ε

Page 30: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Visualization of {anbn:n ≥ 0}

aab

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ a

b, a ⟶ εb, a ⟶ ε

Page 31: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Visualization of {anbn:n ≥ 0}

aab

$

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ a

b, a ⟶ εb, a ⟶ ε

Page 32: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Visualization of {anbn:n ≥ 0}

aab

a$

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ a

b, a ⟶ εb, a ⟶ ε

Page 33: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Visualization of {anbn:n ≥ 0}

aab

aa$

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ a

b, a ⟶ εb, a ⟶ ε

Page 34: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Visualization of {anbn:n ≥ 0}

aab

a$

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ a

b, a ⟶ εb, a ⟶ ε

Page 35: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Visualization of {anbn:n ≥ 0}

aab

a$

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ a

b, a ⟶ εb, a ⟶ ε

Page 36: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Visualization of {anbn:n ≥ 0}

abb

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ a

b, a ⟶ εb, a ⟶ ε

Page 37: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Visualization of {anbn:n ≥ 0}

abb

$

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ a

b, a ⟶ εb, a ⟶ ε

Page 38: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Visualization of {anbn:n ≥ 0}

abb

a$

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ a

b, a ⟶ εb, a ⟶ ε

Page 39: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Visualization of {anbn:n ≥ 0}

abb

$

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ a

b, a ⟶ εb, a ⟶ ε

Page 40: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Visualization of {anbn:n ≥ 0}

abb

$

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

a, ε ⟶ a

b, a ⟶ εb, a ⟶ ε

Page 41: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

PDA formally

• A PDA is a sextuple (Q, Σ, Γ, δ, q0, F), where:– Q is the set of states– Σ is the input alphabet– Γ is the alphabet for the stack– δ is the transition function– q0 is the start state– F is the set of accepting states

About Γ: The stack alphabet can contain any symbol you want. It can be completely disjoint from Σ.

Page 42: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

L() : proper opening and closing parenthesis

(, ε ⟶ *), * ⟶ εq0 q1

ε, ε ⟶ $ε, $ ⟶ ε

Page 43: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Try it yourself

• Create a PDA for the language:L= = {w : w contains an equal number of 0s and 1s}

Page 44: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

L= : equal number of 0s and 1s

q0 q1

q2

ε, $ ⟶ ε0, ε

⟶ *

0, ε ⟶ *1, * ⟶ ε

q3

ε, ε ⟶ $ε, $ ⟶ ε

1, ε ⟶ *0, * ⟶ ε

1, ε ⟶ *

Page 45: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

L= : equal number of 0s and 1s

NPDA for this language

0, ε ⟶ 00, 1 ⟶ ε1, ε ⟶ 11, 0 ⟶ εq0 q1

ε, ε ⟶ $ε, $ ⟶ ε

Page 46: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

PDA and Regular Languages

• Regular languages can be recognized by PDA: – For every regular language there is an NFAε

recognizing it.– Simply add ε⟶ε in every transition for the stack

(i.e just don’t use it at all).• The languages recognized by PDA is a superset

of regular languages.– As we saw the language L = {anbn : n≥0} is

recognized by some PDA.– L is not regular.

Page 47: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Non-Determinism

• Non- determinism means that we can have more than one choice.

• Non-Deterministic:

q1

q2

0, a ⟶ 1

q3

0, a ⟶ 1

Page 48: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Non-Determinism

• Non- determinism means that we can have more than one choice.

• Non-Deterministic:

q1

q2

0, a ⟶ 0

q3

0, a ⟶ 1

Page 49: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Non-Determinism

• Non- determinism means that we can have more than one choice.

• Non-Deterministic:

q1 q2

0, a ⟶ 00, a ⟶ 1

Page 50: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Non-Determinism

• Non- determinism means that we can have more than one choice.

• Non-Deterministic:

q1

q2

0, ε ⟶ 0

q3

0, a ⟶ 1

Page 51: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Non-Determinism

• Non- determinism means that we can have more than one choices.

• Non-Deterministic:

q1

q2

ε, b ⟶ 0

q3

0, b ⟶ 1

Page 52: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Non-Determinism

• Non- determinism means that we can have more than one choices.

• Deterministic:

q1

q2

0, b ⟶ 0

q3

0, a ⟶ 1

Page 53: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Non-Determinism

• Non- determinism means that we can have more than one choices.

• Deterministic:

q1 q2

ε, ε ⟶ 0No other possible transitions

Page 54: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

Definition of DPDA(deterministic push down automata)

δ : Q x Σε x Γε (Q x Γε) U {φ}

A DPDA has exactly one legal move in every situation where its stack is non empty

Given any state q, any letter a, any stack letter xOnly one of the following is allowed to be non emptyδ(q,a,x) δ(q,a, ε)δ(q, ε, x) δ(q, ε, ε)

Page 55: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

DPDA vs NPDA

• Although non-deterministic and deterministic FA are equivalent this is not the case with PDA. Non-determinism helps us recognize more languages.

• Intuition: LR = { wwR : w in {0,1}* }

An NPDA for this language pushes the first half of the string in the stack and pops the second half.It has to guess where the middle of the string is.

Page 56: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

L#R = { w#wR : w in {0,1}* }

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

0, ε ⟶ 01, ε ⟶ 1

#, ε ⟶ ε0, 0 ⟶ ε1, 1 ⟶ ε

Page 57: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

LR = { wwR : w in {0,1}* }

q0 q1

q3 q2

ε, ε ⟶ $ε, $ ⟶ ε

0, ε ⟶ 01, ε ⟶ 1

ε, ε ⟶ ε0, 0 ⟶ ε1, 1 ⟶ ε

• Compare the previous DPDA with this NPDA

Page 58: PushDown Automata. What is a stack? A stack is a Last In First Out data structure where I only have access to the last element inserted in the stack.

NPDA and CF languages

• It can be shown that non-deterministic PDA are equivalent with context free grammars.

• NPDA accept exactly the set of CF languages.• In order to prove that a language is CF you can– Construct a CF grammar that generates it– Construct a NPDA that recognizes it.