500 likes | 983 Views
Pushdown Automata. There are context-free languages that are not regular. Finite automata cannot recognize all context-free languages. Pushdown Automata. {a, b}* is regular. {a k b k | k is a constant} is regular. {a n b n | n 0 } is not regular. Finite Automata. Input file.
E N D
Pushdown Automata • There are context-free languages that are not regular. • Finite automata cannot recognize all context-free languages.
Pushdown Automata • {a, b}* is regular. • {akbk | k is a constant} is regular. • {anbn | n 0} is not regular.
Finite Automata Input file Control unit q0 yes/no
Pushdown Automata Input file Control unit q0 Stack yes/no
Non-deterministic Pushdown Automata (NPDA) M = (Q, , , , q0, z, F) Q: finite set of internal states : finite set of symbols - input alphabet : finite set of symbols - stack alphabet : Q ({}) finite subsets of Q * transition function q0 Q: initial state z : stack start symbol F Q: set of final states
Non-deterministic Pushdown Automata (NPDA) : Q ({}) finite subsets of Q * stack top stack top replacement
Example (q1, a, b) = {(q2, cd), (q3, )} c d q2 b q1 q3
Example M = (Q, , , , q0, z, F) Q = {q0, q1, q2, q3} (q0, a, 0) = {(q1, 10), (q3, )} = {a, b} (q0, , 0) = {(q3, )} = {0, 1} (q1, a, 1) = {(q1, 11)} z = 0 (q1, b, 1) = {(q2, )} F = {q3} (q2, b, 1) = {(q2, )} (q2, , 0) = {(q3, )}
Instantaneous Description (q, w, u) current state unread part of stack contents input string
Instantaneous Description move: (q1, aw, bx) | (q2, w, yx) iff (q2, y) (q1, a, b)
Instantaneous Description (q1, x, y) |*M(q2, u, v) (q1, x, y) |+M(q2, u, v)
Language accepted by NPDA Let M = (Q, , , , q0, z, F) be an NPDA. L(M) = {w * | (q0, w, z) |*M(qf, , u), qf F, u *}
Example L = {w {a, b}* | na(w) = nb(w)} M = (Q, , , , q0, z, F) ?
Example L = {w {a, b}* | na(w) = nb(w)} M = (Q, , , , q0, z, F) Q = {q0, qf} (q0, , z) = {(qf, z)} = {a, b} (q0, a, z) = {(q0, 0z)} = {0, 1, z} (q0, b, z) = {(q0, 1z)} F = {qf} (q0, a, 0) = {(q0, 00)} (q0, b, 0) = {(q0, )} (q0, a, 1) = {(q0, )} (q0, b, 1) = {(q0, 11)}
Example L = {wwR | w {a, b}+} M = (Q, , , , q0, z, F) ?
Example L = {wwR | w {a, b}+} M = (Q, , , , q0, z, F) Q = {q0, q1, q2} = {a, b} = {a, b, z} F = {q2} (q0, a, a) = {(q0, aa)} (q0, , a) = {(q1, a)} (q0, b, a) = {(q0, ba)} (q0, , b) = {(q1, b)} (q0, a, b) = {(q0, ab)} (q0, b, b) = {(q0, bb)} (q1, a, a) = {(q1, )} (q0, a, z) = {(q0, az)} (q1, b, b) = {(q1, )} (q0, b, z) = {(q0, bz)} (q1, , z) = {(q2, z)}
NPDA and Context-Free Languages Greibach NF (q0, , z) = {(q1, Sz)} S aSA | a (q1, a, S) = {(q1, SA), (q0, )} A bB(q1, b, A) = {(q1, B)} B b (q1, b, B) = {(q1, )} (q1, , z) = {(q2, )}
Theorem For any context-free language L not containing , there exists an NPDA M such that L = L(M).
Theorem Proof: G = (V, T, S, P) M = ({q0, q1, qf}, T, V{z}, , q0, z, {qf}) z V (q0, , z) = {(q1, Sz)} (q1, u) (q1, a, A) iff A au P (q1, , z) = {(qf, z)}
Example Greibach NF (q0, , z) = {(q1, Sz)} S aA (q1, a, S) = {(q1, A)} A aABC | bB | a(q1, a, A) = {(q1, ABC), (q1, )} (q1, b, A) = {(q1, B)} B b (q1, b, B) = {(q1, )} C c (q1, c, C) = {(q1, )} (q1, , z) = {(q2, )}
Context-Free Grammars for NPDA M = (Q, , , , q0, z, F) G = (V, T, S, P) L(G) = L(M)
Context-Free Grammars for NPDA M = (Q, , , , q0, z, F) M^: Single final state Final state entered iff the stack is empty (qi, a, A) = {c1, c2, ..., cn} ci = (qj, ) ci = (qj, BC)
Context-Free Grammars for NPDA (qi, a, A) = {(qj, ), ... } ?
Context-Free Grammars for NPDA (qi, a, A) = {(qj, ), ... } ? At qi erase A and move to qj if receiving a
Context-Free Grammars for NPDA (qi, a, A) = {(qj, BC), ... } ?
Context-Free Grammars for NPDA (qi, a, A) = {(qj, BC), ... } ? At qi erase A and move to qk if receiving a and at qj erase BC and move to qk
Context-Free Grammars for NPDA (qi, a, A) = {(qj, BC), ... } ? At qi erase A and move to qk if receiving a and at qj erase BC and move to qk At qi erase A and move to qk if receiving a and at qj erase B and move to qm and at qm erase C and move to qk
Context-Free Grammars for NPDA (qi, a, A) = {(qj, ), ... } At qi erase A and move to qj if receiving a (qiAqj) a
Context-Free Grammars for NPDA (qi, a, A) = {(qj, BC), ... } At qi erase A and move to qk if receiving a and at qj erase B and move to qm and at qm erase C and move to qk (qiAqk) a(qjBqm)(qmCqk)
Context-Free Grammars for NPDA Start symbol: (q0zqf)
Example M = (Q, , , , q0, z, F) Q = {q0, q1, q2} = {a} = {A, z} F = {q2} (q0, a, z) = {(q0, Az)} (q0, a, A) = {(q0, A)} (q0, b, A) = {(q1, )} (q1, , z) = {(q2, )}
Example M = (Q, , , , q0, z, F) Q = {q0, q1, q2 , q3} = {a} = {A, z} F = {q2} (q0, a, z) = {(q0, Az)} (q0, a, z) = {(q0, Az)} (q0, a, A) = {(q0, A)} (q0, a, A) = {(q3, )} (q0, b, A) = {(q1, )} (q3, , z) = {(q3, Az)} (q1, , z) = {(q2, )} (q0, b, A) = {(q1, )} (q1, , z) = {(q2, )}
Example M = (Q, , , , q0, z, F) Q = {q0, q1, q2 , q3} = {a} = {A, z} F = {q2} (q0, a, z) = {(q0, Az)} (q0, a, A) = {(q3, )} (q0Aq3) a (q3, , z) = {(q3, Az)} (q0, b, A) = {(q1, )} (q0Aq1) b (q1, , z) = {(q2, )} (q1zq2)
Example M = (Q, , , , q0, z, F) Q = {q0, q1, q2 , q3} = {a} = {A, z} F = {q2} (q0, a, z) = {(q0, Az)} (q0zq0) ... (q0, a, A) = {(q3, )} (q0zq1) ... (q3, , z) = {(q3, Az)} (q0zq2) ... (q0, b, A) = {(q1, )} (q0zq3) ... (q1, , z) = {(q2, )}
Example M = (Q, , , , q0, z, F) Q = {q0, q1, q2 , q3} = {a} = {A, z} F = {q2} (q0, a, z) = {(q0, Az)} (q0zq0) a(q0Aq0)(q0zq0) | (q0, a, A) = {(q3, )} a(q0Aq1)(q1zq0) | (q3, , z) = {(q3, Az)} a(q0Aq2)(q2zq0) (q0, b, A) = {(q1, )} a(q0Aq3)(q3zq0) (q1, , z) = {(q2, )} ...
Theorem If L = L(M) for some NPDA M, then L is a context-free language.
Theorem Proof: M = (Q, , , , q0, z, {qf}) G = (V, T, S, P) T = V = {(qiAqj) | A } S = (q0zqf) P: (qiAqj) a iff (qj, ) (qi, a, A) (qiAqm) a(qiBqm)(qmCqj) iff (qj, BC) (qi, a, A)
Deterministic Pushdown Automata A DPDA is a pushdown automaton that never has a choice in its move: • (q, a, b) contains at most one element. • if (q, , b) is not empty, then (q, a, b) must be empty for every a .
Deterministic Context-Free Language A language L is said to be a DCFL iff there exists a DPDA M such that L = L(M).
Example M = (Q, , , , q0, z, F) Q = {q0, q1, q2} (q0, a, 0) = {(q1, 10)} = {a, b} (q1, a, 1) = {(q1, 11)} = {0, 1} (q1, b, 1) = {(q2, )} z = 0 (q2, b, 1) = {(q2, )} F = {q0} (q2, , 0) = {(q0, )} L = {anbn | n 0}
Homework • Exercises: 5, 10, 13 of Section 7.1 - Linz’s book. • Exercises: 1, 2, 4, 5, 8, 12 of Section 7.2 - Linz’s book. • Exercises: 1, 2, 3, 6, 7 of Section 7.2 - Linz’s book. • Presentations: Section 6.3 and Section 7.4.