In
theoretical computer science
Theoretical computer science (TCS) is a subset of general computer science and mathematics that focuses on mathematical aspects of computer science such as the theory of computation, lambda calculus, and type theory.
It is difficult to circumsc ...
, a computational problem is a problem that may be solved by an
algorithm
In mathematics and computer science, an algorithm () is a finite sequence of rigorous instructions, typically used to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for performing ...
. For example, the problem of factoring
:"Given a positive integer ''n'', find a nontrivial prime factor of ''n''."
is a computational problem. A computational problem can be viewed as a
set of ''instances'' or ''cases'' together with a, possibly empty, set of ''solutions'' for every instance/case. For example, in the
factoring problem, the instances are the integers ''n'', and solutions are prime numbers ''p'' that are the nontrivial prime factors of ''n''.
Computational problems are one of the main objects of study in theoretical computer science. The field of
computational complexity theory
In theoretical computer science and mathematics, computational complexity theory focuses on classifying computational problems according to their resource usage, and relating these classes to each other. A computational problem is a task solved ...
attempts to determine the amount of resources (
computational complexity) solving a given problem will require and explain why some problems are
intractable
Intractable may refer to:
* Intractable conflict, a form of complex, severe, and enduring conflict
* Intractable pain, pain which cannot be controlled/cured by any known treatment
* Intractable problem
In theoretical computer science and mathema ...
or
undecidable. Computational problems belong to
complexity classes that define broadly the resources (e.g. time, space/memory, energy, circuit depth) it takes to compute (solve) them with various
abstract machine
An abstract machine is a computer science theoretical model that allows for a detailed and precise analysis of how a computer system functions. It is analogous to a mathematical function in that it receives inputs and produces outputs based on p ...
s. For example, the complexity class
P for classical machines, and
BQP
In computational complexity theory, bounded-error quantum polynomial time (BQP) is the class of decision problems solvable by a quantum computer in polynomial time, with an error probability of at most 1/3 for all instances.Michael Nielsen and Isa ...
for quantum machines.
It is typical of many problems to represent both instances and solutions by binary
strings, namely elements of
*. For example, numbers can be represented as binary strings using binary encoding.
Types
Decision problem
A
decision problem is a computational problem where the answer for every instance is either yes or no. An example of a decision problem is ''
primality testing
A primality test is an algorithm for determining whether an input number is prime. Among other fields of mathematics, it is used for cryptography. Unlike integer factorization, primality tests do not generally give prime factors, only stating wheth ...
'':
:"Given a positive integer ''n'', determine if ''n'' is prime."
A decision problem is typically represented as the set of all instances for which the answer is ''yes''. For example, primality testing can be represented as the infinite set
:''L'' =
Search problem
In a
search problem, the answers can be arbitrary strings. For example, factoring is a search problem where the instances are (string representations of) positive integers and the solutions are (string representations of) collections of primes.
A search problem is represented as a
relation consisting of all the instance-solution pairs, called a ''search relation''. For example, factoring can be represented as the relation
:''R'' =
which consist of all pairs of numbers (''n'', ''p''), where ''p'' is a nontrivial prime factor of ''n''.
Counting problem
A
counting problem asks for the number of solutions to a given search problem. For example, a counting problem associated with factoring is
: "Given a positive integer ''n'', count the number of nontrivial prime factors of ''n''."
A counting problem can be represented by a function ''f'' from
* to the nonnegative integers. For a search relation ''R'', the counting problem associated to ''R'' is the function
:''f
R''(x) = , , .
Optimization problem
An
optimization problem asks for finding a "best possible" solution among the set of all possible solutions to a search problem. One example is the ''
maximum independent set'' problem:
:"Given a graph ''G'', find an
independent set of ''G'' of maximum size."
Optimization problems can be represented by their search relations.
Function problem
In a
function problem a single output (of a
total function) is expected for every input, but the output is more complex than that of a
decision problem, that is, it isn't just "yes" or "no". One of the most famous examples is the ''
traveling salesman'' problem:
: "Given a list of cities and the distances between each pair of cities, find the shortest possible route that visits each city exactly once and returns to the origin city."
It is an
NP-hard problem in
combinatorial optimization, important in
operations research
Operations research ( en-GB, operational research) (U.S. Air Force Specialty Code: Operations Analysis), often shortened to the initialism OR, is a discipline that deals with the development and application of analytical methods to improve dec ...
and
theoretical computer science
Theoretical computer science (TCS) is a subset of general computer science and mathematics that focuses on mathematical aspects of computer science such as the theory of computation, lambda calculus, and type theory.
It is difficult to circumsc ...
.
Promise problem
In
computational complexity theory
In theoretical computer science and mathematics, computational complexity theory focuses on classifying computational problems according to their resource usage, and relating these classes to each other. A computational problem is a task solved ...
, it is usually implicitly assumed that any string in
* represents an instance of the computational problem in question. However, sometimes not all strings
* represent valid instances, and one specifies a proper subset of
* as the set of "valid instances". Computational problems of this type are called
promise problems.
The following is an example of a (decision) promise problem:
:"Given a graph ''G'', determine if every
independent set in ''G'' has size at most 5, or ''G'' has an independent set of size at least 10."
Here, the valid instances are those graphs whose maximum independent set size is either at most 5 or at least 10.
Decision promise problems are usually represented as pairs of disjoint subsets (''L''
yes, ''L''
no) of
*. The valid instances are those in ''L''
yes ∪ ''L''
no.
''L''
yes and ''L''
no represent the instances whose answer is ''yes'' and ''no'', respectively.
Promise problems play an important role in several areas of
computational complexity, including
hardness of approximation,
property testing, and
interactive proof systems.
See also
*
Lateral computing, alternative approaches to solving problems computationally
*
Model of computation
In computer science, and more specifically in computability theory and computational complexity theory, a model of computation is a model which describes how an output of a mathematical function is computed given an input. A model describes h ...
*
Transcomputational problem
Notes
References
*.
*.
*{{citation, first1=Oded, last1=Goldreich, author1-link=Oded Goldreich, first2=Avi, last2=Wigderson, author2-link=Avi Wigderson, contribution=IV.20 Computational Complexity, pages=575–604, title=
The Princeton Companion to Mathematics, editor1-first=Timothy, editor1-last=Gowers, editor1-link=Timothy Gowers, editor2-first=June, editor2-last=Barrow-Green, editor3-first=Imre, editor3-last=Leader, editor3-link=Imre Leader, year=2008, publisher=Princeton University Press, isbn=978-0-691-11880-2.
Theoretical computer science