How to reduce this regular expression into DFA
What can be done so that this regex can be converted to DFA easily?


Algorithmic methods are doomed, if you insist on a DFA. Your regular expression contains about sixty characters. Roughly speaking, any procedure for converting to an automaton is going to produce at least one state per character of the regular expression. That means you're going to end up with an automaton with at least sixty states, and it's probably going to be nondeterministic. Determinizing that na&iuml;vely is going to give you $2^{&gt;60}$ states, which isn't quite as many as the number of atoms in the earth, but it's still an unmanageably huge number.

Do you really need a DFA? If, for example, you're trying to write a program that will accept strings that match this regular expression, it's straightforward to check if an NFA accepts a particular string: just scan along the string keeping track of the set of states the automaton could be in after each successive character. For a fixed automaton, this can be done in linear time.

If you do need a DFA, you're going to have to figure out what the regular expression does. Break it into chunks.  $(a(aa|b)^∗ab|b)$ matches&nbsp;$b$, along with all strings that have an even number of&nbsp;$a$s, begin with&nbsp;$a$ and end&nbsp;$ab$. It's not too difficult to see that this language is matched by the following automaton (I've omitted a trap state that's reached if any character is read from state&nbsp;$q_3$):


If you stare at that for a moment, you'll realise that states $q_0$ and&nbsp;$q_2$ are the same (both say "if&nbsp;$a$, go to&nbsp;$q_1$; else, go to&nbsp;$q_3$") so we can reduce the automaton to the following.

You could also use algorithmic state-minimization techniques to avoid having to notice things like this.

You can probably produce similar automata for the various "top-level" chunks of the regular expression, and chain them together to get a DFA for the whole thing.