# Week 10 - NP overview

Last edited: 2023-11-11

# Complexity classes

Nondeterministic Polynomial time (NP)

In this class we use the search problem definition.

Search problems

Note here we have.

Statement

There is an open problem.

P equals NP or P not equals NP

# Satisfiability

SAT problem

The Satisfiability problem is in NP

# k-colourings problem

Statement

The k-colourings problem is in NP

# MST

MST

Minimum Spanning Tree problem is in NP

This proof was relatively easy as MST is a polynomial time problem. This is shown by what is above and Kruskal’s algorithm .

# Knapsack problem

Statement

Whilst the Knapsack problem is of the correct form to be a search problem we can’t currently check if a solution is correct in polynomial time. Therefore the Knapsack problem isn’t known to be in NP .

Similarly we say that the Knapsack problem isn’t known to be in polynomial time either.

We say it isn’t known to be as there might be a super clever algorithm that happens to solve the Knapsack problem in polynomial time.

However, there is a variant of the problem that is in NP .

Statement

Here instead of having to check if a solution is maximal we can instead just check if it has enough value.

Knapsack-search is NP

# Polynomial time and Nondeterministic Polynomial time

Note that NP isn’t Not Polynomial time . In fact we have the following result.

Polynomial time is a subset of NP-complete

P Vs Np

The question is, are there problems that are in NP but are not in P ?

# NP-complete

If P not equal to NP then we would have a problem in NP that didn’t lie in P . Therefore the green region above would be non-empty.

P Not Equal To Np

Therefore lets look at the hardest problems in NP .

NP-hard

We define a many-one reduction as bellow.

Many-one reduction

However, we want to look at the hardest problems in NP .

NP-Complete

A classic NP-Complete problem is the SAT problem .

# Reductions functionally

To show a many-one reduction from $A$ to $B$ you need to construct $f$ a way to transform an instance of problem $A$ into some input to the problem $B$. This needs to be done in polynomial time. Then the solution from solving $f(I)$ in problem $B$ should relate back to the solution of problem $A$. Either you should construct $h$ a way to transform the solution from problem $B$ into a solution to problem $A$ or forward on the fact that no solution can exist.

reduction

Therefore to show $A$ reduces to $B$ we need:

  • Define $f$: Show how an instance of problem $A$ can be converted into an instance of problem $B$ in polynomial time.
  • Define $h$: Show how a solution to the problem $B$ can be converted into a solution to problem $A$ in polynomial time.
  • Proof: Show that a solution for $B$ exists if and only if a solution to $A$ exists.

# Showing NP-Complete

To show a problem $A$ is NP-Complete need to show

Generically showing $A$ is NP-hard , is ironically quite hard. However we get around this by having some NP-complete problems already, such as the SAT problem . Then to show $A$ is NP-hard we just need to show another NP-Complete problem reduces to it. So functionally we show:

  • $A$ is NP , and
  • there is some NP-complete problem $B$ that reduces to $A$.

# Practice problems

From Algorithms by S. Dasgupta, C. Papadimitriou, and U. Vazirani.

8.1 Optimisation vs Search problems
8.2 Search problems vs Decision problems