This document discusses computational complexity and defines the classes P, NP, and NP-complete problems. It begins by explaining that P problems can be solved in polynomial time, while problems that cannot are intractable. NP problems can be solved by a nondeterministic polynomial time algorithm and include all P problems plus many difficult combinatorial problems. The document then defines NP-complete problems as NP problems to which every other NP problem can be reduced in polynomial time. It is an open question whether P equals NP.
This document discusses computational complexity and defines the classes P, NP, and NP-complete problems. It begins by explaining that P problems can be solved in polynomial time, while problems that cannot are intractable. NP problems can be solved by a nondeterministic polynomial time algorithm and include all P problems plus many difficult combinatorial problems. The document then defines NP-complete problems as NP problems to which every other NP problem can be reduced in polynomial time. It is an open question whether P equals NP.
This document discusses computational complexity and defines the classes P, NP, and NP-complete problems. It begins by explaining that P problems can be solved in polynomial time, while problems that cannot are intractable. NP problems can be solved by a nondeterministic polynomial time algorithm and include all P problems plus many difficult combinatorial problems. The document then defines NP-complete problems as NP problems to which every other NP problem can be reduced in polynomial time. It is an open question whether P equals NP.
This document discusses computational complexity and defines the classes P, NP, and NP-complete problems. It begins by explaining that P problems can be solved in polynomial time, while problems that cannot are intractable. NP problems can be solved by a nondeterministic polynomial time algorithm and include all P problems plus many difficult combinatorial problems. The document then defines NP-complete problems as NP problems to which every other NP problem can be reduced in polynomial time. It is an open question whether P equals NP.
Download as PPTX, PDF, TXT or read online from Scribd
Download as pptx, pdf, or txt
You are on page 1of 11
Chapter 14
P, NP, and NP-Complete
Problems Introduction In the study of the computational complexity of problems, the first concern of both computer scientists and computing professionals is whether a given problem can be solved in polynomial time by some algorithm. We say that an algorithm solves a problem in polynomial time if its worst-case time efficiency belongs to O(p(n)) where p(n) is a polynomial of the problem’s input size n. Note that since we are using big-oh notation here, problems solvable in, say, logarithmic time are solvable in polynomial time as well. Problems that can be solved in polynomial time are called tractable. problems that cannot be solved in polynomial time are called intractable.
Prepared By: Eyob S. 2
P problems Class P is a class of decision problems that can be solved in polynomial time by (deterministic) algorithms. This class of problems is called polynomial. The restriction of P to decision problems can be justified by the following reasons. First, it is sensible to exclude problems not solvable in polynomial time because of their exponentially large output. Second, many important problems that are not decision problems in their most natural formulation can be reduced to a series of decision problems that are easier to study. It is natural to wonder whether every decision problem can be solved in polynomial time. The answer to this question turns out to be no.
Prepared By: Eyob S. 3
In fact, some decision problems cannot be solved at all by any algorithm. Such problems are called un-decidable, as opposed to decidable problems that can be solved by an algorithm. Are there decidable but intractable problems? Yes, there are, but the number of known examples is surprisingly small, especially of those that arise naturally rather than being constructed for the sake of a theoretical argument. There are many important problems, however, for which no polynomial-time algorithm has been found, nor has the impossibility of such an algorithm been proved. Here is just a small sample of some of the best-known problems that fall into this category:
1. Hamiltonian circuit problem - Determine whether a given
graph has a hamiltonian circuit (a path that starts and ends at the same vertex and passes through all the other vertices exactly once).
Prepared By: Eyob S. 4
2. Traveling salesman problem - Find the shortest tour through n cities with known positive integer distances between them (find the shortest Hamiltonian circuit in a complete graph with positive integer weights).
3. Knapsack problem - Find the most valuable subset of n items of given
positive integer weights and values that fit into a knapsack of a given positive integer capacity.
4. Partition problem - Given n positive integers, determine whether it is
possible to partition them into two disjoint subsets with the same sum.
5. Bin-packing problem - Given n items whose sizes are positive rational
numbers not larger than 1, put them into the smallest number of bins of size 1.
6. Graph-coloring problem - For a given graph, find its chromatic number,
which is the smallest number of colors that need to be assigned to the graph’s vertices so that no two adjacent vertices are assigned the same color.
7. Integer linear programming - problem Find the maximum (or
minimum) value of a linear function of several integer-valued variables subject to a finite set of constraints in the form of linear equalities and inequalities.
Prepared By: Eyob S. 5
Some of the above problems are decision problems. Those that are not have decision-version counterparts.
What all these problems have in common is an exponential (or
worse) growth of choices, as a function of input size, from which a solution needs to be found.
Another common feature of a vast majority of decision problems is
the fact that although solving such problems can be computationally difficult, checking whether a proposed solution actually solves the problem is computationally easy, i.e., it can be done in polynomial time.
For example, it is easy to check whether a proposed list of vertices
is a Hamiltonian circuit for a given graph with n vertices. All we need to check is that the list contains n + 1 vertices of the graph in question, that the first n vertices are distinct whereas the last one is the same as the first, and that every consecutive pair of the list’s vertices is connected by an edge.
Prepared By: Eyob S. 6
A nondeterministic algorithm is a two-stage procedure that takes as its input an instance I of a decision problem and does the following.
1. Nondeterministic (“guessing”) stage: An arbitrary string S is
generated that can be thought of as a candidate solution to the given instance I (but may be complete gibberish as well).
2. Deterministic (“verification”) stage: A deterministic
algorithm takes both I and S as its input and outputs yes if S represents a solution to instance I. (If S is not a solution to instance I , the algorithm either returns no or is allowed not to halt at all.) • We say that a nondeterministic algorithm solves a decision problem if and only if for every yes instance of the problem it returns yes on some execution. • A non-deterministic algorithm is said to be non-deterministic polynomial if the time efficiency of its verification stage is polynomial.
Prepared By: Eyob S. 7
NP – problems
Class NP is the class of decision problems that can be
solved by nondeterministic polynomial algorithms. This class of problems is called nondeterministic polynomial. Most decision problems are in NP. First of all, this class includes all the problems in P: P ⊆ NP. This is true because, if a problem is in P, we can use the deterministic polynomial time algorithm that solves it in the verification-stage of a nondeterministic algorithm that simply ignores string S generated in its nondeterministic (“guessing”) stage. But NP also contains hundreds of other difficult combinatorial optimization problems.
Prepared By: Eyob S. 8
The halting problem, on the other hand, is among the rare examples of decision problems that are known not to be in NP.
This leads to the most important open question of
theoretical computer science: Is P a proper subset of NP, or are these two classes, in fact, the same?
Note that P = NP would imply that each of many hundreds
of difficult combinatorial decision problems can be solved by a polynomial-time algorithm, although computer scientists have failed to find such algorithms despite their persistent efforts over many years.
Moreover, many well-known decision problems are known
to be “NP-complete” , which seems to cast more doubts on the possibility that P = NP.
Prepared By: Eyob S. 9
NP-Complete Problems A decision problem D1 is said to be polynomially reducible to a decision problem D2, if there exists a function t that transforms instances of D1 to instances of D2 such that:
1. t maps all yes instances of D1 to yes instances of D2 and
all no instances of D1 to no instances of D2. 2. t is computable by a polynomial time algorithm. • The above definition immediately implies that if a problem D1 is polynomially reducible to some problem D2 that can be solved in polynomial time, then problem D1 can also be solved in polynomial time. • A decision problem D is said to be NP-complete if: 1. it belongs to class NP 2. every problem in NP is polynomially reducible to D