Introduction to Automata Theory, Languages, and Computation 3e - John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman (Pearson, 2008)