4. Constructing DFAs.
For each of the following languages, give a DFA that decides it. You may give each DFA by
defining its formal components, or as a state-transition diagram, whichever you prefer. Briefly
justify your answers.
(a) The language over alphabet {a,b} corresponding to ab*.
(b) The language over alphabet {a,b} corresponding to b(aaa)*b.