CS242 - Module 6
CS242 - Module 6
26/12/2021
Theory of Computing
This Presentation is mainly dependent on the textbook: Introduction to Automata Theory, Languages, and Computation: Global Edition, 3rd edition (2013) PHI
by John E. Hopcroft, Rajeev Motwani and Jeffrey D. Ullman
• Definitions of Pushdown Automata
PDA - The automata for CFLs
• PDA is to CFLs what FA to Regular Languages
• The pushdown automaton is essentially an -NFA with the addition of
a stack.
• The stack can be read, pushed and popped only at the top just like
the stack data structure.
• Two different versions of the pushdown automaton:
• that accepts by entering an accepting state like finite automata do
• another version that accepts by emptying its stack (regardless of its present
state)
• Grammars can be converted to equivalent PDA and vice-versa.
8
Pushdown Automata - Definition
9
δ : 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
2. a is the next input symbol a X Y
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)
ii. If Y=X: stack top is unchanged i) Y= Pop(X)
iii. If Y=Z1Z2…Zk: X is popped and ii) Y=X Pop(X)
is replaced by Y in reverse order Push(X)
(i.e., Z1 will be the new stack top)
iii) Y=Z1Z2..Zk Pop(X)
Push(Zk)
Push(Zk-1)
…
Push(Z2)
Push(Z1)
10
• Languages of PDA
Example
12
Initial state of the PDA:
1. δ(q0,0, Z0)={(q0,0Z0)}
2. δ(q0,1, Z0)={(q0,1Z0)} First symbol push on stack
3. δ(q0,0, 0)={(q0,00)}
4. δ(q0,0, 1)={(q0,01)} Grow the stack by pushing
5. δ(q0,1, 0)={(q0,10)} new symbols on top of old
6. δ(q0,1, 1)={(q0,11)} (w-part)
a, X / Y Next
qi qj state
14
PDA for Lwwr: Transition Diagram
Grow stack ∑ = {0, 1}
0, Z0/0Z0 = {Z0, 0, 1}
1, Z0/1Z0 Pop stack for Q = {q0, q1, q2}
0, 0/00 matching symbols
0, 1/01
1, 0/10 0, 0/
1, 1/11 1, 1/
, Z0/Z0 q0 q1 q2
, Z0/Z0 , Z0/Z0
, 0/0
, 1/1 Go to acceptance
Switch to
popping mode
15
Example 2: language of balanced parenthesis
Pop stack for ∑ = { (, ) }
matching symbols = {Z0, ( }
Grow stack Q = {q0, q1, q2}
(, Z0 / ( Z0
(, ( / ( ( ), ( /
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
blocks of nested paranthesis
16
Example 2: language of balanced parenthesis
(another design)
∑ = { (, ) }
(,Z0 / ( Z0 = {Z0, ( }
(,( / ( ( Q = {q0, q1}
), ( /
start ,Z0/ Z0
q0 q1
,Z0/ Z0
17
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
If δ(q, a, X)={(p, A)} is a transition, then the following are also true:
• (q, a, X ) |--- (p, , A)
• (q, aw, XB ) |--- (p, w, AB)
|--- sign is called a “turnstile notation” and represents one
move
|---* sign represents a sequence of moves
18
How does the PDA for Lwwr work on input “1111”?
All moves made by the non-deterministic PDA
(q0,1111,Z0)
(q0,1,111Z0) (q1,11,11Z0)
22
PDAs accepting by final state and empty stack
are equivalent
24
PN==> PF construction
How to convert an empty stack PDA into a final state PDA?
PF: PN: , X0 / X0
, X0/Z0X0 , X 0 / X 0
New
p0 q0
, X 0 / X 0 pf
start …
, X0 / X0
, X 0 / X0
25
Example: Matching parenthesis “(” “)”
PN: ( {q0}, {(,)}, {Z0,Z1}, δN, q0, Z0 ) P f: ( {p0,q0 ,pf}, {(,)}, {X0,Z0,Z1}, δf, p0, X0 , pf)
start start
,X0/Z0X0 ,X0/ X0
q0 q0
p0 pf
26
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
p0 q0
, any/ pe
start …
, any/
PF
27
• Equivalence of PDAs and CFGs
CFGs == PDAs ==> CFLs
PDA by PDA by
≡
final state empty stack
?
CFG
29
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
30
Converting a CFG into a PDA
This is same as: “implementing a CFG using 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
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 stack top has a terminal symbol, and if it matches with the next
symbol in the input string, then pop it
State is inconsequential (only one state is needed)
31
Formal construction of PDA from CFG
…
Before: After: a…
a a pop
…
…
32
Example: CFG to PDA
• δ: ,S / AS
,S / S
• δ(q, , S) = { (q, AS), (q, )} 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
33
Simulating string 0011 on the new PDA …
Leftmost deriv.:
1,1 /
0,0 /
PDA (δ): ,A / 01 S => AS
,A / A1 => 0A1S
δ(q, , S) = { (q, AS), (q, )}
,A / 0A1
δ(q, , A) = { (q, 0A1), (q, A1), (q, 01) } ,S / => 0011S
δ(q, 0, 0) = { (q, ) } ,S / AS => 0011
δ(q, 1, 1) = { (q, ) }
,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
36
Example: Bracket matching
37
Two ways to build a CFG
38
• Deterministic Pushdown Automata
This PDA for Lwwr is non-deterministic
Grow stack
0, Z0/0Z0
Why does it have to
1, Z0/1Z0 Pop stack for be nondeterministic?
0, 0/00 matching symbols
0, 1/01
1, 0/10 0, 0/
1, 1/11 1, 1/
q0 q1 q2
, Z0/Z0 , Z0/Z0
, 0/0
, 1/1 Accepts by final state
Switch to To remove guessing,
popping mode impose the user to
insert c in the middle
40
D-PDA for Lwcwr = {wcwR | c is some special
symbol not in w}
Example shows that: Nondeterministic PDAs ≠ DPDAs
Note:
• all transitions have
Grow stack become deterministic
0, Z0/0Z0
Pop stack for
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
41
Deterministic PDA: Definition
42
PDA vs DPDA vs Regular languages
Lwcwr
Lwwr
D-PDA
Regular languages
non-deterministic PDA
43
Main Reference
1. Definitions of Pushdown Automata
2. Languages of PDA
3. Equivalence of PDAs and CFGs
4. Deterministic Pushdown Automata
(Introduction to Automata Theory, Languages, and Computation
(2013) Global Edition 3rd Edition)
Additional References
https://people.eecs.berkeley.edu/~sseshia/172/lectures/Lecture8.pdf
http://www.iitg.ac.in/gkd/ma513/oct/oct11/note.pdf
Thank You