Professional Documents
Culture Documents
State Control: Pushdown Automata (PDA)
State Control: Pushdown Automata (PDA)
State Control: Pushdown Automata (PDA)
state
control
00011111000
input
a
a
stack
b
a
Pushdown Automata (PDA)
If the input symbol is a and
the top stack symbol is x then
q1 to q2, pop x, push y, advance read head
a, x → y
q1 q2
input: w1w2…wn
w1 w2 w3 … wn
q0 r1 r2 qf
(Q, Σ, Γ, δ, q0, F)
δ: Q × Σℇ × Γℇ → 𝒫(Q × Γℇ)
a, x → y
q1 q2
a, x
→
z
q3
Theorems
Not every nondeterministic
PDA has an equivalent
deterministic PDA
A language is context-free
iff some PDA recognizes it
CFL
vs.
Regular Languages
CFL vs. Regular Languages
PDA to NFA
CFL vs. Regular Languages
NFA to PDA
a
q1 q2
CFL vs. Regular Languages
NFA to PDA
a, ℇ → ℇ
q1 q2
PDA Design
Examples
PDA Design
n n
{0 1 | n ≥ 0}
input: 000111
n n
{0 1 | n ≥ 0}
stack
input: 000111
0, ℇ → 0
q2
n n
{0 1 | n ≥ 0}
stack
input: 000111
0, ℇ → 0
q2
n n
{0 1 | n ≥ 0}
stack
0
input: 000111
0, ℇ → 0
q2
n n
{0 1 | n ≥ 0}
stack
0
0
input: 000111
0, ℇ → 0
q2
n n
{0 1 | n ≥ 0}
0
stack
0
0
input: 000111
0, ℇ → 0
q2
n n
{0 1 | n ≥ 0} 1, 0 → ℇ
1, 0 → ℇ
q3
0
stack
0
0
input: 000111
0, ℇ → 0
q2
n n
{0 1 | n ≥ 0} 1, 0 → ℇ
1, 0 → ℇ
q3
stack
0
0
input: 000111
0, ℇ → 0
q2
n n
{0 1 | n ≥ 0} 1, 0 → ℇ
1, 0 → ℇ
q3
stack
0
input: 000111
0, ℇ → 0
q2
n n
{0 1 | n ≥ 0} 1, 0 → ℇ
1, 0 → ℇ
q3
stack
input: 000111_
0, ℇ → 0
q2
n n
{0 1 | n ≥ 0} 1, 0 → ℇ
1, 0 → ℇ
q3
stack
Does this work?
n n
{0 1 | n ≥ 0} q2
0, ℇ → 0
1, 0 → ℇ
1, 0 → ℇ
q3
n n
{0 1 | n ≥ 0}
ℇ, ℇ → $ 0, ℇ → 0
q1 q2
1, 0 → ℇ
ℇ, $ → ℇ 1, 0 → ℇ
q4 q3
PDA Design
R *
{ww | w ∈ {0, 1} }
R
{ww | w ∈ {0, *
1} }
0, ℇ → 0
ℇ, ℇ → $
q1 q2 1, ℇ → 1
ℇ, ℇ → ℇ
0, 0 → ℇ
ℇ, $ → ℇ
q4 q3 1, 1 → ℇ
PDA Design
i j k
{a b c | i, j, k ≥ 0 and i = j or j = k}
i j k
{a b c | i, j, k ≥ 0 and i = j}
ℇ, ℇ → $ a, ℇ → a
q1 q2
ℇ, ℇ → ℇ
ℇ, $ → ℇ b, a → ℇ
q4 q3
c, ℇ → ℇ
{aibjck | i, j, k ≥ 0 and j = k}
ℇ, ℇ → $ a, ℇ → ℇ
r1 r2
ℇ, ℇ → ℇ
b, ℇ → b
r3
ℇ, ℇ → ℇ
ℇ, $ → ℇ c, b → ℇ
r5 r4
{aibjck | i, j, k ≥ 0 and i=j or j = k}
a, ℇ → ℇ
r2
ℇ, ℇ → $
a, ℇ → a ℇ, ℇ → ℇ
ℇ, ℇ → $
q2 q1 r1
b, ℇ → b
r3
ℇ, ℇ → ℇ
ℇ, ℇ → ℇ
b, a → ℇ
q3 c, b → ℇ
r4
ℇ, $ → ℇ
ℇ, $ → ℇ
q4
r5
c, ℇ → ℇ
{aibjck | i, j, k ≥ 0 and i=j or j = k}
a, ℇ → ℇ
q2
ℇ, ℇ → $
a, ℇ → a ℇ, ℇ → ℇ
ℇ, ℇ → $
q2 q1
b, ℇ → b
q3
ℇ, ℇ → ℇ
ℇ, ℇ → ℇ
b, a → ℇ
q3 c, b → ℇ
q3
ℇ, $ → ℇ
ℇ, $ → ℇ
q4
q4
c, ℇ → ℇ
Pumping Lemma:
Regular Languages
If A is a regular language,
then there is a pumping length p st
if s ∈ A with |s| ≥ p then we can write s = xyz
so that
• ∀i ≥ 0 xyiz ∈ A
• |y| > 0
• |xy| ≤ p
n n
To prove {0 1 | n ≥ 0} is not
regular using the Pumping Lemma