Introduction to NPComplete Complexity Classes (original) (raw)

Last Updated : 16 Mar, 2026

NP-complete problems are a subset of the larger class of NP problems. NP problems are a class of computational problems that can be solved in polynomial time by a non-deterministic machine and can be verified in polynomial time by a deterministic Machine.

np-complete-complexity-classes

NP-Complete Complexity Classes

A decision problem L is NP-complete if it follow the below two properties:

  1. L is in NP (Any solution to NP-complete problems can be checked quickly, but no efficient solution is known).
  2. Every problem in NP is reducible to L in polynomial time (Reduction is defined below).

A problem is NP-Hard if it obeys Property 2 above and need not obey Property 1. Therefore, a problem is NP-complete if it is both NP and NP-hard.

Decision vs Optimization Problems

NP-Completeness is defined for decision problems because their difficulty is easier to compare. In many cases, solving the decision version efficiently also helps solve the corresponding optimization problem using a polynomial number of calls.

What is Reduction?

Let L1 and L2 be two decision problems. Suppose algorithm A2 solves L2. That is, if y is an input for L2 then algorithm A2 will answer Yes or No depending upon whether y belongs to L2 or not.
The idea is to find a transformation from L1 to L2 so that algorithm A2 can be part of algorithm A1 to solve L1.

How to prove that a given problem is NP-complete?

  1. From the definition of NP-Complete, it seems difficult to prove that a problem L is NP-Complete.
  2. By definition, we would need to show that every problem in NP can be reduced to L in polynomial time.
  3. Fortunately, there is an easier method to prove NP-Completeness.
  4. We take a known NP-Complete problem and reduce it to L.
  5. If this reduction can be done in polynomial time, then L is NP-Complete.
  6. This works due to the transitivity property of reduction.
  7. If an NP-Complete problem reduces to L, then all NP problems can also be reduced to L in polynomial time.

**What was the first problem proved as NP-Complete?

There must be some first NP-Complete problem proved by the definition of NP-Complete problems. SAT (Boolean satisfiability problem) is the first NP-Complete problem proved by Cook (See CLRS book for proof).

It is always useful to know about NP-Completeness even for engineers. Suppose you are asked to write an efficient algorithm to solve an extremely important problem for your company. After a lot of thinking, you can only come up exponential time approach which is impractical. If you don't know about NP-Completeness, you can only say that I could not come up with an efficient algorithm. If you know about NP-Completeness and prove that the problem is NP-complete, you can proudly say that the polynomial-time solution is unlikely to exist. If there is a polynomial-time solution possible, then that solution solves a big problem of computer science many scientists have been trying for years.

NP-Complete problems and their proof for NP-Completeness.

  1. Prove that SAT is NP Complete
  2. Prove that Sparse Graph is NP-Complete
  3. Prove that KITE is NP-Complete
  4. Prove that Hamiltonian Cycle is NP-Complete
  5. Subset Sum is NP Complete
  6. Prove that Collinearity Problem is NP Complete
  7. Set partition is NP complete
  8. Hitting Set problem is NP Complete
  9. 3-coloring is NP Complete
  10. Set cover is NP Complete
  11. Optimized Longest Path is NP Complete
  12. Double SAT is NP Complete
  13. Prove that 4 SAT is NP complete
  14. Prove that Dense Subgraph is NP Complete by Generalisation
  15. Prove that a problem consisting of Clique and Independent Set is NP Complete
  16. Prove that Almost-SAT is NP Complete
  17. Prove that MAX-SAT is NP Complete
  18. Prove Max2SAT is NP-Complete by Generalisation
  19. Subset Equality is NP Complete
  20. Hitting Set problem is NP Complete