1 / 41

Pushdown Automata

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.

shina
Télécharger la présentation

Pushdown Automata

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Pushdown Automata • There are context-free languages that are not regular. • Finite automata cannot recognize all context-free languages.

  2. Pushdown Automata • {a, b}* is regular. • {akbk | k is a constant} is regular. • {anbn | n  0} is not regular.

  3. Finite Automata Input file Control unit q0 yes/no

  4. Pushdown Automata Input file Control unit q0 Stack yes/no

  5. 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

  6. Non-deterministic Pushdown Automata (NPDA) : Q  ({})    finite subsets of Q  * stack top stack top replacement

  7. Example (q1, a, b) = {(q2, cd), (q3, )} c d q2 b q1 q3

  8. 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, )}

  9. Instantaneous Description (q, w, u) current state unread part of stack contents input string

  10. Instantaneous Description move: (q1, aw, bx) | (q2, w, yx) iff (q2, y)  (q1, a, b)

  11. Instantaneous Description (q1, x, y) |*M(q2, u, v) (q1, x, y) |+M(q2, u, v)

  12. 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  *}

  13. Example L = {w  {a, b}* | na(w) = nb(w)} M = (Q, , , , q0, z, F) ?

  14. 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)}

  15. Example L = {wwR | w  {a, b}+} M = (Q, , , , q0, z, F) ?

  16. 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)}

  17. 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, )}

  18. Theorem For any context-free language L not containing , there exists an NPDA M such that L = L(M).

  19. 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)}

  20. 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, )}

  21. Context-Free Grammars for NPDA M = (Q, , , , q0, z, F) G = (V, T, S, P) L(G) = L(M)

  22. 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)

  23. Context-Free Grammars for NPDA (qi, a, A) = {(qj, ), ... } ?

  24. Context-Free Grammars for NPDA (qi, a, A) = {(qj, ), ... } ? At qi erase A and move to qj if receiving a

  25. Context-Free Grammars for NPDA (qi, a, A) = {(qj, BC), ... } ?

  26. 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

  27. 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

  28. Context-Free Grammars for NPDA (qi, a, A) = {(qj, ), ... } At qi erase A and move to qj if receiving a (qiAqj)  a

  29. 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)

  30. Context-Free Grammars for NPDA Start symbol: (q0zqf)

  31. 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, )}

  32. 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, )}

  33. 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)  

  34. 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, )}

  35. 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, )} ...

  36. Theorem If L = L(M) for some NPDA M, then L is a context-free language.

  37. 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)

  38. 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  .

  39. Deterministic Context-Free Language A language L is said to be a DCFL iff there exists a DPDA M such that L = L(M).

  40. 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}

  41. 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.

More Related