CSC 4170
Theory of Computation
The class NP
Section 7.3
7.3.a
The HAMPATH problem
A Hamiltonian path in a directed graph G is a directed path that goes through each
node exactly once. We consider a special case of this problem where the start node
and target node are fixed.
HAMPATH = {<G,s,t> | G is a directed graph with a Hamiltonian path from s to t}
1
5
PATH?
3
s
t
4
2
6
1
5
3
s
t
4
2
6
HAMPATH?
HAMPATH?
7.3.b
Polynomial verifiability
Does this graph have a
Hamiltonian path?
s
t
7.3.c
The COMPOSITES problem
COMPOSITES = {x | x=pq for some integers p,q>1}
15 COMPOSITES ?
17 COMPOSITES ?
77 COMPOSITES ?
10403 COMPOSITES ?
997,111,111,911,111,119,131,119,871
COMPOSITES ?
COMPOSITES is very easily seen to be verifiable in polynomial time.
But only a few years ago it was proven that it is also decidable in
polynomial time. The same question, however, remains open for
HAMPATH --- one of the seven $1,000,000 questions!
7.3.d
Giorgi Japaridze
NP in terms of nondeterministic Turing machines
Definition NP is the class of languages decided by some
nondeterministic polynomial time Turing machine.
Theory of Computability
7.3.e
Giorgi Japaridze
Theory of Computability
The CLIQUE problem
A k-clique in an undirected graph is a subgraph
with k nodes, wherein every two nodes are
connected by an edge. On the right we see a
5-clique
CLIQUE = {<G,k> | G is an undirected graph with a k-clique}
Theorem 7.24 CLIQUENP.
Proof. Here is a polynomial time NTM N deciding CLIQUE:
N = “On input <G,k>:
1. Nondeterministically select a subset c of k nodes of G.
2. Test whether G contains all edges connecting nodes in c.
3. If yes, accept; otherwise reject.”
7.3.f
Giorgi Japaridze
Theory of Computability
The SUBSET-SUM problem
SUBSET-SUM = {<S,t> | S is a multiset of integers and, for some
RS, the sum of all elements of R equals t}
Theorem 7.25 SUBSET-SUMNP.
Proof. Here is a polynomial time NTM N deciding SUBSET-SUM:
N = “On input <S,t>:
1. Nondeterministically select a subset c of S.
2. Test whether the elements of c sum up to t.
3. If yes, accept; otherwise reject.”
7.3.g
Giorgi Japaridze
Theory of Computability
P vs. NP vs. coNP vs. EXPTIME
Definitions
coNP = {L | L is the complement of some language in NP}
EXPTIME = TIME(2n1) TIME(2n2) TIME(2n3) …
This is what we know:
P: membership can be decided quickly
NP: membership can be verified quickly
coNP: membership can be refuted quickly
EXPTIME: none of the above
P
coNP
NP
This is what we do not know:
EXPTIME
P = NP?
NP = coNP?
NP coNP ≠ EXPTIME
P = NP coNP?
© Copyright 2026 Paperzz