Book contents
- Frontmatter
- Dedication
- Contents
- Preface
- Acknowledgments
- 1 Atoms and the void
- 2 Sets
- 3 Gödel, Turing, and friends
- 4 Minds and machines
- 5 Paleocomplexity
- 6 P, NP, and friends
- 7 Randomness
- 8 Crypto
- 9 Quantum
- 10 Quantum computing
- 11 Penrose
- 12 Decoherence and hidden variables
- 13 Proofs
- 14 How big are quantum states?
- 15 Skepticism of quantum computing
- 16 Learning
- 17 Interactive proofs, circuit lower bounds, and more
- 18 Fun with the Anthropic Principle1
- 19 Free will
- 20 Time travel
- 21 Cosmology and complexity
- 22 Ask me anything
- Index
6 - P, NP, and friends
Published online by Cambridge University Press: 05 April 2013
- Frontmatter
- Dedication
- Contents
- Preface
- Acknowledgments
- 1 Atoms and the void
- 2 Sets
- 3 Gödel, Turing, and friends
- 4 Minds and machines
- 5 Paleocomplexity
- 6 P, NP, and friends
- 7 Randomness
- 8 Crypto
- 9 Quantum
- 10 Quantum computing
- 11 Penrose
- 12 Decoherence and hidden variables
- 13 Proofs
- 14 How big are quantum states?
- 15 Skepticism of quantum computing
- 16 Learning
- 17 Interactive proofs, circuit lower bounds, and more
- 18 Fun with the Anthropic Principle1
- 19 Free will
- 20 Time travel
- 21 Cosmology and complexity
- 22 Ask me anything
- Index
Summary
We've seen that if we want to make progress in complexity, then we need to talk about asymptotics: not which problems can be solved in 10000 steps, but for which problems can instances of size n be solved in cn2 steps as n goes to infinity? We met TIME(f(n)), the class of all problems solvable in O(f(n)) steps, and SPACE(f(n)), the class of all problems solvable using O(f(n)) bits of memory.
But if we really want to make progress, then it's useful to take an even coarser-grained view: one where we distinguish between polynomial and exponential time, but not between O(n2) and O(n3) time. From this remove, we think of any polynomial bound as “fast,” and any exponential bound as “slow.”
Now, I realize people will immediately object: what if a problem is solvable in polynomial time, but the polynomial is nn50 000? Or what if a problem takes exponential time, but the exponential is 1.000 000 01n? My answer is pragmatic: if cases like that regularly arose in practice, then it would’ve turned out that we were using the wrong abstraction. But so far, it seems like we’re using the right abstraction. Of the big problems solvable in polynomial time – matching, linear programming, primality testing, etc. – most of them really do have practical algorithms. And of the big problems that we think take exponential time – theorem-proving, circuit minimization, etc. – most of them really don't have practical algorithms. So, that’s the empirical skeleton holding up our fat and muscle.
- Type
- Chapter
- Information
- Quantum Computing since Democritus , pp. 54 - 70Publisher: Cambridge University PressPrint publication year: 2013