P · NP · Reductions

Computational Complexity

Classify decision and optimization problems by their time/space requirements. Reductions transfer hardness across problems; NP-complete problems are universal for NP under polynomial-time reductions.

📘 Overview

Complexity theory studies the inherent difficulty of computational problems independent of specific hardware. It asks how resources like time and memory scale with input size and how problem classes relate.

📚 Fundamentals

🛠️ Guides

How to Show NP-Completeness

  1. Prove the problem is in NP (certificates verifiable in poly-time).
  2. Choose a known NP-complete problem (e.g., 3-SAT).
  3. Construct a polynomial-time reduction to your problem.
  4. Argue correctness: yes-instances map to yes-instances and vice versa.

Common Reductions

🌍 Applications

🚀 Advanced

🧪 Examples

❓ Frequently Asked Questions

1) Is P = NP?
Open problem; resolving it would reshape computing and cryptography.
2) Why polynomial time?
Robust notion of efficient algorithms with closure properties.
3) Are all NP problems hard?
No. Some are in P (e.g., 2-SAT, bipartite matching).
4) What is NP-hard vs NP-complete?
NP-hard may lie outside NP; NP-complete is both NP-hard and in NP.
5) What about randomized algorithms?
Classes like BPP capture efficient randomized computation.
6) Do reductions preserve approximability?
Gap-preserving reductions help transfer approximation hardness.
7) Are practical instances easy?
Many real-world instances are structured; solvers exploit this.
8) Does quantum break NP-complete?
No known quantum algorithm solves NP-complete problems in poly-time.
9) Why parameterized complexity?
It isolates hard aspects into parameters for tractability.
10) Best references?
Sipser’s “Introduction to the Theory of Computation”; Arora–Barak.