Introducation to automata theory languages and computing - Hopcroft Johan E (2001)