Pushdown Automata
PDAs
1
Pushdown Automaton -- PDA
Input String
Stack
States
2
Initial Stack Symbol
Stack
Stack
$
z
bottom
special symbol
3
The States
Input
symbol
Pop
symbol
Push
symbol
a,
b
c
q1
q2
4
q1
a, b c
q2
input
a
a
stack
b
h
e
$
top
c
h
e
$
5
q1
a, c
q2
input
a
stack
b
h
e
$
top
a
c
b
h
e
$
6
q1
a, b
q2
input
a
a
stack
b
h
e
$
top
h
e
$
7
q1
a,
q2
input
a
a
stack
b
h
e
$
top
b
h
e
$
8
Non-Determinism
a, b c
q2
q1
a, b c
q1
q3
, b c
q2
transition
9
NPDA: Non-Deterministic PDA
Example:
a, a
q0
b, a
, q b, a q , $ $ q
3
2
1
10
Execution Example:
Time 0
Input
a a a b
b
b
$
Stack
current
state
a, a
b, a
,
b,
a
,
$
$
q3
q0
q2
q1
11
Time 1
Input
a a a b
b
b
$
Stack
a, a
b, a
,
b,
a
,
$
$
q3
q0
q2
q1
12
Time 2
Input
a a a b
b
b
a
$
Stack
a, a
b, a
,
b,
a
,
$
$
q3
q0
q2
q1
13
Time 3
Input
a a a b
b
a
a
$
b
Stack
a, a
b, a
,
b,
a
,
$
$
q3
q0
q2
q1
14
Time 4
Input
a a a b
b
b
a
a
a
$
Stack
a, a
b, a
,
b,
a
,
$
$
q3
q0
q2
q1
15
Time 5
Input
a a a b
b
b
a
a
a
$
Stack
a, a
b, a
,
b,
a
,
$
$
q3
q0
q2
q1
16
Time 6
Input
a a a b
b
a
a
$
b
Stack
a, a
b, a
,
b,
a
,
$
$
q3
q0
q2
q1
17
Time 7
Input
a a a b
b
a
$
b
Stack
a, a
b, a
,
b,
a
,
$
$
q3
q0
q2
q1
18
Time 8
Input
a a a b
b
b
$
Stack
a, a
b, a
accept
,
b,
a
,
$
$
q3
q0
q2
q1
19
A string is accepted if:
• All the input is consumed
• The last state is a final state
We do not care about the stack contents
20
The input string aaabbb
is accepted by the NPDA:
a, a
b, a
,
b,
a
,
$
$
q3
q0
q2
q1
21
In general,
n n
L {a b : n 0}
is the language accepted by the NPDA:
a, a
b, a
,
b,
a
,
$
$
q3
q0
q2
q1
22
Another NPDA example
NPDA
M
a, a
a, a
b, b
b, b
q0
,
q1
, $ $
q2
23
R
L( M ) {ww }
a, a
a, a
b, b
b, b
q0
,
q1
, $ $
q2
24
Execution Example:
Time 0
Input
a b
b
a
$
a, a
a, a
b, b
b, b
q0
,
q1
, $ $
Stack
q2
25
Time 1
Input
a b
b
a
a
$
a, a
a, a
b, b
b, b
q0
,
q1
, $ $
Stack
q2
26
Time 2
Input
a b
b
b
a
$
a
a, a
a, a
b, b
b, b
q0
,
q1
, $ $
Stack
q2
27
Time 3
Input
a b
b
b
a
$
a
a, a
a, a
b, b
b, b
q0
,
q1
, $ $
Stack
q2
28
Time 4
Input
a b
b
b
a
$
a
a, a
a, a
b, b
b, b
q0
,
q1
, $ $
Stack
q2
29
Time 5
Input
a b
b
a
a
$
a, a
a, a
b, b
b, b
q0
,
q1
, $ $
Stack
q2
30
Time 6
Input
a b
b
a
$
a, a
a, a
b, b
b, b
Stack
accept
q0
,
q1
, $ $
q2
31
Pushing Strings
Input
symbol
Pop
symbol
Push
string
a,
b
w
q1
q2
32
Example:
q1
a, b cdf
q2
input
a
a
stack
b
h
e
$
top
c
d
f
h
e
$
pushed
string
33
Another NPDA example
NPDA
a, $ 0$
a, 0 00
a, 1
M
b, $ 1$
b, 1 11
b, 0
q1
, $ $
q2
34
L( M ) {w : na nb }
a, $ 0$
a, 0 00
a, 1
b, $ 1$
b, 1 11
b, 0
q1
, $ $
q2
35
Execution: Time 0
Input
a b
b
a a b
a, $ 0$
a, 0 00
a, 1
current
state
b, $ 1$
b, 1 11
b, 0
q1
, $ $
$
Stack
q2
36
Time 1
Input
a b
b
a a b
a, $ 0$
a, 0 00
a, 1
b, $ 1$
b, 1 11
b, 0
q1
, $ $
0
$
Stack
q2
37
Time 3
Input
a b
b
b
a, $ 0$
a, 0 00
a, 1
a a
b, $ 1$
b, 1 11
b, 0
q1
, $ $
0
$
Stack
q2
38
Time 4
Input
a b
b
b
a, $ 0$
a, 0 00
a, 1
a a
b, $ 1$
b, 1 11
b, 0
q1
, $ $
1
$
Stack
q2
39
Time 5
Input
a b
b
b
a, $ 0$
a, 0 00
a, 1
a a
b, $ 1$
b, 1 11
b, 0
q1
, $ $
1
1
$
Stack
q2
40
Time 6
Input
a b
b
b
a, $ 0$
a, 0 00
a, 1
a a
b, $ 1$
b, 1 11
b, 0
q1
, $ $
1
1
$
Stack
q2
41
Time 7
Input
a b
b
b
a, $ 0$
a, 0 00
a, 1
a a
b, $ 1$
b, 1 11
b, 0
q1
, $ $
1
$
Stack
q2
42
Time 8
Input
a b
b
b
a, $ 0$
a, 0 00
a, 1
a a
b, $ 1$
b, 1 11
b, 0
q1
, $ $
$
Stack
accept
q2
43
Formalities for NPDAs
44
a,
b
w
q1
q2
Transition function:
(q0 , a, b) {(q2 , w)}
45
a, b w
q2
q1
a, b w
q3
Transition function:
(q0 , a, b) {(q2 , w), (q3 , w)}
46
Formal Definition
Non-Deterministic Pushdown Automaton
NPDA
M (Q, , , , z, F )
States
Input
alphabet
Stack
alphabet
Transition
function
Final
states
Stack
start
symbol
47
Instantaneous Description
( q, u , s )
Current
state
Remaining
input
Current
stack
contents
48
Example:
Instantaneous Description
(q1, bbb, aaa$)
Time 4:
Input
a a a b
a, a
b
b
b, a
a
a
a
$
Stack
,
b,
a
,
$
$
q3
q0
q2
q1
49
Example:
Instantaneous Description
(q2 , bb, aa$)
Time 5:
Input
a a a b
a, a
b
b
b, a
a
a
a
$
Stack
,
b,
a
,
$
$
q3
q0
q2
q1
50
We write:
(q1, bbb, aaa$) (q2 , bb, aa$)
(Time 4)
(Time 5)
51
A computation:
(q0 , aaabbb,$) (q1, aaabbb,$)
(q1, aabbb, a$) (q1, abbb, aa$) (q1, bbb, aaa$)
(q2 , bb, aa$) (q2 , b, a$) (q2 , ,$) (q3 , ,$)
a, a
b, a
,
b,
a
,
$
$
q3
q0
q2
q1
52
(q0 , aaabbb,$) (q1, aaabbb,$)
(q1, aabbb, a$) (q1, abbb, aa$) (q1, bbb, aaa$)
(q2 , bb, aa$) (q2 , b, a$) (q2 , ,$) (q3 , ,$)
For convenience we write:
(q0 , aaabbb,$) (q3 , ,$)
53
Formal Definition
Language of NPDA M :
L( M ) {w : (q0 , w, s ) (q f , , s ' )}
Start state
Final state
54
Example:
(q0 , aaabbb,$) (q3 , ,$)
thus
aaabbb L(M )
NPDA M :
a, a
b, a
,
b,
a
,
$
$
q3
q0
q2
q1
55
(q0 , a b ,$) (q3 , ,$)
n n
thus
n n
a b L(M )
NPDA M :
a, a
b, a
,
b,
a
,
$
$
q3
q0
q2
q1
56
Therefore:
n n
L( M ) {a b : n 0}
NPDA M :
a, a
b, a
,
b,
a
,
$
$
q3
q0
q2
q1
57
Converting
Context-Free Grammars
to
NPDAs
58
An example grammar:
S aSTb
S b
T Ta
T
What is the equivalent NPDA?
59
Grammar:
S aSTb
NPDA:
S b
T Ta
T
q0
, S aSTb
, S b
a, a
, T Ta
b, b
, T
, S
q1
, $ $
q2
60
The NPDA simulates
leftmost derivations of the grammar
L(grammar) = L(NPDA)
61
Grammar:
S aSTb
S b
T Ta
T
A leftmost derivation:
S aSTb abTb abTab abab
62
NPDA execution: Time 0
Input
a b
current
state
q0
a b
, S aSTb
, S b
a, a
, T Ta
b, b
, T
, S
q1
, $ $
$
Stack
q2
63
Time 1
Input
a b
a b
, S aSTb
, S b
a, a
, T Ta
b, b
, T
q0
, S
q1
, $ $
S
$
Stack
q2
64
Time 2
Input
a b
a b
, S aSTb
, S b
a, a
, T Ta
b, b
, T
q0
, S
q1
, $ $
a
S
T
b
$
Stack
q2
65
Time 3
Input
a b
a b
, S aSTb
, S b
a, a
, T Ta
b, b
, T
q0
, S
q1
, $ $
a
S
T
b
$
Stack
q2
66
Time 4
Input
a b
a b
, S aSTb
, S b
a, a
, T Ta
b, b
, T
q0
, S
q1
, $ $
b
T
b
$
Stack
q2
67
Time 5
Input
a b
a b
, S aSTb
, S b
a, a
, T Ta
b, b
, T
q0
, S
q1
, $ $
b
T
b
$
Stack
q2
68
Time 6
Input
a b
a b
, S aSTb
, S b
a, a
, T Ta
b, b
, T
q0
, S
q1
, $ $
T
a
b
$
Stack
q2
69
Time 7
Input
a b
a b
, S aSTb
, S b
a, a
, T Ta
b, b
, T
q0
, S
q1
, $ $
T
a
b
$
Stack
q2
70
Time 8
Input
a b
a b
, S aSTb
, S b
a, a
, T Ta
b, b
, T
q0
, S
q1
, $ $
a
b
$
Stack
q2
71
Time 9
Input
a b
a b
, S aSTb
, S b
a, a
, T Ta
b, b
, T
q0
, S
q1
, $ $
b
$
Stack
q2
72
Time 10
Input
a b
a b
, S aSTb
, S b
a, a
, T Ta
b, b
, T
$
Stack
accept
q0
, S
q1
, $ $
q2
73
In general:
Given any grammar
G
We can construct a NPDA M
With
L(G) L( M )
74
Constructing NPDA M from grammar G :
For any production A w
For any terminal a
, A w
q0
, S
a, a
q1
, $ $
q2
75
Grammar
G
generates string w
if and only if
NPDA
M accepts w
L(G) L( M )
76
Therefore:
For any context-free language
there is an NPDA
that accepts the same language
77
© Copyright 2026 Paperzz