CSC314 Design and Analysis of Algorithms

Design and Analysis of AlgorithmsUnit 714 min read

Complexity Classes: P, NP, NP-Complete, and Reductions

Unit 7 of Design and Analysis of Algorithms explores the theoretical foundations of computational complexity, focusing on P vs. NP, NP-complete problems, polynomial-time reductions, and the Cook-Levin theorem. It covers formal definitions, examples (e.g., SAT, Hamiltonian Cycle), and real-world implications for algorit

TAKEAWAYS:

  • P-class problems can be solved in polynomial time by a deterministic Turing machine, while NP-class problems can be verified in polynomial time.
  • NP-complete problems are the hardest in NP: if one is solvable in polynomial time, all NP problems are.
  • Reductions (e.g., polynomial-time reductions) prove problem equivalence by transforming one problem into another.
  • Cook-Levin theorem proves SAT is NP-complete, making it the canonical NP-complete problem.
  • Real-world impact: NP-completeness explains why some problems (e.g., optimal route planning in Pathao) are computationally intractable for large inputs.
  • Exam focus: Define classes, give examples, and explain reductions—no proofs are required unless explicitly asked.

1. Computational Complexity: The Big Picture

Computational complexity studies how efficiently problems can be solved. The two most critical classes are P (problems solvable in polynomial time) and NP (problems verifiable in polynomial time). The relationship between them is one of computer science’s biggest unsolved questions: P = NP? (likely false, but unproven).

Key Definitions

  • Deterministic Turing Machine (DT): A model of computation that solves problems in finite steps. If a DT solves a problem in time, it’s in P.
  • Nondeterministic Turing Machine (NT): A hypothetical machine that can explore all possible solutions simultaneously. If a problem’s solutions can be verified in polynomial time by an NT, it’s in NP.
  • Decision Problem: A yes/no question (e.g., “Is this graph Hamiltonian?”). Many NP problems are decision versions of optimization problems (e.g., “Find the shortest path” → “Is there a path ≤ X?”).

Visual: P vs. NP vs. NP-Complete

[object Object][object Object][object Object]PNPNP-CompleteNP-Hard
Hierarchy of complexity classes (P ⊆ NP ⊆ NP-Hard)

2. The Classes: P, NP, and NP-Complete

P-Class: Problems Solvable Efficiently

  • Definition: Problems solvable in polynomial time () by a deterministic algorithm.
  • Examples:
    • Sorting (e.g., Quicksort: ).
    • Minimum Spanning Tree (Prim’s/Kruskal’s): .
    • Shortest Path (Dijkstra’s): or with a priority queue.
  • Why it matters: These problems have practical algorithms for large inputs.

NP-Class: Problems Verifiable Efficiently

  • Definition: Problems where a proposed solution can be verified in polynomial time, but finding the solution may not be.
  • Examples:
    • SAT (Boolean Satisfiability): Given a logical formula, is there an assignment of variables that satisfies it?
    • Hamiltonian Cycle: Does a graph have a cycle visiting every vertex exactly once?
    • Knapsack Problem: Can a subset of items fill a knapsack without exceeding weight ?
  • Key Insight: NP includes all problems in P, but also harder ones (e.g., factoring large numbers).

NP-Complete: The Hardest in NP

  • Definition: A problem is NP-complete if:
    1. It is in NP.
    2. Every other NP problem can be reduced to it in polynomial time.
  • Examples:
    • SAT: The canonical NP-complete problem (proven by Cook-Levin, 1971).
    • CLIQUE: Given a graph and integer , does it contain a clique of size ?
    • Traveling Salesman Problem (TSP): Is there a tour ≤ length ?
  • Implication: If any NP-complete problem is in P, then P = NP.

Visual: NP-Completeness Hierarchy

0.511.522.533.541234567xyPNPNP-CompleteNP-HardPNPNP-CompleteNP-Hard
Relative hardness of complexity classes (vertical axis = hardness)

3. Polynomial-Time Reductions: Proving NP-Completeness

Reductions show that one problem is at least as hard as another. If Problem A reduces to Problem B, then solving B efficiently would solve A efficiently.

How Reductions Work

  1. Transform an instance of Problem A into an instance of Problem B.
  2. Preserve correctness: If B’s solution solves A, and the transformation is polynomial-time.
  3. Example: Reduce Hamiltonian Cycle (HC) to CLIQUE:
    • Given a graph , construct a graph where two vertices are connected if they are adjacent in or share a common neighbor.
    • Claim: has a Hamiltonian cycle ⇔ has a clique of size .

Visual: Reducing HC to CLIQUE

flowchart LR
    A["Hamiltonian Cycle in G"] -->|"Polynomial Reduction"| B["CLIQUE in G'"]
    B --> C{"Does G' have a clique of size n?"}
    C -->|"Yes"| D["G has HC"]
    C -->|"No"| E["G has no HC"]

Worked Example: Reducing SAT to 3SAT

Problem: Show that 3SAT (SAT with clauses of 3 literals) is NP-complete by reducing SAT to it.

  1. Input: A SAT formula with clauses of any length (e.g., ).
  2. Transformation:
    • Replace each clause with 3-literal clauses using new variables.
    • Example: becomes: , , , , etc.
  3. Correctness: The original formula is satisfiable ⇔ the 3SAT instance is satisfiable.
[object Object][object Object]SAT Formula3SAT Formula
Step-by-step reduction from SAT to 3SAT

4. The Cook-Levin Theorem: SAT is NP-Complete

Proven in 1971, this theorem shows that SAT is NP-complete, making it the foundation for classifying other NP-complete problems.

Key Idea

  • Any NP problem can be encoded as a SAT instance.
  • Steps:
    1. Represent the problem’s solution as a Boolean formula.
    2. Add constraints to ensure the formula captures the problem’s requirements.
    3. Show that verifying a solution to the original problem is equivalent to satisfying the SAT formula.

Visual: SAT Encoding for Hamiltonian Cycle

start[object Object][object Object][object Object][object Object], [object Object]Graph GSAT EncodingSAT FormulaSatisfiable?
Reduction from Hamiltonian Cycle to SAT via encoding

5. Real-World Applications

NP-completeness explains why some problems are computationally intractable for large inputs, even though they seem simple.

## In the Real World

  1. Pathao/Daraz Delivery Routes:

    • Problem: Vehicle Routing Problem (VRP) is NP-hard.
    • Why it matters: Finding the optimal route for 1000 deliveries is computationally infeasible. Pathao uses heuristics (approximate solutions) instead of exact algorithms.
    • Tie to theory: The VRP is a generalization of TSP, which is NP-complete.
  2. eSewa/Khalti Payment Fraud Detection:

    • Problem: Detecting fraudulent transactions (e.g., fake identities) is NP-hard.
    • Why it matters: Checking all possible combinations of suspicious transactions is impractical. Banks use machine learning (not exact algorithms) to flag anomalies.
    • Tie to theory: The problem resembles the Subset Sum problem (NP-complete), where you check if a subset of transactions sums to a suspicious amount.
  3. NTC Traffic Light Optimization:

    • Problem: Optimizing traffic light timings to minimize congestion is NP-hard.
    • Why it matters: Kathmandu’s traffic gridlocks are partly due to suboptimal light sequences. NTC uses simulated annealing (a heuristic) to approximate solutions.
    • Tie to theory: This is a scheduling problem, similar to Job Sequencing with Deadlines (NP-complete).

6. Worked Example: Proving CLIQUE is NP-Complete

Problem: Show that CLIQUE is NP-complete by reducing SAT to it.

Reduction Steps

  1. Input: A SAT formula with variables and clauses.
  2. Construct a graph :
    • Vertices: One for each variable assignment (2^n possible assignments).
    • Edges: Connect two vertices if their assignments satisfy at least one common clause.
  3. Claim: The SAT formula is satisfiable ⇔ has a clique of size .
    • Why: A satisfying assignment corresponds to a set of vertices (one per clause) that are all mutually connected.

Visual: CLIQUE Reduction from SAT

[object Object][object Object][object Object][object Object]SAT InstanceVariable VerticesClause VerticesCLIQUE
CLIQUE construction from SAT instance (Cook reduction)

Trace Table for Small SAT Instance

SAT Formula Graph Vertices (Assignments) Edges (Shared Clauses) CLIQUE Size Satisfiable?
4 assignments: 00, 01, 10, 11 00-01, 00-10, 01-11, 10-11 2 Yes

7. NP-Hard vs. NP-Complete

Property NP-Complete NP-Hard
Definition In NP and NP-hard. At least as hard as NP-complete.
Examples SAT, TSP, CLIQUE. Halting Problem (undecidable, not in NP).
Solvability If P = NP, all NP-complete problems are in P. May not even be in NP (e.g., undecidable problems).
Reduction Can reduce any NP problem to it. Can reduce NP-complete problems to it.

8. Exam Tip: What to Focus On

  1. Definitions:
    • P: Solvable in polynomial time.
    • NP: Verifiable in polynomial time.
    • NP-Complete: In NP and NP-hard.
  2. Examples:
    • P: Sorting, MST.
    • NP-Complete: SAT, TSP, CLIQUE.
    • NP-Hard: Halting Problem (but not in NP).
  3. Reductions:
    • Know how to reduce HC to CLIQUE or SAT to 3SAT.
    • Do not prove P ≠ NP—it’s an open question!
  4. Common Pitfalls:
    • Confusing NP-complete and NP-hard: NP-complete problems are in NP; NP-hard ones may not be.
    • Assuming all NP problems are unsolvable: Many have practical approximations (e.g., Google Maps uses heuristics for TSP).
  5. Exam Questions:
    • Short answers: Define P, NP, NP-complete. Give 2 examples each.
    • Long answers: Explain a reduction (e.g., SAT to 3SAT) or prove a problem is NP-complete.
    • Applications: Relate NP-completeness to real-world problems (e.g., delivery routes, fraud detection).

9. Summary Table

Class Definition Examples Status
P Solvable in polynomial time. Sorting, MST. Confirmed efficient.
NP Verifiable in polynomial time. SAT, Hamiltonian Cycle. Includes P.
NP-Complete In NP and NP-hard. TSP, CLIQUE. P vs. NP open question.
NP-Hard At least as hard as NP-complete. Halting Problem. May not be in NP.

10. Code Example: Checking NP-Completeness (Pseudocode)

While we can’t solve NP-complete problems efficiently, we can verify solutions in polynomial time. Here’s how to verify a Hamiltonian Cycle:

def verify_hamiltonian_cycle(graph, cycle):
    # Check if cycle is valid (visits each vertex exactly once)
    vertices = set(graph.keys())
    cycle_vertices = set(cycle)
    if cycle_vertices != vertices:
        return False
    # Check edges
    for i in range(len(cycle)):
        u = cycle[i]
        v = cycle[(i+1) % len(cycle)]
        if v not in graph[u]:
            return False
    return True  # Verification is O(n)!

Trace for Verification

Step Cycle Check Vertices Check Edges Result
1 [0, 1, 2, 3] {0,1,2,3} == V? 0-1 in G? True
2 1-2 in G? True
3 2-3 in G? True
4 3-0 in G? True
5 All checks Valid

11. Why This Matters for Your Exams

  • Theory-heavy unit: Focus on definitions, examples, and reductions.
  • No proofs required: Unless asked, skip detailed proofs (e.g., of Cook-Levin).
  • Real-world tie-ins: Always relate NP-completeness to optimization problems (e.g., routing, scheduling).
  • Common exam questions:
    • “Explain P, NP, and NP-complete with examples.”
    • “Reduce Problem X to Problem Y.”
    • “Why is TSP NP-complete?” (Hint: Reduce HC to TSP.)

12. Quick Revision Checklist

  1. Can you list 3 P problems and 3 NP-complete problems?
  2. How do you reduce SAT to 3SAT?
  3. What’s the difference between NP-complete and NP-hard?
  4. Why is NP-completeness important in real-world systems like Pathao or eSewa?
  5. Can you verify a Hamiltonian Cycle in polynomial time? (Yes! But finding it may not be.)

Final Note: NP-completeness is about limits. It tells us which problems will always be hard to solve exactly, pushing us to find approximations or heuristics—the bread and butter of real-world algorithm design!

Based on the TU BSc CSIT syllabus for Design and Analysis of Algorithms (CSC314), unit 7.

Discussion

Loading…