
In
computational complexity theory
In theoretical computer science and mathematics, computational complexity theory focuses on classifying computational problems according to their resource usage, and explores the relationships between these classifications. A computational problem ...
, a computational problem ''H'' is called NP-hard if, for every problem ''L'' which can be solved in
non-deterministic polynomial-time, there is a
polynomial-time reduction from ''L'' to ''H''. That is, assuming a solution for ''H'' takes 1 unit time, ''H''s solution can be used to solve ''L'' in polynomial time.
As a consequence, finding a polynomial time algorithm to solve a single NP-hard problem would give polynomial time algorithms for all the problems in the complexity class
NP. As it is suspected, but unproven, that
P≠NP, it is unlikely that any polynomial-time algorithms for NP-hard problems exist.
A simple example of an NP-hard problem is the
subset sum problem
The subset sum problem (SSP) is a decision problem in computer science. In its most general formulation, there is a multiset S of integers and a target-sum T, and the question is to decide whether any subset of the integers sum to precisely T''.'' ...
.
Informally, if ''H'' is NP-hard, then it is at least as difficult to solve as the problems in
NP. However, the opposite direction is not true: some problems are
undecidable, and therefore even more difficult to solve than all problems in NP, but they are probably not NP-hard (unless P=NP).
Definition
A
decision problem
In computability theory and computational complexity theory, a decision problem is a computational problem that can be posed as a yes–no question on a set of input values. An example of a decision problem is deciding whether a given natura ...
''H'' is NP-hard when for every problem ''L'' in NP, there is a
polynomial-time many-one reduction from ''L'' to ''H''.
Another definition is to require that there be a polynomial-time reduction from an
NP-complete
In computational complexity theory, NP-complete problems are the hardest of the problems to which ''solutions'' can be verified ''quickly''.
Somewhat more precisely, a problem is NP-complete when:
# It is a decision problem, meaning that for any ...
problem ''G'' to ''H''.
As any problem ''L'' in NP reduces in polynomial time to ''G'', ''L'' reduces in turn to ''H'' in polynomial time so this new definition implies the previous one. It does not restrict the class NP-hard to decision problems, and it also includes
search problem
In computational complexity theory and computability theory, a search problem is a computational problem of finding
an ''admissible'' answer for a given input value, provided that such an answer exists. In fact, a search problem is specified by a b ...
s or
optimization problem
In mathematics, engineering, computer science and economics
Economics () is a behavioral science that studies the Production (economics), production, distribution (economics), distribution, and Consumption (economics), consumption of goo ...
s.
Consequences
If P ≠ NP, then NP-hard problems could not be solved in polynomial time.
Some NP-hard optimization problems can be polynomial-time
approximated up to some constant approximation ratio (in particular, those in
APX) or even up to any approximation ratio (those in
PTAS or
FPTAS). There are many classes of approximability, each one enabling approximation up to a different level.
Examples
All
NP-complete
In computational complexity theory, NP-complete problems are the hardest of the problems to which ''solutions'' can be verified ''quickly''.
Somewhat more precisely, a problem is NP-complete when:
# It is a decision problem, meaning that for any ...
problems are also NP-hard (see
List of NP-complete problems
This is a list of some of the more commonly known problems that are NP-complete when expressed as decision problems. As there are thousands of such problems known, this list is in no way comprehensive. Many problems of this type can be found in ...
). For example, the optimization problem of finding the least-cost cyclic route through all nodes of a weighted graph—commonly known as the
travelling salesman problem—is NP-hard. The
subset sum problem
The subset sum problem (SSP) is a decision problem in computer science. In its most general formulation, there is a multiset S of integers and a target-sum T, and the question is to decide whether any subset of the integers sum to precisely T''.'' ...
is another example: given a set of integers, does any non-empty subset of them add up to zero? That is a
decision problem
In computability theory and computational complexity theory, a decision problem is a computational problem that can be posed as a yes–no question on a set of input values. An example of a decision problem is deciding whether a given natura ...
and happens to be NP-complete.
There are decision problems that are ''NP-hard'' but not ''NP-complete'' such as the
halting problem
In computability theory (computer science), computability theory, the halting problem is the problem of determining, from a description of an arbitrary computer program and an input, whether the program will finish running, or continue to run for ...
. That is the problem which asks "given a program and its input, will it run forever?" That is a ''yes''/''no'' question and so is a decision problem. It is easy to prove that the halting problem is NP-hard but not NP-complete. For example, the
Boolean satisfiability problem can be reduced to the halting problem by transforming it to the description of a
Turing machine
A Turing machine is a mathematical model of computation describing an abstract machine that manipulates symbols on a strip of tape according to a table of rules. Despite the model's simplicity, it is capable of implementing any computer algori ...
that tries all
truth value
In logic and mathematics, a truth value, sometimes called a logical value, is a value indicating the relation of a proposition to truth, which in classical logic has only two possible values ('' true'' or '' false''). Truth values are used in ...
assignments and when it finds one that satisfies the formula it halts and otherwise it goes into an infinite loop. It is also easy to see that the halting problem is not in ''NP'' since all problems in NP are decidable in a finite number of operations, but the halting problem, in general, is
undecidable. There are also NP-hard problems that are neither ''NP-complete'' nor ''Undecidable''. For instance, the language of
true quantified Boolean formulas is decidable in
polynomial space, but not in non-deterministic polynomial time (unless NP =
PSPACE).
[More precisely, this language is ]PSPACE-complete
In computational complexity theory, a decision problem is PSPACE-complete if it can be solved using an amount of memory that is polynomial in the input length (PSPACE, polynomial space) and if every other problem that can be solved in polynomial sp ...
; see, for example, .
NP-naming convention
NP-hard problems do not have to be elements of the complexity class NP.
As NP plays a central role in
computational complexity, it is used as the basis of several classes:
;
NP: Class of computational decision problems for which any given ''yes''-solution can be verified as a solution in polynomial time by a deterministic Turing machine (or ''solvable'' by a ''non-deterministic'' Turing machine in polynomial time).
;NP-hard: Class of problems which are at least as hard as the hardest problems in NP. Problems that are NP-hard do not have to be elements of NP; indeed, they may not even be decidable.
;
NP-complete
In computational complexity theory, NP-complete problems are the hardest of the problems to which ''solutions'' can be verified ''quickly''.
Somewhat more precisely, a problem is NP-complete when:
# It is a decision problem, meaning that for any ...
: Class of decision problems which contains the hardest problems in NP. Each NP-complete problem has to be in NP.
;
NP-easy: At most as hard as NP, but not necessarily in NP.
;
NP-equivalent: Decision problems that are both NP-hard and NP-easy, but not necessarily in NP.
;
NP-intermediate: If P and NP are different, then there exist decision problems in the region of NP that fall between P and the NP-complete problems. (If P and NP are the same class, then NP-intermediate problems do not exist because in this case every NP-complete problem would fall in P, and by definition, every problem in NP can be reduced to an NP-complete problem.)
Application areas
NP-hard problems are often tackled with rules-based languages in areas including:
*
Approximate computing
*
Configuration
*
Cryptography
Cryptography, or cryptology (from "hidden, secret"; and ''graphein'', "to write", or ''-logy, -logia'', "study", respectively), is the practice and study of techniques for secure communication in the presence of Adversary (cryptography), ...
*
Data mining
*
Decision support
A decision support system (DSS) is an information system that supports business or organizational decision-making activities. DSSs serve the management, operations and planning levels of an organization (usually mid and higher management) and ...
*
Phylogenetics
In biology, phylogenetics () is the study of the evolutionary history of life using observable characteristics of organisms (or genes), which is known as phylogenetic inference. It infers the relationship among organisms based on empirical dat ...
*
Planning
Planning is the process of thinking regarding the activities required to achieve a desired goal. Planning is based on foresight, the fundamental capacity for mental time travel. Some researchers regard the evolution of forethought - the cap ...
* Process monitoring and control
* Rosters or schedules
* Routing/vehicle routing
*
Scheduling
NP-hard problems
Problems that are decidable but not
NP-complete
In computational complexity theory, NP-complete problems are the hardest of the problems to which ''solutions'' can be verified ''quickly''.
Somewhat more precisely, a problem is NP-complete when:
# It is a decision problem, meaning that for any ...
, often are optimization problems:
*
Knapsack optimization problems
*
Integer programming
*
Travelling salesman optimization problem
*
Minimum vertex cover
*
Maximum clique
*
Longest simple path
*
Graph coloring
In graph theory, graph coloring is a methodic assignment of labels traditionally called "colors" to elements of a Graph (discrete mathematics), graph. The assignment is subject to certain constraints, such as that no two adjacent elements have th ...
; an application: register allocation in compilers
See also
*
Lists of problems
*
List of unsolved problems
*
Reduction (complexity)
*
Unknowability
References
*
{{DEFAULTSORT:Np-Hard
Complexity classes