Introduction to the Theory of Computation - Sipser ( Michael ) (NY Cengage Learning)