Understanding Pushdown Automata
Understanding Pushdown Automata
PDAs
1
Context-Free Languages
Context-Free Pushdown
Grammars Automata
stack
automaton
2
Pushdown Automaton -- PDA
Input String
Stack
States
3
Initial Stack Symbol
Stack Stack
stack
$ z top
head
bottom
special symbol
4
The States
a, b → c
q1 q2
Alternatively
a,b / c
q1 q2
5
a, b → c
q1 q2
input
a a
stack
b top c
h Replace h
e e
$ $
6
a, → c
q1 q2
input
a a
stack c
b top b
h Push h
e e
$ $
7
a, b →
q1 q2
input
a a
stack
b top
h Pop h
e e
$ $
8
a, →
q1 q2
input
a a
stack
b top b
h No Change h
e e
$ $
9
A Possible Transition
a, $ →
q1 q2
input
a a
stack empty
$ top Pop
10
A Bad Transition
a, b → c
q1 q2
input
a
Empty stack
HALT
a, → c
q1 q2
input
a
Empty stack
HALT
x, y → z
q1 q2
Empty stack
13
A Good Transition
a, $ → b
q1 q2
input
a a
stack
$ top Pop b
14
Non-Determinism
a, b → c q2
q1 , b → c
q1 q2
a, b → c − transition
q3
Example:
a, → a b, a →
q0 , → q1 b, a → q2 , $ → $ q3
16
Execution Example: Time 0
Input
a a a b b b
$
Stack
current a, → a b, a →
state
, → q b, a → q , $ → $ q
q0 1 2 3
17
Time 1
Input
a a a b b b
$
Stack
a, → a b, a →
q0 , → q1 b, a → q2 , $ → $ q3
18
Time 2
Input
a a a b b b a
$
Stack
a, → a b, a →
q0 , → q1 b, a → q2 , $ → $ q3
19
Time 3
Input a
a a a b b b a
$
Stack
a, → a b, a →
q0 , → q1 b, a → q2 , $ → $ q3
20
Time 4
a
Input
a
a a a b b b a
$
Stack
a, → a b, a →
q0 , → q1 b, a → q2 , $ → $ q3
21
Time 5
a
Input
a
a a a b b b a
$
Stack
a, → a b, a →
q0 , → q1 b, a → q2 , $ → $ q3
22
Time 6
Input a
a a a b b b a
$
Stack
a, → a b, a →
q0 , → q1 b, a → q2 , $ → $ q3
23
Time 7
Input
a a a b b b a
$
Stack
a, → a b, a →
q0 , → q1 b, a → q2 , $ → $ q3
24
Time 8
Input
a a a b b b
$
Stack
a, → a b, a →
accept
q0 , → q1 b, a → q2 , $ → $ q3
25
A string is accepted if there is
a computation such that:
26
The input string aaabbb
is accepted by the NPDA:
a, → a b, a →
q0 , → q1 b, a → q2 , $ → $ q3
27
In general,
L = {a b : n 0}
n n
a, → a b, a →
q0 , → q1 b, a → q2 , $ → $ q3
28
Another NPDA example
NPDA M
L( M ) = {ww } R
a, → a a, a →
b, → b b, b →
q0 , → q1 , $ → $ q2
29
Execution Example: Time 0
Input
a b b a
$
Stack
a, → a a, a →
b, → b b, b →
q0 , → q1 , $ → $ q2
30
Time 1
Input
a b b a a
$
Stack
a, → a a, a →
b, → b b, b →
q0 , → q1 , $ → $ q2
31
Time 2
Input
b
a b b a a
$
Stack
a, → a a, a →
b, → b b, b →
q0 , → q1 , $ → $ q2
32
Time 3
Input
b
a b b a
Guess the middle a
of string $
Stack
a, → a a, a →
b, → b b, b →
q0 , → q1 , $ → $ q2
33
Time 4
Input
b
a b b a a
$
Stack
a, → a a, a →
b, → b b, b →
q0 , → q1 , $ → $ q2
34
Time 5
Input
a b b a a
$
Stack
a, → a a, a →
b, → b b, b →
q0 , → q1 , $ → $ q2
35
Time 6
Input
a b b a
$
Stack
a, → a a, a →
b, → b b, b →
accept
q0 , → q1 , $ → $ q2
36
Rejection Example: Time 0
Input
a b b b
$
Stack
a, → a a, a →
b, → b b, b →
q0 , → q1 , $ → $ q2
37
Time 1
Input
a b b b a
$
Stack
a, → a a, a →
b, → b b, b →
q0 , → q1 , $ → $ q2
38
Time 2
Input
b
a b b b a
$
Stack
a, → a a, a →
b, → b b, b →
q0 , → q1 , $ → $ q2
39
Time 3
Input
b
a b b b
Guess the middle a
of string $
Stack
a, → a a, a →
b, → b b, b →
q0 , → q1 , $ → $ q2
40
Time 4
Input
b
a b b b a
$
Stack
a, → a a, a →
b, → b b, b →
q0 , → q1 , $ → $ q2
41
Time 5
Input There is no possible transition.
a b b b Input is not a
consumed
$
Stack
a, → a a, a →
b, → b b, b →
q0 , → q1 , $ → $ q2
42
Another computation on same string:
Input Time 0
a b b b
$
Stack
a, → a a, a →
b, → b b, b →
q0 , → q1 , $ → $ q2
43
Time 1
Input
a b b b a
$
Stack
a, → a a, a →
b, → b b, b →
q0 , → q1 , $ → $ q2
44
Time 2
Input
b
a b b b a
$
Stack
a, → a a, a →
b, → b b, b →
q0 , → q1 , $ → $ q2
45
Time 3
Input b
b
a b b b a
$
Stack
a, → a a, a →
b, → b b, b →
q0 , → q1 , $ → $ q2
46
Time 4 b
Input b
b
a b b b a
$
Stack
a, → a a, a →
b, → b b, b →
q0 , → q1 , $ → $ q2
47
Time 5 b
Input b
No final state b
a b b b is reached a
$
Stack
a, → a a, a →
b, → b b, b →
q0 , → q1 , $ → $ q2
48
There is no computation
that accepts string abbb
abbb L(M )
a, → a a, a →
b, → b b, b →
q0 , → q1 , $ → $ q2
49
A string is rejected if there is
no computation such that:
50
In other words, a string is rejected
if in every computation with this string:
51
Pushing Strings
a, b → w
q1 q2
52
Example:
a, b → cdf
q1 q2
input
a a
c pushed
stack d
top string
b f
h Push h
e e
$ $
53
Another NPDA example
NPDA M
L( M ) = {w : na = nb }
a, $ → 0$ b, $ → 1$
a, 0 → 00 b, 1 → 11
a, 1 → b, 0 →
q1 , $ → $ q2
54
Execution Example: Time 0
Input
a b b a a b
$
a, $ → 0$ b, $ → 1$
Stack
a, 0 → 00 b, 1 → 11
a, 1 → b, 0 →
current
state
q1 , $ → $ q2
55
Time 1
Input
a b b a a b
0
$
a, $ → 0$ b, $ → 1$
Stack
a, 0 → 00 b, 1 → 11
a, 1 → b, 0 →
q1 , $ → $ q2
56
Time 3
Input
a b b b a a
0
$
a, $ → 0$ b, $ → 1$
Stack
a, 0 → 00 b, 1 → 11
a, 1 → b, 0 →
q1 , $ → $ q2
57
Time 4
Input
a b b b a a
1
$
a, $ → 0$ b, $ → 1$
Stack
a, 0 → 00 b, 1 → 11
a, 1 → b, 0 →
q1 , $ → $ q2
58
Time 5
Input
a b b b a a 1
1
$
a, $ → 0$ b, $ → 1$
Stack
a, 0 → 00 b, 1 → 11
a, 1 → b, 0 →
q1 , $ → $ q2
59
Time 6
Input
a b b b a a 1
1
$
a, $ → 0$ b, $ → 1$
Stack
a, 0 → 00 b, 1 → 11
a, 1 → b, 0 →
q1 , $ → $ q2
60
Time 7
Input
a b b b a a
1
$
a, $ → 0$ b, $ → 1$
Stack
a, 0 → 00 b, 1 → 11
a, 1 → b, 0 →
q1 , $ → $ q2
61
Time 8
Input
a b b b a a
$
a, $ → 0$ b, $ → 1$
Stack
a, 0 → 00 b, 1 → 11
a, 1 → b, 0 →
accept
q1 , $ → $ q2
62
Formalities for NPDAs
63
a, b → w
q1 q2
Transition function:
(q1, a, b) = {( q2 , w)}
64
a, b → w q2
q1
a, b → w q3
Transition function:
Input Stack
alphabet Transition Initial start
Stack
function state symbol
alphabet
66
Instantaneous Description
( q, u , s )
Current Current
state Remaining stack
input
contents
67
Example: Instantaneous Description
(q1, bbb, aaa$)
a
Time 4: Input a
a a a b b b a
$
Stack
a, → a b, a →
q0 , → q1 b, a → q2 , $ → $ q3
68
Example: Instantaneous Description
(q2 , bb, aa$)
a
Time 5: Input a
a a a b b b a
$
Stack
a, → a b, a →
q0 , → q1 b, a → q2 , $ → $ q3
69
We write:
70
A computation:
a, → a b, a →
q0 , → q1 b, a → q2 , $ → $ q3
71
(q0 , aaabbb,$) (q1, aaabbb,$)
(q1, aabbb, a$) (q1, abbb, aa$) (q1, bbb, aaa$)
(q2 , bb, aa$) (q2 , b, a$) (q2 , ,$) (q3 , ,$)
(q0 , aaabbb,$) (q3 , ,$)
72
Formal Definition
L( M ) = {w : (q0 , w, s ) (q f , , s ' )}
73
Example:
(q0 , aaabbb,$) (q3 , ,$)
aaabbb L(M )
NPDA M :
a, → a b, a →
q0 , → q1 b, a → q2 , $ → $ q3
74
(q0 , a b ,$) (q3 , ,$)
n n
a b L(M )
n n
NPDA M :
a, → a b, a →
q0 , → q1 b, a → q2 , $ → $ q3
75
Therefore: L( M ) = {a b : n 0}
n n
NPDA M :
a, → a b, a →
q0 , → q1 b, a → q2 , $ → $ q3
76
Problems
# 4:
Design a NPDA to accept the following Language :
L(M) = { anb2n , n ≥ 0 }
77
Time - 0
Input String
a a b b b b
$
a, → 00 b,0 →
Stack
78
Time - 1
Input String
a a b b b b
$
a, → 00 b,0 →
Stack
79
Time - 2
Input String
a a b b b b
0
0
$
a, → 00 b,0 →
Stack
80
Time - 3
Input String
a a b b b b 0
0
0
0
$
a, → 00 b,0 →
Stack
81
Time - 4
Input String
a a b b b b 0
0
0
0
$
a, → 00 b,0 →
Stack
82
Time - 5
Input String
a a b b b b
0
0
0
$
a, → 00 b,0 →
Stack
83
Time - 6
Input String
a a b b b b
0
0
$
a, → 00 b,0 →
Stack
84
Time - 7
Input String
a a b b b b
$
a, → 00 b,0 →
Stack
85
Time - 8
Input String
a a b b b b
“Accept”
$
a, → 00 b,0 →
Stack
86
Problems
# 5:
Design a NPDA to accept the following Language :
87
L(M) = { wcwR, w{a,b}* }
a, → a a, a →
b, → b b, b →
q0 c, → q1 , $ → $ q2
88
Execution Example: Time 0
Input
a b c b a
$
Stack
a, → a a, a →
b, → b b, b →
q0 c, → q1 , $ → $ q2
89
Time 1
Input
a b c b a
a
$
Stack
a, → a a, a →
b, → b b, b →
q0 c, → q1 , $ → $ q2
90
Time 2
Input
b
a b c b a
a
$
Stack
a, → a a, a →
b, → b b, b →
q0 c, → q1 , $ → $ q2
91
Time 3
Input
b
a b c b a
a
$
Stack
a, → a a, a →
b, → b b, b →
q0 c, → q1 , $ → $ q2
92
Time 4
Input
b
a b c b a
a
$
Stack
a, → a a, a →
b, → b b, b →
q0 c, → q1 , $ → $ q2
93
Time 5
Input
a b c b a
a
$
Stack
a, → a a, a →
b, → b b, b →
q0 c, → , $ → $ q2
q1
94
Time 6
Input
a b c b a
$
Stack
a, → a a, a →
b, → b b, b →
accept
q0 c, → q1 , $ → $ q2
95
Problems
# 6:
Design a NPDA to accept the following Language :
96
L(M) = { anbmcn+m , n 0, m0 }
a,$ → 0$
a,0 → 00 b,1 → 11
b,$ → 1$
b,0 → 10 q5
, → q q
q1
2 3
c,1 →
q c,0 →
4 97
Input String
a a b c c c
a,$ → 0$
a,0 → 00 b,1 → 11 $
Stack
b,$ → 1$
b,0 → 10 q5
, → q q
q1
2 3
c,1 →
q c,0 →
4 98
Input String
a a b c c c
a,$ → 0$ 0
a,0 → 00 b,1 → 11 $
Stack
b,$ → 1$
b,0 → 10 q5
, → q q
q1
2 3
c,1 →
q c,0 →
4 99
Input String
a a b c c c
0
a,$ → 0$ 0
a,0 → 00 b,1 → 11 $
Stack
b,$ → 1$
b,0 → 10 q5
, → q q
q1
2 3
c,1 →
q c,0 →
4 100
Input String
a a b c c c
1
0
a,$ → 0$ 0
a,0 → 00 b,1 → 11 $
Stack
b,$ → 1$
b,0 → 10 q5
, → q q
q1
2 3
c,1 →
q c,0 →
4 101
Input String
a a b c c c
1
0
a,$ → 0$ 0
a,0 → 00 b,1 → 11 $
Stack
b,$ → 1$
b,0 → 10 q5
, → q q
q1
2 3
c,1 →
q c,0 →
4 102
Input String
a a b c c c
0
a,$ → 0$ 0
a,0 → 00 b,1 → 11 $
Stack
b,$ → 1$
b,0 → 10 q5
, → q q
q1
2 3
c,1 →
q c,0 →
4 103
Input String
a a b c c c
a,$ → 0$ 0
a,0 → 00 b,1 → 11 $
Stack
b,$ → 1$
b,0 → 10 q5
, → q q
q1
2 3
c,1 →
q c,0 →
4 104
Input String
a a b c c c
a,$ → 0$ 0
a,0 → 00 b,1 → 11 $
Stack
b,$ → 1$
b,0 → 10 q5
, → q q
q1 accept
2 3
c,1 →
q c,0 →
4 105