Originally prepared by Nicolas Gorse
Let us consider languages over an alphabet consisting of two letters: V={a, b} . Give the regular expressions corresponding to the informally defined languages below:
- All words starting with aa .
Solution: aa (a | b)*
- All words containing aa .
Solution: (a | b)* aa (a | b)*
- All words containing an even number of letters.
Solution: ((a | b)(a | b))*
- All words containing an even number of letter a .
Solution: (b*a b*a b*)*
- All words which length is a multiple of 5.
Solution: ((a | b)(a | b)(a | b)(a | b)(a | b))*
- All words containing three consecutive a .
Solution: (a | b)* aaa (a | b)*
- All words which do not contain three consecutive a .
Solution: (b* (ab
+
)* (aab
+
)* b*)* | (b* (ab
+
)* (aab
+
)* b*)* (a | aa) or better: (b | ab | aab)* (ε | a | aa)
For each regular expression below, give an accepting automaton that accepts the language defined the regular expression:
- L = (a | b) c ex. {ac, bc}
- L = a* b ex. {b, ab, aab, aaab, ...}
- L = a* (a b c)*
- L = (a | b)*
- L = (a | b) c* c b b*