Skip to main content
留学咨询

辅导案例-CSE105SP20

By May 15, 2020No Comments

2-hw: Nonregular Languages and Context-free Languages CSE105SP20 Due: Sunday May 3 at 11:00PM (on Gradescope) The same homework policies apply as in 1-hw. Please see that assignment writeup for details about • Collaboration policy and group size. • Submission instructions. • Typed work. • Expectations for justification Reading and extra practice problems: Sipser Section 1.4, 2.2. Chapter 1 exercises 1.29, 1.30. Chapter 1 problems 1.49, 1.50, 1.51. Chapter 2 exercises 2.5, 2.7. Key Concepts: Pumping lemma, nonregular sets, pushdown automata (PDA), stack. 1. In class and in the reading so far, we’ve seen the following examples of nonregular sets: {0n1n | n ≥ 0} {0n1n | n ≥ 2} {0n1m | 0 ≤ n ≤ m} {0n1m | 0 ≤ m ≤ n} {0i12i | 0 ≤ i} {0i1i+1 | 0 ≤ i} {0n1m0n | n,m ≥ 0} {w ∈ {0, 1}∗ | w = wR} {wwR | w ∈ {0, 1}∗} (a) (20 points) Use (some of) the sets above, along with any regular sets you would like, to give example values for A1, A2, A3, B1, B2 such that A1 and A2 and A3 are each regular, B1 and B2 are each nonregular, and A1 ( B1 ( B2 ( A2 ( A3 Recall that X ( Y means that X is a proper subset of Y ; that is, that X ⊆ Y and that X 6= Y . For each of your examples of regular sets, clearly define the set and justify (e.g. by citing an example in the book or by proving it from scratch) why the set is regular and why the proper subset relations hold. (b) (10 points) (Graded for fair effort completeness) The Pumping Lemma is useful for proving that some sets are nonregular. Explain in two or three sentences why it is true (use your own words; do not quote the book or the videos here) and prove that a set is nonregular using the pumping lemma for an example set that is not worked out in the book or in the videos. 1 2. Consider the PDA M over the alphabet {0, 1, 2} whose state diagram is (a) (5 points) Fill in the full stack contents for each step in the following computation of M on the input string 12. Then determine whether this computation is a stuck computation, an accepting computation, or a rejecting computation. q0 q1 q1 q2 q2 q3 TOP ? TOP ? TOP ? TOP ? TOP ? TOP ? You may hand-draw and scan these traces of the computations. For full credit, include all stack contents at each step (not just the character, if any, at the top). Hint: You might find it useful to annotate the steps in the computations with which (if any) input character is consumed with each transition. Hint: To get you started, we’ve filled out a computation of M on the input string 01. There are many other computations of M on this string. q0 q1 q1 q1 TOP TOP $ TOP $ TOP X $ (b) (10 points) Describe an infinite set of strings that is a subset of L(M). For full credit, precisely define your set and refer to the state diagram to give a general description of what a successful computation of M on each strings in the set would look like. (c) (10 points) Consider the language of the context free grammar G = ({S}, {0, 1, 2}, R, S) where the set of rules R is given by S → 0S0 | 1S1 | 2 Prove that L(G) 6⊆ L(M) and that L(M) 6⊆ L(G) by giving specific counterexample strings and explaining why they prove that these subset inclusions do not hold. Hint: It might be helpful to start by describing, in set builder notation, the set L(G) using the definition of the CFG. 2 (d) (10 points) (Graded for fair effort completeness) When we introduced PDAs, we used the stack to give us access to unbounded memory in addition to the finitely many states in the state diagram. In general, for an arbitrary PDA with an arbitrary string input, is there any relationship between the length of the input string and the size of the stack during the computation of the PDA on this input? Define and justify any bounds we can state on the memory use of the PDA, or explain why there aren’t any. 3. In this question, you’ll practice working with formal general constructions for PDAs and trans- lating between state diagrams and formal definitions. Suppose M = (Q,Σ,Γ, δ, q0, F ) is a PDA. We can define a new PDA N so that L(M) = L(N) and N is guaranteed to have an empty stack at the end of any accepting computation. Informally, the construction is as follows: Add three new states q′1, q ′ 2, q ′ 3 and one new stack symbol #. • One of the new states q′1 will be the new start state and it has a spontaneous transition to the old start state q0 which pushes the new stack symbol # to the stack. • The transitions between the old states are all the same. • From each of the old accept states, add a spontaneous transition (that doesn’t modify the stack) to the second new state q′2. • In this state q′2, pop all old stack symbols from the stack without reading any input. • When the new stack symbol # is on the top of the stack, transition to the third new state q′3 and accept. Assume {q′1, q′2, q′3} ∩Q = ∅ (otherwise, relabel some of the states in Q) and assume that # /∈ Γ (otherwise, relabel this stack symbol in Γ). Define N to be N = (Q ∪ {q′1, q′2, q′3},Σ,Γ ∪ {#}, δN , q′1, {q′3}) where δN : Q∪{q′1, q′2, q′3} × Σε × Γε ∪{#} → P(Q∪{q′1, q′2, q′3} × Γε ∪{#}) is defined as δN( (q, x, y) ) =  {(q0,#)} if q = q′1, x = ε, y = ε δ( (q, x, y) ) if q ∈ Q, x ∈ Σ, y ∈ Γε δ( (q, x, y) ) if q ∈ Q, x = ε, y ∈ Γ δ( (q, x, y) ) if q ∈ Q \ F , x = ε, y = ε δ( (q, x, y) ) ∪ {(q′2, ε)} if q ∈ F , x = ε, y = ε {(q′2, ε)} if q = q′2, x = ε, y ∈ Γ {(q′3, ε)} if q = q′2, x = ε, y = # ∅ otherwise (a) (10 points) Illustrate this construction by considering the PDA M from the previous ques- tions 3 and applying the construction above to create the related PDA N and include its state diagram in your submission. Note: you may include the formal definition of your PDA, but this is not required. (b) (20 points) Pick a string of length 5 over the alphabet of the PDA M and use it to demon- strate the difference in M and in N by • describing a successful computation of M on this string for which the stack is not empty at the end of the computation, and • describing a successful computation of N on this string for which the stack is empty at the end of the computation. In your descriptions of these computations, include both the sequence of states visited by the machine as well as snapshots of the full contents of the stack at each step in the computation. You may hand-draw and scan these traces of the computations. Hint: You will need to pick your example string wisely. It must be accepted by M and there must be a computation of M on your string which ends with a nonempty stack. Not all choices of length 5 strings work. (c) (10 points) (Graded for fair effort completeness) In class, we talked about how a language is recognizable by a PDA if and only if it is generated by a CFG. For an arbitrary PDA M = (Q,Σ,Γ, δ, q0, F ), let N be the PDA constructed using the general construction above. Describe how you would translate a CFG that generates L(M) to one that generates L(N). Include an informal description along with a formal description of how you would translate the formal definition for the CFG. Bonus – not for credit; do not hand in Informal descriptions of PDAs are often useful when working with complex operations. We’ve discussed several shorthands that can be used in informal descriptions such as “peek at the top of the stack, and if the character is . . . , then do . . . ”. Give another example of a useful shorthand that can be used when building PDAs, and explain briefly how you would implement it in the state diagram of a PDA. How would you translate these constructions to CFGs? Hint: For ideas of shorthands that are useful, you can look at the informal descriptions of PDAs in the book in example 2.14 (look back to page 112 for the informal version), example 2.16, and example 2.18. 4

admin

Author admin

More posts by admin