Languages and Finite Automata

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