I replicated my exact procedure below ! @vijaycs and @saurav please verify any intermediate wrong conclusion if I have done !
L = $\\ \text{regex} = a^{*}b + bb^*a \\ \\ = (\epsilon +aa^*)b+bb^*a\\ \\ = b + aa^*b+bb^*a\\$
- Started with accepting the minimum string 'b' of L
- filling arrows at q1 now,
On 'a' form q1 we can not loop at q1. q2 is created. q2 becomes ending with 'a' state.
- still completing arrows at q1
On reading 'b' from q1 we can not loop at q1, because then $b^n$ will be accepted.
- Completing arrows at q3 now.
Yes we can loop at q3 on reading 'b'.
- Still Completing arrows at q3.
On reading 'a' from q3 send it to ending with a state q2. Btw one more edge has been added on q0. On 'a' from q0 none of the existing states can be reused. So q4 is created.
- Completing arrows on q4 now.
Reused q4 on reading 'a' and create new state q5 for 'b'. Mark q5 it as final and call it as ending with b state.
- Trap state is added from q2 and q5.
- Now I observe for final states that can be merged to a single states.I found q2 and q5 are doing the same thing on similar inputs and going to the same type ( or class ) of state (T)