13.1 Classical computing and computational complexity 205
generic argument. Those problems for which there exists no algorithm at all,
as a matter of principle, are known as uncomputable problems. The following
“halting problem” is an example of an uncomputable problem [426].
3
Con-
sider the problem of determining whether any given Turing machine will halt
given any input. Suppose there were an algorithm for determining this using
a Turing machine. Then it would be possible to have a Turing machine that
halts when provided the description of any Turing machine yet does not halt
if the machine does not halt given its own description, which is absurd [123].
The situation is akin to that of the famous Liar Paradox.
The complexity of computable problems can also be assessed in terms of
the time and space requirements for their solution. Computational problems
can be classified as either “easy” or “hard.” Easy problems are those for
which the required computation time is a polynomial function of the size of
the input, as measured in bits. Hard problems are those for which the required
computation time is an exponential function of the size of the input measured
in bits. The majority of problems of interest appear to be hard problems,
though hardness is often difficult to prove for a given problem. As is often
the case in general, the reduction of one problem to another the properties
of which are already known is a good method for tackling assessments of
complexity. Thus, when addressing computational complexity in the context
of quantum computation, it is often helpful to make use of the results obtained
for similar classical situations.
Classical algorithms can be classified as effective (or polytime) when the
number of steps, and the time to execute them all, grows as a polynomial func-
tion of the size of the input,thatis,f ≤ an
b
for some constants a, b and for
input sizes n sufficiently large.
4
The computational complexity class of effec-
tively solvable problems is accordingly denoted P. The class of problems that
are solvable nondeterministically in polynomial time is denoted NP,anex-
ample being the problem of factoring integers.
5
ThesubclassofNP consisting
of the hardest problems of this class are the NP-complete problems, a large
number of which have been identified, examples being the Traveling Salesman
Problem and the determination of membership in a correlation polytope; see
Section A.8 and [451]. The NP-complete problems are those such that if
any one of them is solvable by an efficient algorithm then all NP problems
are so solvable. The class of problems solvable with an amount of memory
3
The halting problem for quantum computers has been explicitly addressed; see
[311, 313].
4
One must take care to note the encoding of input as well, because the number
of steps may depend on the encoding used. Unless otherwise stated, we assume
here n is given in bits.
5
Note that this class is only defined for predicates; see, for example, Part 1.3
of [252] for several definitions of NP, the complement of which is designated
coNP, corresponding to the class of languages decided by a probabilistic Turing
machine always accepting members of the language and rejecting any string not
in the language with finite probability.