10 Pda
10 Pda
1
PDA - the automata for CFLs
What is it?
FA to Reg Lang, PDA is to CFL
PDA == [ -NFA + “a stack” ]
Why a stack?
4
The language of a PDA
A PDA is nondeterministic
Multiple transitions on same pop/input allowed
Transitions may but do not have to push or pop
P := ( Q,∑, , δ,q0,Z0,F )
6
Initial state of the PDA:
Stack q0
top
PDA for wwR Z0
1. δ(q0,0, Z0)={(q0,0Z0)}
First symbol push on stack
2. δ(q0,1, Z0)={(q0,1Z0)}
3. δ(q0,0, 0)={(q0,00)}
4. δ(q0,0, 1)={(q0,01)}
5. δ(q0,1, 0)={(q0,10)} Grow the stack by pushing
6. δ(q0,1, 1)={(q0,11)} new symbols on top of old
(w-part)
7. δ(q0, , 0)={(q1, 0)}
8. δ(q0, , 1)={(q1, 1)} Switch to popping mode, nondeterministically
9. δ(q0, , Z0)={(q1, Z0)} (boundary between w and wR)
δ(qi,a, X)={(qj,Y)}
a, X / Y Next
qi qj state
8
PDA for L = wwR : Transition Diagram
q0 q1 q2
, Z0/Z0 , Z0/Z0
, 0/0
, 1/1 Go to acceptance
Switch to
popping mode
q0 q1 q2
), ( / , Z0 / Z0
, Z0 / Z0 Go to acceptance (by final state)
Switch to when you see the stack bottom symbo
(, ( / ( (
popping mode
(, Z0 / ( Z0
To allow adjacent
blocks of nested paranthesis 10
Example: language of balanced
paranthesis (another design)
∑ = { (, ) }
(,Z0 / ( Z0 = {Z0, ( }
(,( / ( (
), ( /
Q = {q0,q1}
start ,Z0/ Z0
q0 q1
11
Building a PDA
L = {0n1n: n ≥ 1}
state control
read 0 We remember each 0
push x by pushing x onto the stack
read 1
pop x When we see a 1, we
read 1 pop an x from the stack
pop x
accept We want to accept when
we hit the stack bottom
We’ll use Z0to mark bottom
A PDA in action
state control L = {0n1n: n ≥ 1}
input
read 0
push x 0 0 0 1 1 1
read 1
pop x …
Z0 x x x
read 1
pop x stack
accept
Notation for PDAs
L = {0n1n: n ≥ 1}
read 0 0,Z0/XZ0
q0 0,X/XX
push x
read 1
pop x 1, X /
read 1
pop x q1 1, X /
accept when i/p exhausted &
initial stack symbol is exposed
, Z0/Z0
q2
read, pop / push
Example L = {0n1n: n ≥ 1}
= {0, 1}
0, Z0 / XZ0
q0 0, X/XX = {Z0, x}
(q0, 0, Z0) = {(q0, XZ0)}
1, X /
(q0, 0, X) = {(q0, XX)}
q1 1, X /
(q0, 1, x) = {(q1, )}
(q1, 1, X) = {(q1, )}
, Z0/Z0 (q1, , Z0) = {(q2, Z0)}
q2
: Q ( {}) → subsets of Q *
state input symbol pop symbol state push symbol
Example
L = {w#wR: w {0, 1}*} = {0, 1, #}
#, 0#0, 01#10 L = {0, 1, $}
, 01#1, 0##0 L
, / $
q0 #, 0 / 0 q1 , $ / $ q2
#, 1 / 1
0, $ / 0$ #, $ / $
1, $ / 1$
0, 0 / 00
0, 0 /
0, 1 / 01 1, 1 /
1, 0 / 10 read wR from stack &
1, 1 / 11
match with input
write w on stack
Example
L = {0n1m0m1n | n 0, m 0}
= {0, 1}
0, 0/00
0, Z/0Z 1, 1/11
= {0, 1, Z}
q1 , Z/Z q2
1, Z/1Z input: 0n 1m 0m 1n
1, 0/10 , Z/Z
0, 1/ stack: 0n 1m
q5 q4 , Z/Z q3
, Z/Z 1, 0/
1, 0/ 0, 1/
Exercise
L = {w: w has same number 0s and 1s} = {0, 1}
Strategy: Stack keeps track of excess of 0s or 1s
If at the end, stack is empty, number is equal
PDA’s Instantaneous Description (ID)
A PDA has a configuration at any given instance:
(q,w,α)
q - current state
w - remainder of the input (i.e., unconsumed part)
α - current stack contents as a string from top to
bottom of stack
If δ(q,a, X)={(p, α)} is a transition, then the following are also true:
(q, a, X ) |--- (p,, α)
(q0,1,111Z0) (q1,11,11Z0)
Acceptance by…
PDAs that accept by final state:
For a PDA P, the language accepted by P,
denoted by L(P) by final state, is: Checklist:
{w | (q0,w,Z0) |---* (q,, A) }, s.t., q F - input exhausted?
- in a final state?
25
How to convert an empty stack PDA into a final state PDA?
PN==> PF construction
Whenever PN’s stack becomes empty, make PF go to
a final state without consuming any addition symbol
To detect empty stack in PN: PF pushes a new stack
symbol X0 (not in of PN) initially before simultating
PN
start
q0
start
,X0/Z0X0 ,X0/ X0
p0 q0 pf
PF==> PN construction
Main idea:
Whenever PF reaches a final state, just make an -transition into a
new end state, clear out the stack and accept
Danger: What if PF design is such that it clears the stack midway
without entering a final state?
to address this, add a new start symbol X0 (not in of PF)
PN = (Q U {p0,pe}, ∑, U {X0}, δN, p0, X0)
PN:
, X0/Z0X0 , any/ , any/
New
start p0 q0 , any/ pe
…
, any/
PF
28
Equivalence of PDAs and CFGs
29
CFGs == PDAs ==> CFLs
PDA by PDA by
≡
final state empty stack
?
CFG
30
This is same as: “implementing a CFG using a PDA”
accept
OUTPUT
PDA
INPUT
w (acceptance
by empty
stack) reject
implements
CFG
31
This is same as: “implementing a CFG using a PDA”
32
Formal construction of PDA from
CFG Note: Initial stack symbol (S)
same as the start variable
in the grammar
Given: G= (N,,P,S)
Output: PN = ({q}, , N U , δ, q, S)
δ:
For all A N , add the following
Before: After:
A
transition(s) in the PDA:
…
…
δ(q, ,A) = { (q, ) | A → P}
Before:
For all a , add the following After: a…
a transition(s) in the PDA: a pop
…
δ(q,a,a) = { (q, ) }
…
33
Example: CFG to PDA
1,1 /
G = ( {S,A}, {0,1}, P, S) 0,0 /
,A / 01
,A / A1
P: ,A / 0A1
,S /
S → AS | ,S / AS
A → 0A1 | A1 | 01 ,S / S
q
PDA = ({q}, {0,1}, {0,1,A,S}, δ, q, S)
δ:
δ(q, , S) = { (q, AS), (q, )}
δ(q, , A) = { (q,0A1), (q,A1), (q,01) }
δ(q, 0, 0) = { (q, ) }
δ(q, 1, 1) = { (q, ) } How will this new PDA work?
Lets simulate string 0011
34
Simulating string 0011 on the new PDA …
Leftmost deriv.:
1,1 /
0,0 /
PDA (δ): ,A / 01 S => AS
,A / A1
δ(q, , S) = { (q, AS), (q, )} => 0A1S
,A / 0A1
δ(q, , A) = { (q,0A1), (q,A1), (q,01) } ,S / => 0011S
δ(q, 0, 0) = { (q, ) } ,S / AS
δ(q, 1, 1) = { (q, ) } => 0011
0 0
A A 1 1
A 1 1 1 1 1 Accept by
S S S S S S S S
empty stack
0 0 1 1
38
Deterministic PDAs
39
This PDA for wwR is non-deterministic
q0 q1 q2
, Z0/Z0 , Z0/Z0
, 0/0
, 1/1 Accepts by final state
Switch to To remove
popping mode guessing,
impose the user
to insert c in the
middle 40
Example shows that: Nondeterministic PDAs ≠ D-PDAs
q0 q1 q2
c, Z0/Z0 , Z0/Z0
c, 0/0
c, 1/1 Accepts by
Switch to final state
popping mode
41
Deterministic PDA: Definition
A PDA is deterministic if and only if:
1. δ(q,a,X) has at most one member for any
a ∑ U {}
42
PDA vs DPDA vs Regular
languages
Lwcwr Lwwr
non-deterministic PDA
43
Summary
PDAs for CFLs and CFGs
Non-deterministic
Deterministic
PDA acceptance types
1. By final state
2. By empty stack
PDA
IDs, Transition diagram
Equivalence of CFG and PDA
CFG => PDA construction
PDA => CFG construction 44