Pushdown Automata

advertisement
CS 3240 – Chapter 7
Language
Machine
Grammar
Regular
Finite Automaton
Regular Expression,
Regular Grammar
Context-Free
Pushdown Automaton
Context-Free
Grammar
Recursively
Enumerable
Turing Machine
Unrestricted PhraseStructure Grammar
CS 3240 - Introduction
2

Take an FA and add a stack
 A restricted form of unbounded memory

Operations:
 Pop
 Push
 Ignore (λ)
 (Pop always precedes push)
CS 3240 - Pushdown Automata
3

Three items per transition edge
 <read>,<pop>,<push>
 any or all could be λ

A PDA accepts when:
 An accepting state is reached, and
 The stack is empty
▪ Different from book!
▪
The machine crashes when no move is possible
▪ implicit jail
CS 3240 - Pushdown Automata
4
A deterministic PDA (no choices; λ is okay
sometimes). The stack alphabet (Γ = {X}) can
differ from the input alphabet (Σ = {a, b}) .
Trace aabb…
CS 3240 - Pushdown Automata
5
q0
q0
q0
q1
q1
aabb
abb
bb
b
λ
λ
X
XX
X
λ
Traditional notation (see book):
(q0,aabb, λ) ⊢ (q0,abb,X) ⊢ (q0,bb,XX) ⊢ (q1,b,X) ⊢ (q1,λ, λ)
Also: (q0,aabb,λ) ⊢* (q1,λ, λ)
CS 3240 - Pushdown Automata
(⇒ aabb ∈ L)
6
CS 3240 - Pushdown Automata
7
How would you do a2nbn?
CS 3240 - Pushdown Automata
8
Each b must pop 2 X’s
CS 3240 - Pushdown Automata
9
Is this deterministic?
Trace the string abaacaaba.
CS 3240 - Pushdown Automata
10


Input: (state-1, input character, pop character)
Output: (state-2, push character(s))

Example: The edge (a,λ,a) on previous slide:
δ(q0,a,λ) = (q0,a)

Exercise:
 Rewrite wcwR in functional form
CS 3240 - Pushdown Automata
11
Is this deterministic?
Trace the string abaaaaaba.
Trace the string abaabaaba.
Trace the string abaaaaba.
CS 3240 - Pushdown Automata
12
The grammar:
S → aSb | aSbb | λ
Trace aaabbbb
CS 3240 - Pushdown Automata
13
Trace ababbaab
CS 3240 - Pushdown Automata
14
CS 3240 - Pushdown Automata
15
Reasoning: There must be 2
b’s for every a. When we read
an a, there are three
possibilities:
1)Its 2 b’s have already been
read
2)1 b has been read and 1
remains
3)Both b’s are yet to be read
Try abababbbb.
How would you do Twicea?
CS 3240 - Pushdown Automata
16
CS 3240 - Pushdown Automata
17
CS 3240 - Pushdown Automata
18
CS 3240 - Pushdown Automata
19

Q: set of states
∑: input alphabet
Γ: stack alphabet
δ: Q x (∑∪λ) x (Γ∪λ) → finite subsets of Q x Γ*
q0: start state
F ⊆ Q: final states

(z ⋲ Γ: optional stack start symbol)





CS 3240 - Pushdown Automata
20

Not strictly necessary
 Can serve as a “bottom marker” to allow
detection of an empty stack

A convenience
 Can make things easier to design/understand
 Sometimes handy when seeking an associated
CFG
 Can eliminate some lambda pops
▪ Handy later
CS 3240 - Pushdown Automata
21
CS 3240 - Pushdown Automata
22
CS 3240 - Pushdown Automata
23
CS 3240 - Pushdown Automata
24
CS 3240 - Pushdown Automata
25





How do we know that PDAs are the correct
machine model for CFLs?
1) Must show that for any CFG, there is a PDA
that accepts its language
2) Must show that for any PDA, there is a CFG
that generates its language
The first case is easier than the second!
It can be handy to go back and forth
CS 3240 - Pushdown Automata
26

The leading character is read
The LHS variable is popped
The RHS string is pushed
Initial transition pushes S

See next slide



CS 3240 - Pushdown Automata
27
CS 3240 - Pushdown Automata
28
CS 3240 - Pushdown Automata
29


Very trivial (Yay!)
But the (2-state) PDA is non-deterministic
 State-2 is a final state


1) Push S on the stack; move to state-2
2) For every rule, have a transition that:
 pops the left-hand side and pushes the right-hand side

3) For every character, c, in Σ, have a rule that:
 consumes and pops c simultaneously
CS 3240 - Pushdown Automata
30
S → aSb | aSbb | λ
Trace aaabbbbb: (q0,aaabbbbb,λ) ⊢ (q1,aaabbbbb,S) ⊢
(q1,aaabbbbb,aSbb) ⊢ (q1,aabbbbb,Sbb) ⊢ (q1,aabbbbb,aSbbbb) ⊢
(q1,abbbbb,Sbbbb) ⊢ (q1,abbbbb,aSbbbbb) ⊢ (q1,bbbbb,Sbbbbb) ⊢
(q1,bbbbb,bbbbb) ⊢* (q1,λ,λ)
CS 3240 - Pushdown Automata
31
S → aSbSbS | bSaSbS | bSbSaS | λ
…
And trace bbabaabbb
CS 3240 - Pushdown Automata
32
S => (S) | SS | λ
Derive ()(()) from the grammar.
Then accept it by the machine.
Then find a one-state DPDA for this language.
CS 3240 - Pushdown Automata
33



We need to relate PDA movement to a CFG
production rule somehow
Key: consuming a character in the PDA
corresponds to generating a character in the
CFG
The stack contents must also be part of all
this
CS 3240 - Pushdown Automata
34

PDAs of the form below have a natural
translation to a CFG
 the reverse of CFG-to-PDA conversion
 (conveniently) call the stack start symbol S
 Translate each transition in state-2 into a rule:
▪ c,X,Y ⟺ X → cY
(i.e., <pop> → <char> <push>)
▪ (X cannot be λ)
CS 3240 - Pushdown Automata
35
S → aXS | bYS | λ
X → aXX | bYX | b
Y → bYY | aXY | a
Derive abbbaaba
CS 3240 - Pushdown Automata
36
Go back and find grammars for slides 22,24-25.
Also, work backward from the (()) DPDA to a grammar.
CS 3240 - Pushdown Automata
37



We must also track state changes
Our variables must therefore contain state
and stack information
Very tricky!
CS 3240 - Pushdown Automata
38
Suppose X is on the stack and ‘a’ is read
 What can happen to X?

 It will be popped (and possibly put back)
 It may be replaced by one or more other stack symbols
▪ Which symbols will also later be popped, replaced, etc…
▪ The stack grows and shrinks and grows and shrinks …
 Eventually, as more input is consumed, the effect of having
pushed X on the stack must be erased (or we’ll never reach
an empty stack!)
 And the state may change many times!
CS 3240 - Pushdown Automata
39
… (qi, x1x2…xk, Y1Y2…Yk) ⊢* (qj, x2…xk, Y2…Yk) ⊢* (qn, xk, Yk) ⊢* (qf, λ, λ)
CS 3240 - Pushdown Automata
40

Let the symbol <qAp> represent the sequence of
movements in a PDA that:
 starts in state q
 eventually ends in state p
 eventually removes A and its after-effects from the stack
The symbol <sλf> then represents accepting a valid
string (if s is the start state and f is a final state)
 These symbols will be our variables

 Because they track the machine configuration that accepts
strings
 Just as the grammar will generate those strings
CS 3240 - Pushdown Automata
41

Consider the transition δ(q,a,X) = (p,Y)
 This means that a is consumed, X is popped, we move
directly to state p, and subsequent processing must
eventually erase Y and its follow-on effects

A corresponding grammar rule is:
 <qX?> → a<pY?> (?’s represent the same state)
 We don’t know where we’ll eventually end up when the
stack is back to where it was before the X was first pushed
 All we know is we immediately go through p
 So we entertain all possibilities (see 3 and 4 on next slide)
CS 3240 - Pushdown Automata
42


1) S → <sλf> for all final states, f
2) <qλq> → λ for all states, q
 These will serve as terminators

3) For transitions δ(q,a,X) = (p,Y):
 <qXr> → a<pYr> for all states, r

4) For transitions δ(q,a,X) = (p,Y1Y2):
 <qXr> → a<pY1s><sY2r> for all states, r, s
 And so on, for longer pushed strings
CS 3240 - Pushdown Automata
43

The process requires:
 No multiple pops
▪ So spread them out over multiple states if needed

Also, for every lambda-pop c,λ,X:
 Add an equivalent rule for each letter of Γ (the stack
alphabet) as follows:
▪ (c,X,XX)
▪ (c,Y,XY)
▪ etc.
▪ And keep the original lambda pop!!!
CS 3240 - Pushdown Automata
44
• Call the start state, s, and the final state, f.
• Add the following transition on s: (a,X,XX)
• 1) S → <sλf>
• 2) <sλs> → λ; <fλf> → λ
• Now go through each transition…
CS 3240 - Pushdown Automata
45
δ(s,a,λ) = (s,X):
1.


<sλs> → a<sXs>
<sλf> → a<sXf>
δ(s,a,X) = (s,XX):
2.




<sXs> → a<sXs><sXs>
<sXf> → a<sXs><sXf>
<sXs> → a<sXf><fXs>
<sXf> → a<sXf><fXf>
CS 3240 - Pushdown Automata
46
δ(s,b,X) = (f,λ):
3.


<sXs> → b<fλs>
<sXf> → b<fλf>
δ(f,b,X) = (f,λ):
4.


<fXs> → b<fλs>
<fXf> → b<fλf>
CS 3240 - Pushdown Automata
47
S → <sλf>
<sλs> → a<sXs> | λ
<fλf> → λ
<sλf> → a<sXf>
<sXs> → a<sXs><sXs>
<sXf> → a<sXs><sXf> | a<sXf><fXf> | b<fλf>
<fXf> → b<fλf>
CS 3240 - Pushdown Automata
48
S → <sλf>
<sλs> → a<sXs> | λ
<sλf> → a<sXf>
<sXs> → a<sXs><sXs>
<sXf> → a<sXs><sXf> | a<sXf><fXf> | b
<fXf> → b
CS 3240 - Pushdown Automata
49
S → <sλf>
<sλf> → a<sXf>
<sXf> → a<sXf><fXf> | b
<fXf> → b
CS 3240 - Pushdown Automata
50
S → a<sXf>
<sXf> → a<sXf><fXf> | b
<fXf> → b
CS 3240 - Pushdown Automata
51
S → a<sXf>
<sXf> → a<sXf>b | b
CS 3240 - Pushdown Automata
52
S → aX
X → aXb | b
Done! (finally :-)
CS 3240 - Pushdown Automata
53

Find a CFG for nb = na + 1 using the generic
conversion process
CS 3240 - Pushdown Automata
54

A PDA is deterministic if there are no choices:
 Depends on a state’s <character, pop symbol> pair:
 1) δ(q,a,X) has only one choice (a could be λ), and
 2) If a is not λ, then there is no δ(q,λ,X) edge, and
 3) if X is not λ, then there is no δ(q,a,λ) edge.

NOTE: Some PDAs are inherently nondeterministic (no deterministic equivalent, e.g.,
wwR)
CS 3240 - Pushdown Automata
55

Revisit previous PDAs and check for
determinacy
CS 3240 - Pushdown Automata
56
Languages accepted by
nondeterministic PDA
Languages
accepted by DFA
Languages accepted by
deterministic PDA
CS 3240 - Pushdown Automata
57
Download