Transcript Lecture 31

Lecture 31
• Pushdown Automata (PDA’s)
– Another example
1
Palindromes
• Let PAL be the set of palindromes over {a,b}
– Let PAL1 be the following related language:
• {wcwr | w consists only of a’s and b’s}
– we add c to the input alphabet as a special “marker” character
– Strings in PAL1
» aca, bcb, abcba, aabcbaa, c
– strings not in PAL1
» aaca, aaccaa, abccba, abcb, abba
– Let PAL2 be the set of even length palindromes
• {wwr | w consists only of a’s and b’s}
2
PAL1
• Lets first construct a PDA for PAL1
• Basic ideas
– Have one state remember first “half” of string
– Have one state “match” second half of string to
first half
– Transition between these two states when the
first c is encountered
3
PDA for PAL1
• M = (Q, S, G, q0, Z, F, d)
–
–
–
–
–
–
Q = {q0, qm, qf}
S = {a, b, c}
G = {Z, a, b}
q0 = q 0
Z=Z
F = {qf}
4
Transition Function
Trans Current Input Top of Next Stack
#
State Char. Stack State Update
------------------------------------------------------1
q0
a
Z
q0
aZ
2
q0
a
a
q0
aa
3
q0
a
b
q0
ab
4
5
6
q0
q0
q0
b
b
b
Z
a
b
q0
q0
q0
bZ
ba
bb
7
8
9
q0
q0
q0
c
c
c
Z
a
b
qm
qm
qm
Z
a
b
10
11
12
qm
qm
qm
a
b
l
a
b
Z
qm
qm
qf
l
l
Z
First three transitions push a on
top of the stack
Second three transitions push b
on the stack
Third three transitions switch
state q0 to qm
No change to stack
Transitions 10 and 11 “match”
characters from first and last
half of input string
5
Notation comment
Trans Current Input Top of Next Stack
#
State Char. Stack State Update
------------------------------------------------------1
q0
a
Z
q0
aZ
2
q0
a
a
q0
aa
3
q0
a
b
q0
ab
4
5
6
q0
q0
q0
b
b
b
Z
a
b
q0
q0
q0
bZ
ba
bb
7
8
9
q0
q0
q0
c
c
c
Z
a
b
qm
qm
qm
Z
a
b
10
11
12
qm
qm
qm
a
b
l
a
b
Z
qm
qm
qf
l
l
Z
We might represent transition 1
in two other ways
d(q0,a,Z) = (q0, aZ)
(q0, a, Z, q0, aZ)
6
Computation Tree 1
Trans Current Input Top of Next Stack
#
State Char. Stack State Update
------------------------------------------------------1
q0
a
Z
q0
aZ
2
q0
a
a
q0
aa
3
q0
a
b
q0
ab
4
5
6
q0
q0
q0
b
b
b
Z
a
b
q0
q0
q0
bZ
ba
bb
7
8
9
q0
q0
q0
c
c
c
Z
a
b
qm
qm
qm
Z
a
b
10
11
12
qm
qm
qm
a
b
l
a
b
Z
qm
qm
qf
l
l
Z
(q0, abcba, Z)
(q0, bcba, aZ)
(q0, cba, baZ)
(qm, ba, baZ)
(qm, a, aZ)
(qm, l, Z)
(qf, l, Z)
7
Computation Tree 2
Trans Current Input Top of Next Stack
#
State Char. Stack State Update
------------------------------------------------------1
q0
a
Z
q0
aZ
2
q0
a
a
q0
aa
3
q0
a
b
q0
ab
4
5
6
q0
q0
q0
b
b
b
Z
a
b
q0
q0
q0
bZ
ba
bb
7
8
9
q0
q0
q0
c
c
c
Z
a
b
qm
qm
qm
Z
a
b
10
11
12
qm
qm
qm
a
b
l
a
b
Z
qm
qm
qf
l
l
Z
(q0, abcab, Z)
(q0, bcab, aZ)
(q0, cab, baZ)
(qm, ab, baZ)
8
Computation Tree 3
Trans Current Input Top of Next Stack
#
State Char. Stack State Update
------------------------------------------------------1
q0
a
Z
q0
aZ
2
q0
a
a
q0
aa
3
q0
a
b
q0
ab
4
5
6
q0
q0
q0
b
b
b
Z
a
b
q0
q0
q0
bZ
ba
bb
7
8
9
q0
q0
q0
c
c
c
Z
a
b
qm
qm
qm
Z
a
b
10
11
12
qm
qm
qm
a
b
l
a
b
Z
qm
qm
qf
l
l
Z
(q0, acab, Z)
(q0, cab, aZ)
(qm, ab, aZ)
(qm, b, Z)
(qf, b, Z)
9
PAL2
• Lets now construct a PDA for PAL
• What is harder this time?
– When do we switch from putting strings on the
stack to matching?
– Example
• After seeing aab, should we switch to match mode
or stay in stack mode?
– Solution
• Do both using nondeterminism
10
PDA for PAL2
• M = (Q, S, G, q0, Z, F, d)
–
–
–
–
–
–
Q = {q0, qm, qf}
S = {a, b}
G = {Z, a, b}
q0 = q 0
Z=Z
F = {qf}
11
Transition Function
Trans Current Input Top of Next Stack
#
State Char. Stack State Update
------------------------------------------------------1
q0
a
Z
q0
aZ
2
q0
a
a
q0
aa
3
q0
a
b
q0
ab
4
5
6
q0
q0
q0
b
b
b
Z
a
b
q0
q0
q0
bZ
ba
bb
7
8
9
q0
q0
q0
l
l
l
Z
a
b
qm
qm
qm
Z
a
b
10
11
12
qm
qm
qm
a
b
l
a
b
Z
qm
qm
qf
l
l
Z
First three transitions push a on
top of the stack
Second three transitions push b
on the stack
Third three transitions switch
state q0 to qm
Note now that one of
transitions 7, 8, and 9 can be
used whenever transitions 16 are used.
12
Computation Tree 1
Trans Current Input Top of Next Stack
#
State Char. Stack State Update (q0, abba, Z)
------------------------------------------------------1
q0
a
Z
q0
aZ
(q0, bba, aZ)
2
q0
a
a
q0
aa
3
q0
a
b
q0
ab
(q0, ba, baZ)
4
5
6
q0
q0
q0
b
b
b
Z
a
b
q0
q0
q0
bZ
ba
bb
7
8
9
q0
q0
q0
l
l
l
Z
a
b
qm
qm
qm
Z
a
b
10
11
12
qm
qm
qm
a
b
l
a
b
Z
qm
qm
qf
l
l
Z
(qm, abba, Z)
(qm, bba, aZ)
(q0, a, bbaZ)
(q0, l, abbaZ)
(qf, abba, Z)
(qm, ba, baZ)
(qm, a, bbaZ)
(qm, l, abbaZ)
(qm, a, aZ)
(qm, l, Z)
(qf, l, Z)
13
Computation Tree 2
Trans Current Input Top of Next Stack
#
State Char. Stack State Update
------------------------------------------------------1
q0
a
Z
q0
aZ
2
q0
a
a
q0
aa
3
q0
a
b
q0
ab
4
5
6
q0
q0
q0
b
b
b
Z
a
b
q0
q0
q0
bZ
ba
bb
7
8
9
q0
q0
q0
l
l
l
Z
a
b
qm
qm
qm
Z
a
b
10
11
12
qm
qm
qm
a
b
l
a
b
Z
qm
qm
qf
l
l
Z
(q0, aba, Z)
(q0, ba, aZ)
(qm, aba, Z)
(q0, a, baZ)
(qm, ba, aZ)
(q0, l, abaZ)
(qf, aba, Z)
(qm, a, baZ)
(qm, l, abaZ)
14
PAL
• Challenge
– Construct a PDA for PAL
– First step
• Construct a PDA for odd length palindromes
– Then
• Combine PDA’s for odd length and even length
palindromes
15