SHEN’S CLASS NOTES
1
Chapter 34
NP-Completeness
34.1 Basic Concepts
After long time study, people found that some problems
can be efficiently solved, and some problems are so difficult that
only exponential time algorithms are known for them or even no
algorithm at all.
In order to study the intrinsic complexity of computational
problems, we would like to classify problems into different
classes based on their difficulty levels.
If a problem can be solved in time that is a polynomial
function of
n
, where
n
is the input size, we say that this problem
belongs to
class P
. Class
P
problems are called tractable because
they can be solved in polynomial time. A problem that requires
super-polynomial time is called intractable.
There is a class of problems whose tractability is not known
yet. We call this class
NP-complete
(NPC). If a problem belongs
to NPC class, then it is a hard problem because no body can
provide a polynomial algorithm for it so far. However, it has not
been proved yet that they are indeed not polynomial solvable.
In order to study the intrinsic complexity of problems, we
introduce the
NP class
. A problem belongs to the NP class if it
can be solved by an NP algorithm in polynomial time. An NP
algorithm is an algorithm run on a powerful but hypothetical
computing model called
non-deterministic machine
model. All
NPC problems can be solved by an NP algorithm in polynomial
time. Moreover, it is proved that if any NPC problem can be
solved in the future by a (deterministic) polynomial algorithm,

This ** preview** has intentionally

**sections.**

*blurred***to view the full version.**

*Sign up*