Computational complexity is one of the most beautiful fields of modern mathematics, and it is increasingly relevant to other sciences ranging from physics to biology. But this beauty is often buried underneath layers of unnecessary formalism, and exciting recent results like interactive proofs, cryptography, and quantum computing are usually considered too "advanced" to show to the typical student. The aim of this book is to bridge both gaps by explaining the deep ideas of theoretical computer science in a clear and enjoyable fashion, making them accessible to non computer scientists and to computer scientists who finally want to understand what their formalisms are actually telling.
This book gives a lucid and playful explanation of the field, starting with P and NP-completeness. The authors explain why the P vs. NP problem is so fundamental, and why it is so hard to resolve. They then lead the reader through the complexity of mazes and games; optimization in theory and practice; randomized algorithms, interactive proofs, and pseudorandomness; Markov chains and phase transitions; and the outer reaches of quantum computing.
At every turn, they use a minimum of formalism, providing explanations that are both deep and accessible. The book is intended for graduates and undergraduates, scientists from other areas who have long wanted to understand this subject, and experts who want to fall in love with this field all over again.
Table of Contents
Chapter 1 Prologue
Chapter 2 The Basics
Chapter 3 Insights and Algorithms
Chapter 4 Needles in a Haystack: the Class NP
Chapter 5 Who is the Hardest One of All? NP-Completeness
Chapter 6 The Deep Question: P vs. NP
Chapter 7 The Grand Unified Theory of Computation
Chapter 8 Memory, Paths, and Games
Chapter 9 Optimization and Approximation
Chapter 10 Randomized Algorithms
Chapter 11 Interaction and Pseudorandomness
Chapter 12 Random Walks and Rapid Mixing
Chapter 13 Counting, Sampling, and Statistical Physics
Chapter 14 When Formulas Freeze: Phase Transitions in Computation
Chapter 15 Quantum Computation