0% found this document useful (0 votes)
10 views46 pages

Lec 2

This document discusses computational complexity theory, focusing on classes P and NP, decision problems, and NP-completeness. It defines key concepts such as deterministic polynomial-time (P), nondeterministic polynomial-time (NP), and polynomial-time reductions, providing examples of problems in each class. The document also highlights the significance of the P vs NP question and its implications for mathematics and computer science.

Uploaded by

Mridul Gupta
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views46 pages

Lec 2

This document discusses computational complexity theory, focusing on classes P and NP, decision problems, and NP-completeness. It defines key concepts such as deterministic polynomial-time (P), nondeterministic polynomial-time (NP), and polynomial-time reductions, providing examples of problems in each class. The document also highlights the significance of the P vs NP question and its implications for mathematics and computer science.

Uploaded by

Mridul Gupta
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 46

Computational Complexity

Theory

Lecture 2: Classes P & NP, Reductions,


NP-completeness

Indian Institute of
Science
Complexity classes
P and FP
Decision Problems
In the initial part of this course, we’ll focus
primarily on decision problems.
Decision Problems
In the initial part of this course, we’ll focus
primarily on decision problems.

Decision problems can be naturally


identified with boolean functions, i.e.
functions from {0,1}* to {0,1}.
Decision Problems
In the initial part of this course, we’ll focus
primarily on decision problems.

Decision problems can be naturally


identified with boolean functions, i.e.
functions from {0,1}* to {0,1}.

Boolean functions can be naturally


identified with sets of {0,1} strings, also
called languages.
Decision Problems

Decision problems Boolean functions


Languages

Definition. We say a TM M decides a


language L ⊆ {0,1}* if M computes fL, where
fL(x) = 1 if and only if x ∈ L.
Complexity Class P
Let T: N N be some function.

Definition: A language L is in DTIME(T(n))


if there’s a TM that decides L in time
O(T(n)).

c>
Defintion: Class P = ∪ DTIME (nc).
0
Complexity Class P
Let T: N N be some function.

Definition: A language L is in DTIME(T(n))


if there’s a TM that decides L in time
O(T(n)).

c>
Defintion: Class P = ∪ DTIME (nc).
0

Deterministic polynomial-time
Complexity Class P : Examples
Cycle detection (DFS)
 Check if a given graph has a cycle.
Complexity Class P : Examples
Cycle detection

Solvabililty of a system of linear equations


(Gaussian elimination)
 Given a system of linear equations over Q check if
there exists a common solution to all the linear
equations.
Complexity Class P : Examples
Cycle detection

Solvabililty of a system of linear equations

Perfect matching (Edmonds 1965)


 Check if a given graph has a perfect matching
Complexity Class P : Examples
Cycle detection

Solvabililty of a system of linear equations

Perfect matching

Primality testing (AKS test 2002)


 Check if a number is prime
Polynomial time Turing Machines

Definition. A TM M is a polynimial time TM


if there’s a polynomial function q: N N
such that for every input x ∈ {0,1}*, M
halts within q(|x|) steps.
Polynomial function. q(n) = nc for some
constant c
Class (functional) P
What if a problem is not a decision
problem? Like the task of adding two
integers.
Class (functional) P
What if a problem is not a decision
problem? Like the task of adding two
integers.
One way is to focus on the i-th bit of the
output and make it a decision problem.
(Is the i-th bit, on input x, 1?)
Class (functional) P
What if a problem is not a decision
problem? Like the task of adding two
integers.
One way is to focus on the i-th bit of the
output and make it a decision problem.

Alternatively, we define a class called


functional P or FP.
Class (functional) P
What if a problem is not a decision problem?
Like the task of adding two integers.
One way is to focus on the i-th bit of the
output and make it a decision problem.

 We say that a problem or a function f:


{0,1}* {0,1}* is in FP (functional P) if
there’s a polynomial-time TM that computes
f.
Complexity Class FP : Examples

Greatest Common Divisor (Euclid ~300


BC)
 Given two integers a and b, find their gcd.
Complexity Class FP : Examples

Greatest Common Divisor

Counting paths in a DAG (homework)


 Find the number of paths between two vertices in a
directed
acyclic graph.
Complexity Class FP : Examples

Greatest Common Divisor

Counting paths in a DAG

Maximum matching (Edmonds 1965)


 Find a maximum matching in a given graph
Complexity Class FP : Examples

Greatest Common Divisor

Counting paths in a DAG

Maximum matching

Linear Programming (Khachiyan 1979,


Karmarkar 1984)
 Optimize a linear objective function subject to linear
(in)equality constraints
Complexity class NP
Complexity Class NP
Solving a problem is generally harder than
verifying a given solution to the problem.
Complexity Class NP
Solving a problem is generally harder than
verifying a given solution to the problem.

Class NP captures the set of decision


problems whose solutions are efficiently
verifiable.
Complexity Class NP
Solving a problem is generally harder than
verifying a given solution to the problem.

Class NP captures the set of decision


problems whose solutions are efficiently
verifiable.
Nondeterministic polynomial-
time
Complexity Class NP
Definition. A language L ⊆ {0,1}* is in NP
if there’s a polynomial function p: N N
and a polynomial time TM M (called the
verifier) such that for every x,

x∈L ∃u ∈ {0,1}p(|x|) s.t. M(x,


u) = 1
Complexity Class NP
Definition. A language L ⊆ {0,1}* is in NP
if there’s a polynomial function p: N N
and a polynomial time TM M (called the
verifier) such that for every x,

x∈L ∃u ∈ {0,1}p(|x|) s.t. M(x,


u) = 1
u is called a certificate or
witness for x (w.r.t L and
M) if x ∈ L
Complexity Class NP
Definition. A language L ⊆ {0,1}* is in NP
if there’s a polynomial function p: N N
and a polynomial time TM M (called the
verifier) such that for every x,

x∈L ∃u ∈ {0,1}p(|x|) s.t. M(x,


u) = 1

It follows that verifier M cannot be fooled!


Complexity Class NP
 Definition.
A language L ⊆ {0,1}* is in NP if
there’s a polynomial function p: N N and a
polynomial time TM M (called the verifier)
such that for every x,

x∈L ∃u ∈ {0,1}p(|x|) s.t. M(x, u)


=1

 Class
NP contains those problems (languages)
which have such efficient verifiers.
Class NP : Examples
Vertex cover
 Given a graph G and an integer k, check if G
has a vertex cover of size k.
Class NP : Examples
Vertex cover

0/1 integer programming


 Given a system of linear (in)equalities with
integer coefficients, check if there’s a 0-1
assignment to the variables that satisfy all the
(in)equalities.
Class NP : Examples
Vertex cover

0/1 integer programming

Integer factoring
 Given 2 numbers n and U, check if n has a
nontrivial factor less than equal to U.
Class NP : Examples
Vertex cover

0/1 integer programming

Integer factoring

Graph isomorphism
Given 2 graphs, check if they are isomorphic
Is P = NP ?
Obviously, P ⊆ NP.

Whether or not P = NP is an outstanding


open question in mathematics and TCS!
Is P = NP ?
Obviously, P ⊆ NP.

Whether or not P = NP is an outstanding


open question in mathematics and TCS!

Solving a problem does seem harder than


verifying its solution, so most people
believe that P ≠ NP.
Is P = NP ?
Obviously, P ⊆ NP.

Whether or not P = NP is an outstanding


open question in mathematics and TCS!

P = NP has many weird consequences,


and if true, will pose a serious threat to
secure and efficient cryptography.
Is P = NP ?
Obviously, P ⊆ NP.

Whether or not P = NP is an outstanding


open question in mathematics and TCS!

Mathematics has gained much from


attempts to prove such negative statements
—Galois theory, Godel’s incompleteness,
Fermat’s Last Theorem, Turing’s
undecidability, Continuum hypothesis etc.
Is P = NP ?
Obviously, P ⊆ NP.

Whether or not P = NP is an outstanding


open question in mathematics and TCS!

Complexity theory has several of such


intriguing unsolved questions.
Karp reductions
Polynomial time reduction
Definition.
We say a language L1 ⊆ {0,1}*
is polynomial time (Karp) reducible to a
language L2 ⊆ {0,1}* if there’s a
polynomial time computable function f s.t.
x∈L1 f(x)∈L2

L1 f(L1)

L2

L2
L1 f(L1
)
Polynomial time reduction
 Definition.
We say a language L1 ⊆ {0,1}* is
polynomial time (Karp) reducible to a language
L2 ⊆ {0,1}* if there’s a polynomial time
computable function f s.t.
x∈L1 f(x)∈L2

 Notation. L1 ≤p L2

 Observe. If L1 ≤p L2 and L2 ≤p L3 then L1 ≤p


L3 .
NP-completeness
Definition. A language L’ is NP-hard if for
every L in NP, L ≤p L’. Further, L’ is NP-
complete if L’ is in NP and is NP-hard.

Observe. If L’ is NP-hard and L’ is in P then


P = NP. If L’ is NP-complete then L’ in P if
and only if P = NP.
NPC Hardest problems inside NP in
the sense that if one NPC
NP problem is in P then all problems
in NP is in P.
P
NP-completeness
 Definition. A language L’ is NP-hard if for
every L in NP, L ≤p L’. Further, L’ is NP-
complete if L’ is in NP and is NP-hard.

 Observe. If L’ is NP-hard and L’ is in P then P


= NP. If L’ is NP-complete then L’ in P if and
only if P = NP.

 Exercise.Let L1 ⊆ {0,1}* be any language and


L2 be a language in NP. If L1 ≤p L2 then L1 is
also in NP.
Few words on reductions
 As to how we define a reduction from one
language to the other (or one function to the
other) is usually guided by a question on whether
two complexity classes are different or identical.

 For
polynomial time reductions, the question is
whether P equals NP.

 Reductions help us define complete problems


(the ‘hardest’ problems in a class) which in turn
help us compare the complexity classes under
consideration.
Class P and NP : Examples
Vertex cover (NP-complete)
0/1 integer programming (NP-complete)
Integerfactoring (unlikely to be NP-
complete)
Graph isomorphism (Quasi-P)
Primality testing (P)
Linear programming (P)
How to show existence of an NPC
problem?

LetL’ = { (α, x, 1m, 1t ) : there exists a u


∈{0,1}m s.t. Mα accepts (x, u) in t steps }

Observation. L’ is NP-complete.

The language L’ involves Turing machine in


its definition. Next, we’ll see an example of
an NP-complete problem that is arguably
more natural.

You might also like