Computational Complexity by Christos H. Papadimitriou & Christos Papadimitriou