Introduction to the theory of computation - Sipser, Michael (Thomson Learning, 2007)