Complexity Theory: A Modern Approach ©2008 (Sanjeev Arora and Boaz Barak)
This is a draft of a textbook on computational complexity theory. It is intended as a text for an advanced undergraduate course or introductory graduate course, or as a reference for researchers and students in computer science and allied fields such as mathematics and physics.
Computational complexity theory has developed rapidly in the past three decades. The list of
surprising and fundamental results proved since 1990 alone could fill a book: these include new
probabilistic definitions of classical complexity classes (IP = PSPACE and the PCP Theorems)
and their implications for the field of approximation algorithms; Shor’s algorithm to factor integers
using a quantum computer; an understanding of why current approaches to the famous P versus
NP will not be successful; a theory of derandomization and pseudorandomness based upon computational
hardness; and beautiful constructions of pseudorandom objects such as extractors and
expanders.
This book aims to describe such recent achievements of complexity theory in the context of
the classical results. It is intended to both serve as a textbook as a reference for self-study. This
means it must simultaneously cater to many audiences, and it is carefully designed with that goal.
Throughout the book we explain the context in which a certain notion is useful, and why things
are defined in a certain way. Examples and solved exercises accompany key definitions. We assume
essentially no computational background and very minimal mathematical background, which we
review in Appendix A.
View/download the book ->