2 Pda
2 Pda
2 Pda
Chapter 6
1
Topics
• Pushdown Automata
• PDAs accepting by final state and empty stack
• Equivalence of PDAs and CFGs
• Deterministic PDAs
2
PDA - the automata for CFLs
• PDA =[ -NFA + “a stack” ]
• Why a stack?
3
Pushdown Automata - Definition
• A PDA, P = ( Q,∑,, δ,q0,Z0,F ) where:
• Q: states of the -NFA
• ∑: input alphabet
• : stack symbols
• δ: transition function
• q0: start state
• Z0: Initial stack top symbol
• F: Final/accepting states
4
δ : The Transition Function
old state input symb. Stack top new state(s) new Stack top(s)
δ : Q x ∑ x => Q x
δ(q,a,X) = {(p,Y), …}
1. state transition from q to p
a X Y
2. a is the next input symbol q p
3. X is the current stack top symbol
4. Y is the replacement for X;
it is in * (a string of stack symbols) Y=? Action
i. Set Y = for: Pop(X) i) Y= Pop(X)
ii. If Y=X: stack top is unchanged
ii) Y=X Pop(X)
iii. If Y=Z1Z2…Zk: X is Push(X)
popped and is replaced by Y in
reverse order (i.e., Z1 will be the iii) Y=Z1Z2..Zk Pop(X)
new stack top) Push(Zk)
Push(Zk-1)
…
Push(Z2)
Push(Z1)
5
PDA as a state diagram
δ(qi,a, X)={(qj,Y)}
a, X / Y Next
qi qj state
6
Example
Let Lwwr = {wwR | w is in (0+1)*}
• CFG for Lwwr : S==> 0S0 | 1S1 |
• PDA for Lwwr :
P := ( Q,∑, , δ,q0,Z0,F )
7
PDA for Lwwr: Transition Diagram
q0 q1 q2
, Z0/Z0
, Z0/Z0 , Z0/Z0
, 0/0
, 1/1 Go to acceptance
Switch to
popping mode
8
PDA for Lwwr
1. δ(q0,0, Z0)={(q0,0Z0)} Initial state of the PDA:
2. δ(q0,1, Z0)={(q0,1Z0)}
q0 q1 q2
, Z0 / Z0 ), ( / , Z0 / Z0
, Z0 / Z0 Go to acceptance (by final state)
Switch to when you see the stack bottom symbol
(, ( / ( (
popping mode
(, Z0 / ( Z0
To allow adjacent
10
blocks of nested paranthesis
Example 2: Language of balanced
parenthesis (another design)
∑ = { (, ) }
(,Z0 / ( Z0 G= {Z0, ( }
(,( / ( ( Q = {q0,q1}
), ( /
start ,Z0/ Z0
q0 q1
,Z0/ Z0
11
PDA’s Instantaneous Description
(ID)
A PDA has a configuration at any given instance: (q,w,y)
• q - current state
• w - remainder of the input (i.e., unconsumed part)
• y - current stack contents as a string from top to bottom
of stack
(q0,1111,Z0)
(q0,1,111Z0) (q1,11,11Z0)
14
Example: L of balanced
parenthesis
,Z0/ Z0 start
start
q0 q1 q0
,Z0/ Z0 ,Z0/ Z0
15
PDAs accepting by final state and
empty stack are equivalent
• PF <= PDA accepting by final state
• PF = (QF,∑, , δF,q0,Z0,F)
• PN <= PDA accepting by empty stack
• PN = (QN,∑, , δN,q0,Z0)
• Theorem:
• (PN==> PF) For every PN, there exists a PF s.t. L(PF)=L(PN)
• (PF==> PN) For every PF, there exists a PN s.t. L(PF)=L(PN)
16
PN==> PF construction
PF: P N: , X0/ X0
, X0/Z0X0 , X0/ X0
New , X0/ X0
start p0 q0 pf
…
, X0 / X0
, X0/ X0
PN
start
q0
start
,X /Z X
0 0 0
,X / X
0 0
p0 q0 pf
18
PF==> PN Construction
PN:
, X0/Z0X0 , any/ , any/
New , any/
start p0 q0 pe
…
, any/
PF
19
Equivalence of PDAs and CFGs
PDA by PDA by
≡
final state empty stack
?
CFG
20
Converting CFG to PDA
Main idea: The PDA simulates the leftmost derivation on a given w, and
upon consuming it fully it either arrives at acceptance (by empty stack)
or non-acceptance.
accept
PDA
OUTPUT
INPUT
w (acceptance by
empty stack)
reject
implements
CFG
21
Converting a CFG into a PDA
Main idea: The PDA simulates the leftmost derivation on a given w, and
upon consuming it fully it either arrives at acceptance (by empty stack)
or non-acceptance.
Steps:
1. Push the right-hand side of the production onto the stack, with a
leftmost symbol at the stack top
2. If stack top is the leftmost variable, then replace it by all its
productions (each possible substitution will represent a distinct
path taken by the non-deterministic PDA)
3. If the stack top has a terminal symbol, and if it matches with the
next symbol in the input string, then pop it
22
Formal Construction of PDA from
CFG Note: Initial stack symbol (S)
same as the start variable
in the grammar
Given: G= (V,T,P,S)
Output: PN = ({q}, T, V U T, δ, q, S)
Before: δ: After:
A
For all A V :
δ(q, ,A) = { (q, ) | “A ==>” P}
…
…
Before: After:
a…
a For all a T: a pop
δ(q,a,a)= { (q, ) }
…
…
23
Example: CFG to PDA
• P: ,A / 01
,A / A1
• δ:
• δ(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
24
Simulating string 0011 on the new PDA …
Leftmost deriv.:
1,1 /
0,0 /
PDA (δ): ,A / 01
S => AS
δ(q, , S) = { (q, AS), (q, )} ,A / A1 => 0A1S
δ(q, , A) = { (q,0A1), (q,A1), (q,01) } ,A / 0A1 => 0011S
δ(q, 0, 0) = { (q, ) } ,S /
=> 0011
δ(q, 1, 1) = { (q, ) } ,S / AS
,S / S
Stack moves (shows only the successful path): q
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
26
Example: Bracket matching
• To avoid confusion, we will use b=“(“ and e=“)”
Let A=[q0Z0q0]
If you were to directly write a CFG: Simplifying,
Let B=[q0Z1q0]
S => b S e S | 0. S => A 0. S => b B S |
1. A => b B A 1. B => b B B | e
2. B => b B B
3. B => e
4. A =>
27
Deterministic PDA: Definition
28
Initial state of the PDA:
q0 q1 q2
, Z0/Z0 , Z0/Z0
, 0/0
, 1/1 Accepts by final state
Switch to To
Toremove
removeguessing,
guessing,
popping mode impose
imposethe theuser
userto
to
insert
insertccininthe
the
middle
middle
30
D-PDA for Lwcwr = {wcwR | c is some
special symbol not in w}
Note:
Note:
••all
alltransitions
transitionshave
have
Grow stack become
0, Z0/0Z0
Pop stack for becomedeterministic
deterministic
1, Z0/1Z0 matching symbols
0, 0/00
0, 1/01 0, 0/
1, 0/10 1, 1/
1, 1/11
q0 q1 q2
c, Z0/Z0 , Z0/Z0
c, 0/0
c, 1/1 Accepts by
Switch to final state
popping mode
31
PDA vs DPDA vs Regular
languages
Lwcwr Lwwr
non-deterministic PDA
32
END
33