0% found this document useful (0 votes)
36 views3 pages

Assign 2 Ans

This document contains the solutions to 5 problems related to theory of computation. Problem 1 involves proving that a given language is regular by constructing a deterministic finite automaton and regular grammar. Problem 2 constructs a context-free grammar to represent the complement of a given language. Problems 3-5 use the pumping lemma to prove that certain languages are not context-free.

Uploaded by

Kamal Walia
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
36 views3 pages

Assign 2 Ans

This document contains the solutions to 5 problems related to theory of computation. Problem 1 involves proving that a given language is regular by constructing a deterministic finite automaton and regular grammar. Problem 2 constructs a context-free grammar to represent the complement of a given language. Problems 3-5 use the pumping lemma to prove that certain languages are not context-free.

Uploaded by

Kamal Walia
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

CS5371 Theory of Computation

Homework 2 (Suggested Solution)

1. Ans. We completed the proof by showing Claim 1 and Claim 2 as follows:

Claim 1. If s is a string accepted by D, then V0 derives s.

Proof. Let k = |s|. When k = 0, s = ε, which is accepted by D only if q0 is an accept


state. In this case, the CFG contains the rule V0 → ε so that V0 derives s.
When k ≥ 1, let s = s1 s2 · · · sk . Since s is accepted by D, there will be a sequence of states
qi0 , qi1 , . . . , qik in D such that qi0 = q0 , qik is an accept state, and for each j, qij = δ(qij−1 , si ).
By the construction of CFG, we know that Vi0 = V0 is the start variable, and there is a
rule Vik → ε. Also, there is a rule Vij−1 → si Vij for each j. This implies that

V0 ⇒ s1 Vi1 ⇒ s1 s2 Vi2 ⇒ · · · ⇒ s1 s2 · · · sk Vik ⇒ s1 s2 · · · sk .

In other words, V0 derives s.

Claim 2. If V0 derives s, then s is a string accepted by D.

Proof. Let k = |s|. When k = 0, s = ε, which is derived from V0 only if there is a rule
V0 → ε. In this case, q0 is an accept state in D, so s is accepted by D.
When k ≥ 1, let s = s1 s2 · · · sk . Since s is derived from V0 , and since each rule replaces a
variable by either (i) a terminal followed by another variable, or (ii) an empty string,
the derivation of s must be in the following form:

V0 ⇒ s1 Vi1 ⇒ s1 s2 Vi2 ⇒ · · · ⇒ s1 s2 · · · sk Vik ⇒ s1 s2 · · · sk ,

for some i1 , i2 , . . . , ik . By letting i0 = 0, the above form implies that qik is an accept state,
and for each j, qij = δ(qij−1 , si ). Since qi0 , qi1 , . . . , qik is exactly the sequence of states
visited in D when we process s, therefore s is accepted by D.

2. (a) Ans. A string in the complement of the language {an bn | n ≥ 0} must be in one
of the following forms: (i) contains a substring ba; or (ii) equals to ai bj for some
i 6= j. Accordingly, the CFG we use is as follows:

S → S1 | S2
S1 → ba | XS1 | S1 X
X → a|b
S2 → AC | CB
A → aA | a
B → bB | b
C → ab | aCb

1
(b) Ans. A string in the language

{x1 #x2 # · · · #xk | k ≥ 1, each xi ∈ {a, b}∗ , and for some i and j, xi = xR
j }

must be in one of the following forms: (i) contains a palindrome xi for some i; (ii)
contains distinct i and j such that xi = xR
j . Accordingly, the CFG we use is as follows:

S → S1 | S2
S1 → P | X#P | P #X
P → aP a | bP b | a | b | ε
X → a|b|#|ε
S2 → M | X#M | M #X
M → aM a | bM b | #X#

3. Ans. An equivalent CFG in Chomsky normal form is as follows:

S → AB | BA | BB | BC | DD | ε
A → AB | BA | BB | BC | DD
B → DD
C → AB
D → 0

4. Ans. A string is in the language C = {x#y | x, y ∈ {0, 1}∗ and x 6= y} if and only if
|x| 6= |y|, or for some i, the ith bit of x is different with the ith bit of y. Accordingly, we
design a CFG for C, thus showing that C is context-free:

S → M | N 1A | P 0A
M → XM X | U
X → 0|1
U → #0A | #1A | A0# | A1#
A → 0A | 1A | ε
N → XN X | 0A#
P → XP X | 1A#

In the above CFG, A generates strings of any length, M generates x and y of unequal
length by first matching characters in the shorter of them with the longer one, and then
generates the remaining characters of the longer (using U ). N generates strings in the form
of {0, 1}i 0{0, 1}∗ #{0, 1}i so that when combined with 1A, we obtain a string with ith bit
of x is 0, while ith bit of y is 1. P generates strings similar to N , except the ith bit is 1.

5. (a) Ans. Assume that the language is context-free. Let p be the pumping length. Con-
sider the string s = 0p 1p 0p 1p which is in the language with length at least p.
Suppose that s is partitioned into s = uvxyz with |vxy| ≤ p and |vy| > 0. There are
two cases:

2
(i) Both v and y contains only one type of characters.
(ii) Either v or y contains two types of characters.
For the first case, if we consider s as four maximal substrings with contiguous 0s or
1s, we can see that deleting v and y from s can change the number of 0s or 1s in one
or two such substrings, so that uxz is not in the language.
For the second case, since |vxy| ≤ p, we see that v and y cannot both contain two
types of characters. Without loss of generality, let v to be the string with two types
of characters. Then, the string uvvxyyz will be in the form 0a 1b 0c 1d 0e 1f , so that it
is not in the language.
Thus, we find a string in the language which does not satisfy the pumping lemma.
Contradiction occurs, so that we conclude the language is not context-free.
(b) Ans. Assume that the language is context-free. Let p be the pumping length. Con-
sider the string s = 0p 1p #0p 1p which is in the form x1 #x1 . Thus, s is in the language,
and also with length at least p.
Suppose that s is partitioned into s = uvxyz with |vxy| ≤ p and |vy| > 0. There are
two cases:
(i) One of v or y contains #
(ii) Both v and y does not contain #
For case (i), the string uxz must not be in the language, since it does not contain #.
For case (ii), since v and y are within p characters, deleting v and y will not delete
the same characters in the corresponding portions of x1 in s. As a result, the string
uxz must not be in the language.
Thus, we find a string in the language which does not satisfy the pumping lemma.
Contradiction occurs, so that we conclude the language is not context-free.

You might also like