Chapter 5 PDA
Chapter 5 PDA
Push-down Automata
By
Dr Zalmiyah Zakaria
Push-Down Automata
• Regular expressions are string generators – they
tell us how to generate all strings in a language L.
• Finite Automata (DFA, NFA) are string acceptors –
they tell us if a specific string w is in L.
• CFGs are string generators
• Are there string acceptors for Context-Free
languages?
• YES! Push-down automata
or
27
Pushdown Automaton -- PDA
Input String
Stack
States
28
Initial Stack Symbol
Stack Stack
stack
$ z top
head
30
a, b c
q1 q2
input
a a
stack
b top c
h Replace h
e e
$ $ 31
a, c
q1 q2
input
a a
stack c
b top b
h Push h
e e
$ $ 32
a, b
q1 q2
input
a a
stack
b top
h Pop h
e e
$ $ 33
a,
q1 q2
input
a a
stack
b top b
h No Change h
e e
$ $ 34
Empty Stack
a, $
q1 q2
input
a a
stack empty
$ top Pop
a, $ b
q1 q2
input
a a
stack
$ top Pop b
36
Non-Determinism
PDAs are non-deterministic
Allowed non-deterministic transitions
q2
a, b c
, b c
q1 q1 q2
a, b c -transition
q3
37
Example PDA
PDA M,
L(M) = {anbn : n 0}
a, a b, a
q0 , q b, a q , $ $ q
1 2 3
38
Basic Idea: L(M) = {anbn : n 0}
3. Match
a, a b, a found
q0 , q b, a q , $ $ q
1 2 3
39
Execution Example: Time 0
Input
a a a b b b $
Stack
current
state a, a b, a
q0 , q b, a q , $ $ q
1 2 3
40
Time 1
Input
a a a b b b
$
Stack
a, a b, a
q0 , q1 b, a q2 , $ $ q3
41
Time 2
Input
a a a b b b a
$
Stack
a, a b, a
q0 , q1 b, a q2 , $ $ q3
42
Time 3
Input a
a a a b b b a
$
Stack
a, a b, a
q0 , q1 b, a q2 , $ $ q3
43
Time 4 a
Input
a
a a a b b b a
$
Stack
a, a b, a
q0 , q1 b, a q2 , $ $ q3
44
Time 5 a
Input
a
a a a b b b a
$
Stack
a, a b, a
q0 , q1 b, a q2 , $ $ q3
45
Time 6
Input a
a a a b b b a
$
Stack
a, a b, a
q0 , q1 b, a q2 , $ $ q3
46
Time 7
Input
a a a b b b a
$
Stack
a, a b, a
q0 , q1 b, a q2 , $ $ q3
47
Time 1
Input
a a a b b b
$
Stack
a, a b, a
accept
q0 , q1 b, a q2 , $ $ q3
48
A string is accepted if there is
a computation such that:
a, a b, a
q0 , q1 b, a q2 , $ $ q3
50
In general, L = {anbn : n 0}
is the language accepted by the PDA:
a, a b, a
q0 , q1 b, a q2 , $ $ q3
51
Rejection Example: Time 0
Input
a a b
$
Stack
current a, a b, a
state
q0 , q b, a q , $ $ q
1 2 3
52
Rejection Example: Time 1
Input
a a b
$
Stack
current a, a b, a
state
q0 , q1 b, a q2 , $ $ q3
53
Rejection Example: Time 2
Input
a a b a
$
Stack
current a, a b, a
state
q0 , q1 b, a q2 , $ $ q3
54
Rejection Example: Time 3
Input a
a a b a
$
Stack
current a, a b, a
state
q0 , q1 b, a q2 , $ $ q3
55
Rejection Example: Time 4
Input a
a a b a
$
Stack
current a, a b, a
state
q0 , q1 b, a q2 , $ $ q3
56
Rejection Example: Time 4
Input a
a a b a
$
Stack
reject
current a, a b, a
state
q0 , q1 b, a q2 , $ $ q3
57
The input string aab
is rejected by the PDA:
a, a b, a
q0 , q1 b, a q2 , $ $ q3
58
A string is rejected if there is
no computation such that:
q0 , q1 , $ $ q2
60
Basic Idea: L (M) = {vvR : v {a,b}*}
q0 , q1 , $ $ q2
61
Execution Example: Time 0
Input
a b b a
$
Stack
a, a a, a
b, b b, b
q0 , q1 , $ $ q2
62
Time 1
Input
a b b a a
$
Stack
a, a a, a
b, b b, b
q0 , q1 , $ $ q2
63
Time 2
Input
b
a b b a a
$
Stack
a, a a, a
b, b b, b
q0 , q1 , $ $ q2
64
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
65
Time 4
Input
b
a b b a a
$
Stack
a, a a, a
b, b b, b
q0 , q1 , $ $ q2
66
Time 5
Input
a b b a a
$
Stack
a, a a, a
b, b b, b
q0 , , $ $ q2
q1 67
Time 6
Input
a b b a
$
Stack
a, a a, a
b, b b, b
Accept
q0 , q1 , $ $ q2
68
Rejection Example: Time 0
Input
a b b b
$
Stack
a, a a, a
b, b b, b
q0 , q1 , $ $ q2
69
Time 1
Input
a b b b a
$
Stack
a, a a, a
b, b b, b
q0 , q1 , $ $ q2
70
Time 2
Input
b
a b b b a
$
Stack
a, a a, a
b, b b, b
q0 , q1 , $ $ q2
71
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
72
Time 4
Input
b
a b b b a
$
Stack
a, a a, a
b, b b, b
q0 , q1 , $ $ q2
73
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 , , $ $ q2
q1 74
Another computation on same string: Time 0
Input
a b b b
$
Stack
a, a a, a
b, b b, b
q0 , q1 , $ $ q2
75
Time 1
Input
a b b b a
$
Stack
a, a a, a
b, b b, b
q0 , q1 , $ $ q2
76
Time 2
Input
b
a b b b a
$
Stack
a, a a, a
b, b b, b
q0 , q1 , $ $ q2
77
Time 3
Input b
b
a b b b a
$
Stack
a, a a, a
b, b b, b
q0 , q1 , $ $ q2
78
Time 4 b
Input b
b
a b b b a
$
Stack
a, a a, a
b, b b, b
q0 , q1 , $ $ q2
79
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
80
There is no computation
that accepts string abbb
abbb L(M)
a, a a, a
b, b b, b
q0 , q1 , $ $ q2
81
Another PDA example
L (M) = {w {a,b}*:
in every prefix v, na(v) nb(v)}
a, a
b, a
PDA M
q0
82
Execution Example: Time 0
Input
a a b
a, a $
b, a Stack
b, $
q0
83
Time 1
Input
a a b a
a, a $
b, a Stack
b, $
q0
84
Time 2
Input
a
a a b a
a, a $
b, a Stack
b, $
q0
85
Time 3
Input
a a b a
a, a $
b, a Stack
b, $
Accept
q0
86
Rejection Example: Time 0
Input
a b b b
a, a $
b, a Stack
b, $
q0
87
Time 1
Input
a b b b a
a, a $
b, a Stack
b, $
q0
88
Time 2
Input
a b b b
a, a $
b, a Stack
b, $
q0
89
Time 3
Input
a b b b
a, a
b, a Stack
b, $
q0
90
Time 4
Input
a b b b
a, a
b, a Stack
b, $
q1
a, b w q2
92
Example:
a, b cdf
q1 q2
input
a a
c pushed
stack d
top string
b f
h Push h
e e
$ $ 93
Another PDA example
L (M) = {w {a,b}*: na(w) = nb(w)}
PDA M
a, $ 0$ b, $ 1$
a, 0 00 b, 1 11
a, 1 b, 0
q1
, $ $ q2
94
Execution Example: Time 0
Input
a b b b a a
$
a, $ 0$ b, $ 1$
Stack
a, 0 00 b, 1 11
a, 1 b, 0
current
state
q1
, $ $ q2
95
Time 1
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
96
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
97
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
98
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
99
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
100
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
101
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
102
Formalities for PDAs
103
q1
a, b w q2
Transition function:
104
q2
a, b w
q1
a, b w q3
Transition function:
M (Q, Σ, Γ, δ, q0 , z, F ) Final
States states
Input Stack
alphabet Transition start
Initial
Stack
function state symbol
alphabet
106
Instantaneous Description
( q, u , s )
Current Current
Remaining
state stack
input
contents
107
Example: Instantaneous Description
(q1, bbb, aaa$)
a
Time 4: Input a
a a a b b b a
$
a, a b, a Stack
q0 , q1 b, a q2 , $ $ q3
108