I believe your answer is correct.
Let's consider the whole process as two parts: (1) start with start
, and go back to start
; and (2) go from start
to end
and accept. Obviously, the (1) part is a loop.
For (1), starting with start
, either accept b
or a
. For b
, it's b(a+b)
to go back. For a
, it's a(a+b)
to go back. So (1) is b(a+b) + a(a+b)
which is (a+b)(a+b)
.
For (2), it's a
'.
So, the final result is (loop in (1))* (2)
i.e. ( (a+b)(a+b) )* a
.
Follow the description above, you can also come up with a proof of the equivalence between the two. Proof part (a) every sequence accepted by the automata is in the set ((a+b)(a+b))*a
; part (b) every sequence in the set ((a+b)(a+b))*a
is accepted by the automata.