Introduction to Automata Theory: Languages and Computation - Hopcroft, John E. (Addison-Wesley, 1979)