320 likes | 511 Views
CSCI 3130: Formal languages and automata theory Tutorial 5. Chin. Reminder. Homework 3 is due tomorrow . Midterm is on next Monday . Review session tomorrow . You can get back homework 2 after this tutorial. Homework 2. We only say a language is regular or non-regular.
E N D
CSCI 3130: Formal languagesand automata theoryTutorial 5 Chin
Reminder • Homework 3 is due tomorrow. • Midterm is on next Monday. • Review session tomorrow. • You can get back homework 2 after this tutorial.
Homework 2 • We only say a language is regular or non-regular. • We do not say a string is regular or non-regular • Never write x is regular • We only say a string is in a language or not.
Homework 2 • To show a language is not regular • You only have to choose one string. • The chosen string should be in terms of n. • You cannot choose what u, v, w are. e.g. u = (ab)n-1, v = (ab)n, w = (bc)n. wrong! You have to consider every possible partitions of uvw. • You only have to choose one value for i.
Homework 2 • Problem 1 • Most answers are incorrect. Some of you used the following arguments: Replace with What if: a q0 NFA q0 NFA b NFA q0 q1 a
Homework 2 • Problem 1 • There can be multiple accepting states in the DFA Many states can reach an accepting state on ‘b’
Homework 2 • Problem 1 (c) Many students drew the following x and y are not fixed. x y q0 NFA NFA q0
Homework 2 • Problem 1 (d) A few students did the following Let L1 = {anb: n ≥ 0}, L2 = {an: n ≥ 0} Then L1L2 = {anban : n ≥ 0}. wrong! The n in L1 and the n in L2 are independent. L1L2 = {anbam : n, m ≥ 0}.
Homework 2 • Problem 2 • Some of you chose the strings (a+b)n(b+c)n The proof fails if I take bnbn, which is of the above form. Choose one string is okay. e.g. ancn
Homework 2 • Problem 2 (c) L3 = {w : w does not have the same number of as, bs, and cs} A few students got L3 wrong. (b) Many students let u = (ac)n-1,v = (ac), w = (abc)n. You cannot choose what u, v, w are! v can be any nonempty substring of the first n characters of the string. e.g. v can be the first ‘a’ of the string.
Homework 2 • Problem 3 (b) To show two states are distinguishable Write down on what inputs one of them goes to an accepting state but the other does not.
Homework 2 • Problem 4 (b) Some of you did not handle names without any ‘a’. (c) A few of you did not handle the names “crystal”. (d) A few of you missed the case “rin”.
Pushdown Automata • NFA with a stack • Read a, pop b, and push c • Push c to the stack after popping b • a, b, c can be • Use $ to mark stack bottom a, b/c q1 q0
Pushdown Automata • PDA = CFG • Languages that can be represented by PDA/CFG are context-free.
Pushdown Automata • Design a PDA for the following. S = {a, b, c} L1 = {x : x has fewer a’s than b’s and c’s together} L2 = {aibjck : i = j or j = k}
Pushdown Automata L1 = {x : x has fewer a’s than b’s and c’s together} Lecture: L = {w: w has same number 0s and 1s} First, treat a as a, b and c as x e, e / $ e, $ / e q1 q0 q2 1, e/ 1 0, e/ 0 0, 1 / e 1, 0 / e e, e / $ e, $ / e q1 q0 q3 b, e/ x a, e/ a a, x / e b, a / e c, e/ x c, a / e
Pushdown Automata L1 = {x : x has fewer a’s than b’s and c’s together} First, treat a as a, b and c as x Accept if there are still x’s in the stack e, e / $ e, $ / e q1 q0 q3 b, e/ x a, e/ a b, a / e a, x / e c, e/ x c, a / e e, e / $ e, x / e e, $ / e q1 q0 q2 q3 b, e/ x a, e/ a b, a / e e, x/ e a, x / e c, e/ x c, a / e
Pushdown Automata L2 = {aibjck : i = j or j = k} Separate it into two cases {aibjck : i = j } U {aibjck : j = k} • {aibjck : i = j } Lecture: L = {w: w has same number 0s and 1s} e, e / $ e, $ / e q1 q0 q2 1, e/ 1 0, e/ 0 0, 1 / e 1, 0 / e
Pushdown Automata L2 = {aibjck : i = j or j = k} • {aibjck : i = j } Lecture: L = {w: w has same number 0s and 1s} add c’s e, e / $ e, $ / e q1 q0 q2 1, e/ 1 0, e/ 0 0, 1 / e 1, 0 / e e, $ / e e, e / $ e, e / e q3 q2 q1 q0 b, e/ b c, e/ e a, e/ a a, b / e b, a / e
Pushdown Automata L2 = {aibjck : i = j or j = k} 2. {aibjck : j = k} Lecture: L = {w: w has same number 0s and 1s} add a’s e, e / $ e, $ / e q1 q0 q2 1, e/ 1 0, e/ 0 0, 1 / e 1, 0 / e e, $ / e e, e / $ e, e / e q3 q2 q1 q0 b, e/ b a, e/ e c, e/ c c, b / e b, c / e
Pushdown Automata L2 = {aibjck : i = j or j = k} Take union e, $ / e e, e / e q3 q2 q1 e, e / $ b, e/ b c, e/ e a, e/ a a, b / e b, a / e q0 e, e / $ e, $ / e e, e / e q6 q4 q5 b, e/ b a, e/ e c, e/ c c, b / e b, c / e
Pumping lemma for Context-free languages To show a language L is not context free: For every n, choose onez of length ≥ n in L, such that for every way of writing z = uvwxywhere |vwx| ≤ n and |vx| ≥ 1, the string uviwxiy is not in L for some i≥ 0. • z depends on n • u, w, ycan be empty string • v, x can alsobe empty string, but not both. • i can be 0 (very useful) • You only have to choose onez • Unlike the regular language version, vwx can be anywhere in z.
Pumping lemma for Context-free languages Template Suppose L is context-free. Let n be the pumping length. Then z = _______ (z should contain n somewhere) is in L. Write z = uvwxy, where |vwx| ≤ n and |vx|≥ 1. Argue!no matter how we write z = uvwxy, the string uv_wx_y is not in L(choose onei in _, i can be 0) Therefore L is not regular.
Pumping lemma for CFG • Show that the following languages are not context-free L1 = {anbmanbm : m, n ≥ 0}. S = {a, b}. L2 = {x#y#z : yR is a substring of xz; x, y, z∈ {a,b}*}. S = {a, b, #}.
Pumping lemma for CFG L1 = {anbmanbm : m, n ≥ 0}. S = {a, b}. Suppose L is context-free. Let n be the pumping length. Then z = _anbnanbn_ (z should contain n somewhere) is in L. Write z = uvwxy, where |vwx| ≤ n and |vx|≥ 1. Argue!no matter how we write z = uvwxy, the string uv_wx_y is not in L(choose onei in _, i can be 0) How to argue?
Pumping lemma for CFG L1 = {anbmanbm : m, n ≥ 0}. S = {a, b}. Then z = _anbnanbn_ (z should contain n somewhere) is in L. Write z = uvwxy, where |vwx| ≤ n and |vx|≥ 1. What can vwx be if |vwx| ≤ n? vwx can be… • part of the first an • part of the first anbn • part of the first bn • part of the middle bnan • part of the second an • part of the second anbn • part of the last bn a……ab……ba……ab……b
Pumping lemma for CFG L1 = {anbmanbm : m, n ≥ 0}. S = {a, b}. Then z = _anbnanbn_ (z should contain n somewhere) is in L. Write z = uvwxy, where |vwx| ≤ n and |vx|≥ 1. • If vwx is part of the first an uv2wx2y has less a’s in the first group than the second group • If vwx is part of the first anbn v and x cannot be both empty If v is not empty, v must contain some a, uv0wx0y has less a’s in the first group than the second group If x is not empty, x must contain some b, uv0wx0y has less b’s in the first group than the second group The rest are similar, do explain them in the homework/exam. a……ab……ba……ab……b
Pumping lemma for CFG L2 = {x#y#z : yR is a substring of xz; x, y, z ∈ {a,b}*}. Suppose L is context-free. Let n be the pumping length. Then z = _an#bnan#bn_ (z should contain n somewhere) is in L. Write z = uvwxy, where |vwx| ≤ n and |vx|≥ 1. Argue!no matter how we write z = uvwxy, the string uv_wx_y is not in L(choose onei in _, i can be 0) How to argue?
Pumping lemma for CFG L2 = {x#y#z : yR is a substring of xz; x, y, z ∈ {a,b}*}. Then z = _an#bnan#bn_ (z should contain n somewhere) is in L. Write z = uvwxy, where |vwx| ≤ n and |vx|≥ 1. What can vwx be if |vwx| ≤ n? vwx can be… 0. If v and x contain ‘#’, then we can always pump it and the string will contain more than 2 #s. • part of the first an • part of the first an#bn • part of the first bn • part of the middle bnan • part of the second an • vwx is part of the last an#bn • vwx is part of the last bn a……a#b……ba……a#b……b
Pumping lemma for CFG L2 = {x#y#z : yR is a substring of xz; x, y, z ∈ {a,b}*}. Then z = _an#bnan#bn_ (z should contain n somewhere) is in L. Write z = uvwxy, where |vwx| ≤ n and |vx|≥ 1. 0. If v and x contain ‘#’, then we can always pump it and the string will contain more than 2 #s, which is not in L2. • If vwx is part of the first an, uv0wx0y = X#Y#Z contains less a’s in X than in Y. thus the YR cannot be a substring of XZ. a……a#b……ba……a#b……b
Pumping lemma for CFG L2 = {x#y#z : yR is a substring of xz; x, y, z ∈ {a,b}*}. Then z = _an#bnan#bn_ (z should contain n somewhere) is in L. Write z = uvwxy, where |vwx| ≤ n and |vx|≥ 1. 0. If v and x contain ‘#’, then we can always pump it and the string will contain more than 2 #s, which is not in L2. • If vwx is part of the first an#bn, v and x cannot be both empty If v is not empty, v must contain some a, uv0wx0y = X#Y#Z contains less a’s in X than in Y. thus the YR cannot be a substring of XZ. If x is not empty, x must contain some b, uv2wx2y = X#Y#Z contains less b’s in X than in Y. thus the YR cannot be a substring of XZ. The rest are similar, do explain them in the homework/exam. a……a#b……ba……a#b……b
End • Questions?