In the early 1900s, mathematicians wanted to formalize what it means for
a computational problem to “effectively computable”. One of the
computational problems they were interested in is determining whether a
formula in first-order logic is satisfiable. Besides the Turing machine,
other models include λ-calculus, rewriting systems, and others.
Although the models look very different, they all turn out to be
equivalent to one another in terms of computational power.
This led to the formulation of the Church-Turing Thesis
In particular, it means that a problem can be solved using <insert
favorite programming language> if and only if it can be solved by a
Turing machine.
In the next two sections, we will see that while we can define Turing
machines with extra capabilities, they are no more powerful than the
standard Turing machine. This provides some justification that Turing
machines is a model of general-purpose computation.
A nondeterministic Turing machine (NTM) is one where the transition
function is allowed to return more than one outcome and as a result, a
single configuration can yield more than one configuration. Thus, the
NTM can be in multiple configurations at once.
(sec-ntm-process)= Let N be a NTM and w be an input string. We use
C to denote the set of configurations it is in currently.
N processes w as follows:
Initially, C consists of the start configuration q0w
For each configuration C in C that is neither
qacc or qrej, replace C with the set of configurations
that C yields. More precisely, we replace the configuration that
entered C earliest.
The NTM accepts the string if C eventually contains
qacc
Similar to NFAs, we can visualise the execution of the NTM as a
computation tree where each node of the tree is a configuration. The
root node of the tree is the initial configuration, and there is an edge
from a node representing configuration C to a node representing
configuration C′ if and only if C′ is one of the configurations that
C yields.