HW1 Solution 1.4 a. 1 { | has at least three `s} L w w a = { | has at

HW1 Solution
1.4
a. L1 = {w | w has at least three a's}
b
b
b
a
a,b
a
a
L2 = {w | w has at least two b's}
a
a
a,b
b
b
Combining them using the intersection construction gives the DFA:
a
a
a
b
b
a
b
a
b
a
b
b
a
b
a
b
a
b
b
a
b
c. L1 = {w | w has an even number of a's}
b
b
a
a
a
a,b
L2 = {w | w has one or two b's}
a
a
a
b
a,b
b
b
Combining them using the intersection construction gives the DFA:
b
b
a
a
b
a
a
b
a
b
a
b
a
a
b
b
e. L1 = {w | w starts with an a}
a,b
a
b
a,b
L2 = {w | w has at most one b}
a
a
b
a,b
b
Combining them using the intersection construction gives the DFA:
a,b
a
b
b
a
a
a,b
a
b
b
f. L1 = {w | w has an odd number of a ' s}
a
a
b
b
L2 = {w | w ends with a b}
a
b
a
b
Combining them using the intersection construction gives the DFA:
a
a
b
b
a
b
a
b
g. L1 = {w | w has even length}
a,b
a,b
L2 = {w | w has an odd number of a's}
a
a
b
b
Combining them using the intersection construction gives the DFA:
b
b
a
a
b
a
b
a
1.6
c.
1
0
1
0
1
e.
0,1
0,1
0
1
0,1
0
0
0,1
0,1
1
l.
1
1
0
0
1
0
1
0
1
0
0
1
0
0
1
1
1.7
c.
1
1
0
ε
0
0
ε
1
d.
0
g.
ε
0
0
1
1.14
a. Proof:
As for DFA, at each state, it will consider all kinds of input, and make exactly one kind of
transition according to the given input. And if language B is recognized by DFA M, it means that
any string belongs to B will begin from the start state of M and reach the accept state of M at the
end. Hence, if we swap the accept states and nonaccept states of M, strings of language B will no
longer be acceptable for this new DFA. Instead, the new DFA can accept any regular language
other than B, which implies that the new DFA can recognize the complement of B.
Because the new DFA is also a DFA, so the language accepted by this new DFA is also regular
language, which means that the class of regular languages is closed under complement.
b.
As for NFA, at each state, for a certain kind of input, it may have different ways of transition. So,
swapping the accept and nonaccept states doesn’t necessarily yield a new NFA that recognizes
the complement of C.
Here is an example. Consier NFA N2 in textbook, page 51. Originally, it can accept all strings
over {0,1} containing a 1 in the third position from the end, which means it can accept string
000100. After swapping the accept states and nonaccept states, it can still accept the same string,
000100. Clearly, in this case, the new NFA cannot recognize the complement of C.
Class of languages recognized by NFAs is closed under complement. Because, every NFA has
an equivalent DFA, so for any language that can be accepted by a NFA, we can construct an
equivalent DFA, then swap the accept states and nonaccept states of the constructed DFA, we
will have a new DFA that recognize the complement of original language.
1.17
a.
ε
ε
3
0
6
1
9
0
7
0
10
1
12
0
8
1
11
0
13
ε
1
ε
2
ε
4
ε
5
b.
0
0
1
0
6,7,8
1
10
0
2,3,4,5,12
0
1
6,7,8,10
0
1,2,3,4,5
0
2,3,4,5
9,11
0
2,3,4,5
6,7,8,13
1
1
1
1
∅
1
2,3,4,5
9,11,12
1.20
The answer to this problem could be different.
a) Member: ab; aabb
Not Member: aba; abba
b) Member: abab; ab
Not Member: aaba; ba
c) Member: a; b
Not Member: ab; bba
d) Member: aaa; ε
Not Member: ab; ba
e) Member: aba; aaba
Not Member: bbb; aaa
f) Member: aba; bab
Not Member: aa; bb
g) Member: b; ab
Not Member: ba; bba
h) Member: a; ba
Not Member: aaa; bbb