Elements of the Theory of Computation by Christos H. Papadimitriou, Christos Papadimitriou & Harry Lewis