Introduction to Automata Theory, Languages, and Computation
John E. Hopcroft & Rajeev Motwani & Jeffrey D. Ullman