Computational complexity : a modern approach - Arora, Sanjeev (Cambridge University Press, 2009)