Assignment 2 Solutions

Transcription

Assignment 2 Solutions
CS 360 Introduction to the Theory of Computing
Spring 2015
Assignment 2 Solutions
1. Give context-free grammars for each of the following languages. You do not need to prove
that your grammars are correct. However, if it is too difficult to verify the correctness of your
grammars, you may lose points (even if they happen to be correct). You should therefore aim to
give the simplest grammars possible, and it may be to your benefit to offer short explanations
about how your grammars work.
(a) x ∈ {0, 1}∗ : x = x R and the number of 1s in x is divisible by 3 .
(b) 0n 1m : m ≤ n ≤ 2m .
(c) x ∈ {0, 1}∗ : | x |0 > | x |1 . (Recall that | x |0 denotes the number of 0s in x and | x |1
denotes the number of 1s in x.)
Solution.
(a) A context-free grammar for the language
x ∈ {0, 1}∗ : x = x R and the number of 1s in x is divisible by 3
is as follows:
S0 → 0S0 0 1S1 1 0 ε
S1 → 0S1 0 1S2 1 1
S2 → 0S2 0 1S0 1
The idea is that Sm generates all strings x ∈ {0, 1}∗ with x = x R for which the number of 1s in x is
congruent to k modulo 3.
(b) A context-free grammar for the language 0n 1m : m ≤ n ≤ 2m is as follows:
S → XS1 ε
X → 0 00
(c) A context-free grammar for the language
x ∈ {0, 1}∗ : | x |0 > | x |1
is as follows:
S → XS X
X → Y0Y
Y → 0Y1Y 1Y0Y ε
The idea behind this grammar is that Y generates strings with | x |0 = | x |1 , so X generates strings
with | x |0 = | x |1 + 1. The variable S generates the concatenation of one or more strings generated
by X, which gives the language in the problem.
2. Let Σ be an alphabet, and recall that the symmetric difference of two languages A, B ⊆ Σ∗ is
defined as
def
A M B = A∩B ∪ A∩B .
(a) Prove that if A ⊆ Σ∗ is a context-free language and B ⊆ Σ∗ is a finite language, then the
language A M B is context-free.
(b) Give an example of an alphabet Σ, a context-free language A ⊆ Σ∗ , and a regular language B ⊆ Σ∗ for which the language A M B is not context-free.
Solution.
(a) First, given that B is finite, we have that B is regular, and therefore B is regular as well, because
the regular languages are closed under complementation. This implies that A ∩ B is context-free,
because the intersection of a context-free language and a regular language is always context-free
(as we proved in class).
Next, we observe that A ∩ B is contained in B, and is therefore finite. Every finite language is
context-free, and therefore A ∩ B context-free.
Finally, given that we have
proved that both A ∩ B and A ∩ B are context-free, it holds that
A M B = A ∩ B ∪ A ∩ B is context-free because the union of two context-free languages is
necessarily context-free.
(b) We may obtain a suitable example by choosing B = Σ∗ and any context-free language A for
which the complement A is not context-free. For instance, we may take Σ = {0, 1} and A = C for
C = { 0n 1n 0n : n ∈ N } .
We have that A is context-free and B is regular, but A M B = A = C is not context-free.
2
3. Let Σ = {0, 1}. For any two strings x, y ∈ Σ∗ with | x | = |y|, define x ⊕ y ∈ Σ∗ to be the
bitwise XOR of x and y. For instance, 00101 ⊕ 10110 = 10011. As you might expect, we define
ε ⊕ ε = ε.
Suppose A ⊆ {0, 1}∗ is a regular language. Define B ⊆ Σ∗ as
n
o
B = xy R : x, y ∈ Σ∗ , | x | = |y|, and x ⊕ y ∈ A .
Prove that B is context-free. If your answer includes the description of a CFG or PDA, you do
not need to give a formal proof that the CFG or PDA is correct, but you should explain at a
high level how it works.
Solution. Because A is regular, there must exist a DFA M = ( Q, Σ, δ, q0 , F ) for A. We will define a
grammar G = (V, Σ, R, S) for B as follows. First, define the set V of variables of G as
V = { Xq : q ∈ Q }.
That is, we will have one variable for each state of M. Let us also take the start variable S of G to
be Xq0 . Finally, we must indicate set R of rules for our grammar. For every choice of q ∈ Q we will
include the following rules in R:
Xq → 0Xδ(q,0) 0
Xq → 1Xδ(q,0) 1
Xq → 0Xδ(q,1) 1
Xq → 1Xδ(q,1) 0.
We also include the rule
Xq → ε
for each accepting state q ∈ F.
It is the case that L( G ) = B. The idea is that at every intermediate step in a derivation of a
string by G, we will have a string of the form
xXq y R
where | x | = |y| and x ⊕ y causes M to move from the start state q0 to the state q. This is trivially
so for the first step of a derivation when we have just the start variable Xq0 , and the rules listed
above allow us to conclude that this is true in general. The very last step of a derivation must
be the replacement of a variable Xq by ε, which is only possible when q is an accept state. This
guarantees that M must accept the string x ⊕ y, which is equivalent to x ⊕ y ∈ A.
An alternative way to answer this question is to design a PDA for B.
3
4. Define a language A ⊆ {0, 1}∗ as follows:
A = 0n 1n·m : n, m ∈ N .
Prove that A is not context-free. In your proof, you may feel free to make use of the following
fact without having to prove it:
If n, j, k ∈ N are numbers satisfying n ≥ 2 and 1 ≤ j + k ≤ n, then n2 + j does not
evenly divide n3 + k.
(It is not hard to prove that this fact is true: give it a shot if you feel like it.)
Solution. Assume toward contradiction that A is context-free. By the pumping lemma for contextfree languages, we have that there exists a pumping length p for A. We note that there is no loss
of generality in assuming that p ≥ 2—for if a given number q is a pumping length for a given
context-free language A, then every number q0 ≥ q trivially satisfies the requirements of being a
pumping length for A.
Now, let
2
3
w = 0p 1p .
We have |w| ≥ p and w ∈ A, and therefore the pumping lemma for context-free languages guarantees us that it is possible to write
w = uvxyz
in such a way that (i) vy 6= ε, (ii) |vxy| ≤ p, and (iii) uvi xyi z ∈ A for all i ∈ N. We now consider
the following cases, one of which must hold:
Case 1: one of the two string v or y contains both of the symbols 0 and 1. In this case we have
that uv2 xy2 z must contain the substring 10, and therefore this string is not contained in A, which
contradicts the pumping lemma’s guarantee that uvi xyi z ∈ A for all i ∈ N.
Case 2: v = 0s and y = 0t for some choice of s, t ∈ N. Given that vy 6= ε and |vxy| ≤ p, we must
have 1 ≤ s + t ≤ p. Considering i = 2, we have
uv2 xy2 z = 0 p
2+j
1p
3
for j = s + t. By the fact stated in the question, it cannot be that p2 + j divides p3 for 1 ≤ j ≤ p,
and therefore uv2 xy2 z 6∈ A. This contradicts the pumping lemma’s guarantee that uvi xyi z ∈ A for
all i ∈ N.
Case 3: v = 1s and y = 1t for some choice of s, t ∈ N. Given that vy 6= ε and |vxy| ≤ p, we must
have 1 ≤ s + t ≤ p. Considering i = 2, we have
2
uv2 xy2 z = 0 p 1 p
3 +k
for k = s + t. By the fact stated in the question, it cannot be that p2 divides p3 + k for 1 ≤ k ≤ p,
and therefore uv2 xy2 z 6∈ A. This contradicts the pumping lemma’s guarantee that uvi xyi z ∈ A for
all i ∈ N.
4
Case 4: v = 0 j and y = 1k for some choice of j, k ∈ N. Given that vy 6= ε and |vxy| ≤ p, we must
have 1 ≤ j + k ≤ p. Considering i = 2, we have
uv2 xy2 z = 0 p
2+j
1p
3 +k
for 1 ≤ j + k ≤ p. By the fact stated in the question, it cannot be that p2 + j divides p3 + k for
1 ≤ j + k ≤ p, and therefore uv2 xy2 z 6∈ A. This contradicts the pumping lemma’s guarantee that
uvi xyi z ∈ A for all i ∈ N.
We have obtained a contradiction in all of the possible cases. This implies that A is not context-free,
as required.
Proof of the fact stated in the question: To prove the fact stated in the problem, let us assume toward
contradiction that n2 + j divides n3 + k evenly. Because 1 ≤ j + k ≤ n, we must have
n−
n
n3
n3 + j
n3 + n
1
= 2
≤ 2
≤
= n+ .
2
n+1
n +n
n +k
n
n
As n ≥ 2, we have that the only integer lying between n − n/(n + 1) and n + 1/n is n, and
therefore
n3 + j
= n.
n2 + k
This implies n3 + j = n3 + nk, and therefore j = nk. Given that 1 ≤ j + k ≤ n, it follows that
1 ≤ k (n + 1) ≤ n, and so
n
1
≤k≤
.
n+1
n+1
There is, however, no integer k satisfying these inequalities, and therefore we have obtained a
contradiction, implying that n2 + j cannot divide n3 + k evenly.
5