Introduction to the theory of computation - Sipser, Michael (Cengage Learning, 2013)