Turing_machine
Turing_machine
The Turing machine was invented in 1936 by Alan Turing,[11][12] who called it an "a-machine" (automatic machine).[13] With
this model, Turing was able to answer two questions in the negative: (1) Does a machine exist that can determine whether any
arbitrary machine on its tape is "circular" (e.g., freezes, or fails to continue its computational task); similarly, (2) does a machine
exist that can determine whether any arbitrary machine on its tape ever prints a given symbol.[14] Thus by providing a
mathematical description of a very simple device capable of arbitrary computations, he was able to prove properties of
computation in general—and in particular, the uncomputability of the Entscheidungsproblem ('decision problem').[15]
Thus, Turing machines prove fundamental limitations on the power of mechanical computation.[16] While they can express
arbitrary computations, their minimalist design makes them unsuitable for computation in practice: real-world computers are
based on different designs that, unlike Turing machines, use random-access memory.
Turing completeness is the ability for a system of instructions to simulate a Turing machine. A programming language that is
Turing complete is theoretically capable of expressing all tasks accomplishable by computers; nearly all programming languages
are Turing complete if the limitations of finite memory are ignored.
Contents
Overview
Physical description
Description
Formal definition
Additional details required to visualize or implement Turing machines
Alternative definitions
The "state"
Turing machine "state" diagrams
Models equivalent to the Turing machine model
Choice c-machines, oracle o-machines
Universal Turing machines
Comparison with real machines
Limitations of Turing machines
Computational complexity theory
Concurrency
Interaction
History
Historical background: computational machinery
The Entscheidungsproblem (the "decision problem"): Hilbert's tenth question of 1900
Alan Turing's a-machine
1937–1970: The "digital computer", the birth of "computer science"
1970–present: the Turing machine as a model of computation
See also
Notes
References
Primary literature, reprints, and compilations
Computability theory
Church's thesis
Small Turing machines
Other
External links
Overview
A Turing machine is a general example of a central processing unit (CPU) that controls all data manipulation done by a computer,
with the canonical machine using sequential memory to store data. More specifically, it is a machine (automaton) capable of
enumerating some arbitrary subset of valid strings of an alphabet; these strings are part of a recursively enumerable set. A Turing
machine has a tape of infinite length on which it can perform read and write operations.
Assuming a black box, the Turing machine cannot know whether it will eventually enumerate any one specific string of the
subset with a given program. This is due to the fact that the halting problem is unsolvable, which has major implications for the
theoretical limits of computing.
The Turing machine is capable of processing an unrestricted grammar, which further implies that it is capable of robustly
evaluating first-order logic in an infinite number of ways. This is famously demonstrated through lambda calculus.
A Turing machine that is able to simulate any other Turing machine is called a universal Turing machine (UTM, or simply a
universal machine). A more mathematically oriented definition with a similar "universal" nature was introduced by Alonzo
Church, whose work on lambda calculus intertwined with Turing's in a formal theory of computation known as the Church–
Turing thesis. The thesis states that Turing machines indeed capture the informal notion of effective methods in logic and
mathematics, and provide a precise definition of an algorithm or "mechanical procedure". Studying their abstract properties yields
many insights into computer science and complexity theory.
Physical description
In his 1948 essay, "Intelligent Machinery", Turing wrote that his machine consisted of:
...an unlimited memory capacity obtained in the form of an infinite tape marked out into
squares, on each of which a symbol could be printed. At any moment there is one symbol
in the machine; it is called the scanned symbol. The machine can alter the scanned
symbol, and its behavior is in part determined by that symbol, but the symbols on the tape
elsewhere do not affect the behavior of the machine. However, the tape can be moved
back and forth through the machine, this being one of the elementary operations of the
machine. Any symbol on the tape may therefore eventually have an innings.[17] (Turing
1948, p. 3[18])
Description
The Turing machine mathematically models a machine that mechanically operates on a tape. On this tape are symbols, which the
machine can read and write, one at a time, using a tape head. Operation is fully determined by a finite set of elementary
instructions such as "in state 42, if the symbol seen is 0, write a 1; if the symbol seen is 1, change into state 17; in state 17, if the
symbol seen is 0, write a 1 and change to state 6;" etc. In the original article ("On Computable Numbers, with an Application to
the Entscheidungsproblem", see also references below), Turing imagines not a mechanism, but a person whom he calls the
"computer", who executes these deterministic mechanical rules slavishly (or as Turing puts it, "in a desultory manner").
Formal definition
Following Hopcroft and Ullman (1979, p. 148), a (one-tape) Turing machine can be formally defined as a 7-tuple
where
The 7-tuple for the 3-state busy beaver looks like this (see more about this busy beaver at Turing machine examples):
(states);
(tape alphabet symbols);
(blank symbol);
(input symbols);
(initial state);
(final states);
see state-table below (transition function).
Initially all tape cells are marked with .
0 1 R B 1 L A 1 L B
1 1 L C 1 R B 1 R HALT
For instance,
There will need to be many decisions on what the symbols actually look like, and a failproof way of reading and
writing symbols indefinitely.
The shift left and shift right operations may shift the tape head across the tape, but when actually building a
Turing machine it is more practical to make the tape slide back and forth under the head instead.
The tape can be finite, and automatically extended with blanks as needed (which is closest to the mathematical
definition), but it is more common to think of it as stretching infinitely at one or both ends and being pre-filled with
blanks except on the explicitly given finite fragment the tape head is on. (This is, of course, not implementable in
practice.) The tape cannot be fixed in length, since that would not correspond to the given definition and would
seriously limit the range of computations the machine can perform to those of a linear bounded automaton.
Alternative definitions
Definitions in literature sometimes differ slightly, to make arguments or proofs easier or clearer, but this is always done in such a
way that the resulting machine has the same computational power. For example, the set could be changed from to
, where N ("None" or "No-operation") would allow the machine to stay on the same tape cell instead of moving left or
right. This would not increase the machine's computational power.
The most common convention represents each "Turing instruction" in a "Turing table" by one of nine 5-tuples, per the convention
of Turing/Davis (Turing (1936) in The Undecidable, p. 126-127 and Davis (2000) p. 152):
Other authors (Minsky (1967) p. 119, Hopcroft and Ullman (1979) p. 158, Stone (1972) p. 9) adopt a different convention, with
new state qm listed immediately after the scanned symbol Sj:
( current state qi , symbol scanned Sj , new state qm , print symbol Sk/erase E/none
N , move_tape_one_square left L/right R/none N )
For the remainder of this article "definition 1" (the Turing/Davis convention) will be used.
Example: state table for the 3-state 2-symbol busy beaver reduced to 5-tuples
Current state Scanned symbol Print symbol Move tape Final (i.e. next) state 5-tuples
A 0 1 R B (A, 0, 1, R, B)
A 1 1 L C (A, 1, 1, L, C)
B 0 1 L A (B, 0, 1, L, A)
B 1 1 R B (B, 1, 1, R, B)
C 0 1 L B (C, 0, 1, L, B)
C 1 1 N H (C, 1, 1, N, H)
In the following table, Turing's original model allowed only the first three lines that he called N1, N2, N3 (cf. Turing in The
Undecidable, p. 126). He allowed for erasure of the "scanned square" by naming a 0th symbol S0 = "erase" or "blank", etc.
However, he did not allow for non-printing, so every instruction-line includes "print symbol Sk" or "erase" (cf. footnote 12 in
Post (1947), The Undecidable, p. 300). The abbreviations are Turing's (The Undecidable, p. 119). Subsequent to Turing's original
paper in 1936–1937, machine-models have allowed all nine possible types of five-tuples:
Current m- Final m-
Tape Print- Tape- 5-tuple
configuration configuration 5-tuple 4-tuple
symbol operation motion comments
(Turing state) (Turing state)
(qi, Sj,
"blank" = S0,
N1 qi Sj Print(Sk) Left L qm Sk, L,
1=S1, etc.
qm)
(qi, Sj,
"blank" = S0,
N2 qi Sj Print(Sk) Right R qm Sk, R,
1=S1, etc.
qm)
(qi, Sj,
None "blank" = S0, (qi, Sj,
N3 qi Sj Print(Sk) qm Sk, N,
N 1=S1, etc. Sk, qm)
qm)
(qi, Sj, E,
7 qi Sj Erase Left L qm
L, qm)
(qi, Sj, E,
8 qi Sj Erase Right R qm
R, qm)
Any Turing table (list of instructions) can be constructed from the above nine 5-tuples. For technical reasons, the three non-
printing or "N" instructions (4, 5, 6) can usually be dispensed with. For examples see Turing machine examples.
Less frequently the use of 4-tuples are encountered: these represent a further atomization of the Turing instructions (cf. Post
(1947), Boolos & Jeffrey (1974, 1999), Davis-Sigal-Weyuker (1994)); also see more at Post–Turing machine.
The "state"
The word "state" used in context of Turing machines can be a source of confusion, as it can mean two things. Most commentators
after Turing have used "state" to mean the name/designator of the current instruction to be performed—i.e. the contents of the
state register. But Turing (1936) made a strong distinction between a record of what he called the machine's "m-configuration",
and the machine's (or person's) "state of progress" through the computation - the current state of the total system. What Turing
called "the state formula" includes both the current instruction and all the symbols on the tape:
Thus the state of progress of the computation at any stage is completely determined by the note of instructions
and the symbols on the tape. That is, the state of the system may be described by a single expression (sequence
of symbols) consisting of the symbols on the tape followed by Δ (which we suppose not to appear elsewhere) and
then by the note of instructions. This expression is called the 'state formula'.
Earlier in his paper Turing carried this even further: he gives an example where he placed a symbol of the current "m-
configuration"—the instruction's label—beneath the scanned square, together with all the symbols on the tape (The Undecidable,
p. 121); this he calls "the complete configuration" (The Undecidable, p. 118). To print the "complete configuration" on one line,
he places the state-label/m-configuration to the left of the scanned symbol.
A variant of this is seen in Kleene (1952) where Kleene shows how to write the Gödel number of a machine's "situation": he
places the "m-configuration" symbol q4 over the scanned square in roughly the center of the 6 non-blank squares on the tape (see
the Turing-tape figure in this article) and puts it to the right of the scanned square. But Kleene refers to "q4" itself as "the machine
state" (Kleene, p. 374-375). Hopcroft and Ullman call this composite the "instantaneous description" and follow the Turing
convention of putting the "current state" (instruction-label, m-configuration) to the left of the scanned symbol (p. 149).
Example: total state of 3-state 2-symbol busy beaver after 3 "moves" (taken from example "run" in the figure below):
1A1
This means: after three moves the tape has ... 000110000 ... on it, the head is scanning the right-most 1, and the state is A. Blanks
(in this case represented by "0"s) can be part of the total state as shown here: B01; the tape has a single 1 on it, but the head is
scanning the 0 ("blank") to its left and the state is B.
"State" in the context of Turing machines should be clarified as to which is being described: (i) the current instruction, or (ii) the
list of symbols on the tape together with the current instruction, or (iii) the list of symbols on the tape together with the current
instruction placed to the left of the scanned symbol or to the right of the scanned symbol.
Turing's biographer Andrew Hodges (1983: 107) has noted and discussed this confusion.
The table for the 3-state busy beaver ("P" = print/write a "1")
Tape
Current state A Current state B Current state C
symbol
Write Move Next Write Move Next Write Move Next
symbol tape state symbol tape state symbol tape state
0 P R B P L A P L B
1 P L C P R B P R HALT
Usually large tables are better left as tables (Booth, p. 74). They are more readily simulated by computer in tabular form (Booth,
p. 74). However, certain concepts—e.g. machines with "reset" states and machines with repeating patterns (cf. Hill and Peterson
p. 244ff)—can be more readily seen when viewed as a drawing.
Whether a drawing represents an improvement on its table must be decided by the reader for the particular context. See Finite
state machine for more.
The reader should again be cautioned that such diagrams represent a snapshot of their table frozen in time, not the course
("trajectory") of a computation through time and space. While every time the busy beaver machine "runs" it will always follow
the same state-trajectory, this is not true for the "copy" machine that can be provided with variable input "parameters".
The diagram "Progress of the computation" shows the three-state busy beaver's "state" (instruction) progress through its
computation from start to finish. On the far right is the Turing "complete configuration" (Kleene "situation", Hopcroft–Ullman
"instantaneous description") at each step. If the machine were to be stopped and cleared to blank both the "state register" and
entire tape, these "configurations" could be used to rekindle a computation anywhere in its progress (cf. Turing (1936) The
Undecidable, pp. 139–140).
Models
equivalent to
the Turing
machine
model
The "3-state busy beaver" Turing machine in a finite state representation. Each circle
represents a "state" of the table—an "m-configuration" or "instruction". "Direction" of a
state transition is shown by an arrow. The label (e.g. 0/P,R) near the outgoing state (at
the "tail" of the arrow) specifies the scanned symbol that causes a particular transition
(e.g. 0) followed by a slash /, followed by the subsequent "behaviors" of the machine,
e.g. "P Print" then move tape "R Right". No general accepted format exists. The
convention shown is after McClusky (1965), Booth (1967), Hill, and Peterson (1974).
The evolution of the busy-beaver's computation starts at the top and proceeds to the
bottom.
Many machines that might be thought to have more computational capability than a simple universal Turing machine can be
shown to have no more power (Hopcroft and Ullman p. 159, cf. Minsky (1967)). They might compute faster, perhaps, or use less
memory, or their instruction set might be smaller, but they cannot compute more powerfully (i.e. more mathematical functions).
(Recall that the Church–Turing thesis hypothesizes this to be true for any kind of machine: that anything that can be "computed"
can be computed by some Turing machine.)
A Turing machine is equivalent to a single-stack pushdown automaton (PDA) that has been made more flexible and concise by
relaxing the last-in-first-out requirement of its stack. In addition, a Turing machine is also equivalent to a two-stack PDA with
standard last-in-first-out semantics, by using one stack to model the right side and the other stack to model the left side of the
Turing machine.
At the other extreme, some very simple models turn out to be Turing-equivalent, i.e. to have the same computational power as the
Turing machine model.
Common equivalent models are the multi-tape Turing machine, multi-track Turing machine, machines with input and output, and
the non-deterministic Turing machine (NDTM) as opposed to the deterministic Turing machine (DTM) for which the action table
has at most one entry for each combination of symbol and state.
Read-only, right-moving Turing machines are equivalent to DFAs (as well as NFAs by conversion using the NDFA to DFA
conversion algorithm).
For practical and didactical intentions the equivalent register machine can be used as a usual assembly programming language.
An interesting question is whether the computation model represented by concrete programming languages is Turing equivalent.
While the computation of a real computer is based on finite states and thus not capable to simulate a Turing machine,
programming languages themselves do not necessarily have this limitation. Kirner et al., 2009 have shown that among the
general-purpose programming languages some are Turing complete while others are not. For example, ANSI C is not Turing-
equivalent, as all instantiations of ANSI C (different instantiations are possible as the standard deliberately leaves certain
behaviour undefined for legacy reasons) imply a finite-space memory. This is because the size of memory reference data types is
accessible inside the language. However, other programming languages like Pascal do not have this feature, which allows them to
be Turing complete in principle. It is just Turing complete in principle, as memory allocation in a programming language is
allowed to fail, which means the programming language can be Turing complete when ignoring failed memory allocations, but
the compiled programs executable on a real computer cannot.
...whose motion is only partially determined by the configuration ... When such a machine reaches one of these
ambiguous configurations, it cannot go on until some arbitrary choice has been made by an external operator. This
would be the case if we were using machines to deal with axiomatic systems.
Turing (1936) does not elaborate further except in a footnote in which he describes how to use an a-machine to "find all the
provable formulae of the [Hilbert] calculus" rather than use a choice machine. He "suppose[s] that the choices are always between
two possibilities 0 and 1. Each proof will then be determined by a sequence of choices i1, i2, ..., in (i1 = 0 or 1, i2 = 0 or 1, ..., in =
0 or 1), and hence the number 2n + i12n-1 + i22n-2 + ... +in completely determines the proof. The automatic machine carries out
successively proof 1, proof 2, proof 3, ..." (Footnote ‡, The Undecidable, p. 138)
This is indeed the technique by which a deterministic (i.e., a-) Turing machine can be used to mimic the action of a
nondeterministic Turing machine; Turing solved the matter in a footnote and appears to dismiss it from further consideration.
An oracle machine or o-machine is a Turing a-machine that pauses its computation at state "o" while, to complete its calculation,
it "awaits the decision" of "the oracle"—an unspecified entity "apart from saying that it cannot be a machine" (Turing (1939), The
Undecidable, p. 166–168).
This finding is now taken for granted, but at the time (1936) it was considered
astonishing. The model of computation that Turing called his "universal
machine"—"U" for short—is considered by some (cf. Davis (2000)) to have An implementation of a Turing
been the fundamental theoretical breakthrough that led to the notion of the machine
stored-program computer.
Turing's paper ... contains, in essence, the invention of the modern computer and some of the programming
techniques that accompanied it.
In terms of computational complexity, a multi-tape universal Turing machine need only be slower by logarithmic factor compared
to the machines it simulates. This result was obtained in 1966 by F. C. Hennie and R. E. Stearns. (Arora and Barak, 2009,
theorem 1.9)
There are a number of ways to explain why Turing machines are useful models
of real computers:
1. Anything a real computer can compute, a Turing machine can also compute. For example: "A Turing machine
can simulate any type of subroutine found in programming languages, including recursive procedures and any of
the known parameter-passing mechanisms" (Hopcroft and Ullman p. 157). A large enough FSA can also model
any real computer, disregarding IO. Thus, a statement about the limitations of Turing machines will also apply to
real computers.
2. The difference lies only with the ability of a Turing machine to manipulate an unbounded amount of data.
However, given a finite amount of time, a Turing machine (like a real machine) can only manipulate a finite
amount of data.
3. Like a Turing machine, a real machine can have its storage space enlarged as needed, by acquiring more disks
or other storage media.
4. Descriptions of real machine programs using simpler abstract models are often much more complex than
descriptions using Turing machines. For example, a Turing machine describing an algorithm may have a few
hundred states, while the equivalent deterministic finite automaton (DFA) on a given real machine has
quadrillions. This makes the DFA representation infeasible to analyze.
5. Turing machines describe algorithms independent of how much memory they use. There is a limit to the memory
possessed by any current machine, but this limit can rise arbitrarily in time. Turing machines allow us to make
statements about algorithms which will (theoretically) hold forever, regardless of advances in conventional
computing machine architecture.
6. Turing machines simplify the statement of algorithms. Algorithms running on Turing-equivalent abstract machines
are usually more general than their counterparts running on real machines, because they have arbitrary-precision
data types available and never have to deal with unexpected conditions (including, but not limited to, running out
of memory).
Concurrency
Another limitation of Turing machines is that they do not model concurrency well. For example, there is a bound on the size of
integer that can be computed by an always-halting nondeterministic Turing machine starting on a blank tape. (See article on
unbounded nondeterminism.) By contrast, there are always-halting concurrent systems with no inputs that can compute an integer
of unbounded size. (A process can be created with local storage that is initialized with a count of 0 that concurrently sends itself
both a stop and a go message. When it receives a go message, it increments its count by 1 and sends itself a go message. When it
receives a stop message, it stops with an unbounded number in its local storage.)
Interaction
In the early days of computing, computer use was typically limited to batch processing, i.e., non-interactive tasks, each producing
output data from given input data. Computability theory, which studies computability of functions from inputs to outputs, and for
which Turing machines were invented, reflects this practice.
Since the 1970s, interactive use of computers became much more common. In principle, it is possible to model this by having an
external agent read from the tape and write to it at the same time as a Turing machine, but this rarely matches how interaction
actually happens; therefore, when describing interactivity, alternatives such as I/O automata are usually preferred.
History
They were described in 1936 by Alan Turing.
Historical background: computational machinery
Robin Gandy (1919–1995)—a student of Alan Turing (1912–1954), and his lifelong friend—traces the lineage of the notion of
"calculating machine" back to Charles Babbage (circa 1834) and actually proposes "Babbage's Thesis":
That the whole of development and operations of analysis are now capable of being executed by machinery.
Gandy's analysis of Babbage's Analytical Engine describes the following five operations (cf. p. 52–53):
… the emphasis is on programming a fixed iterable sequence of arithmetical operations. The fundamental
importance of conditional iteration and conditional transfer for a general theory of calculating machines is not
recognized…
— Gandy p. 55
10. Determination of the solvability of a Diophantine equation. Given a Diophantine equation with any
number of unknown quantities and with rational integral coefficients: To devise a process according to which it
can be determined in a finite number of operations whether the equation is solvable in rational integers. The
Entscheidungsproblem [decision problem for first-order logic] is solved when we know a procedure that allows
for any given logical expression to decide by finitely many operations its validity or satisfiability ... The
Entscheidungsproblem must be considered the main problem of mathematical logic.
— quoted, with this translation and the original German, in Dershowitz and Gurevich,
2008
By 1922, this notion of "Entscheidungsproblem" had developed a bit, and H. Behmann stated that
— ibid.
If one were able to solve the Entscheidungsproblem then one would have a "procedure for solving many (or even
all) mathematical problems".
— ibid., p. 92
By the 1928 international congress of mathematicians, Hilbert "made his questions quite precise. First, was mathematics complete
... Second, was mathematics consistent ... And thirdly, was mathematics decidable?" (Hodges p. 91, Hawking p. 1121). The first
two questions were answered in 1930 by Kurt Gödel at the very same meeting where Hilbert delivered his retirement speech
(much to the chagrin of Hilbert); the third—the Entscheidungsproblem—had to wait until the mid-1930s.
The problem was that an answer first required a precise definition of "definite general applicable prescription", which Princeton
professor Alonzo Church would come to call "effective calculability", and in 1928 no such definition existed. But over the next
6–7 years Emil Post developed his definition of a worker moving from room to room writing and erasing marks per a list of
instructions (Post 1936), as did Church and his two students Stephen Kleene and J. B. Rosser by use of Church's lambda-calculus
and Gödel's recursion theory (1934). Church's paper (published 15 April 1936) showed that the Entscheidungsproblem was
indeed "undecidable" and beat Turing to the punch by almost a year (Turing's paper submitted 28 May 1936, published January
1937). In the meantime, Emil Post submitted a brief paper in the fall of 1936, so Turing at least had priority over Post. While
Church refereed Turing's paper, Turing had time to study Church's paper and add an Appendix where he sketched a proof that
Church's lambda-calculus and his machines would compute the same functions.
But what Church had done was something rather different, and in a certain sense weaker. ... the Turing
construction was more direct, and provided an argument from first principles, closing the gap in Church's
demonstration.
— Hodges p. 112
And Post had only proposed a definition of calculability and criticized Church's "definition", but had proved nothing.
To the question 'what is a "mechanical" process?' Turing returned the characteristic answer 'Something that can be
done by a machine' and he embarked on the highly congenial task of analysing the general notion of a computing
machine.
— Gandy, p. 74
— ibid., p. 76
While Gandy believed that Newman's statement above is "misleading", this opinion is not shared by all. Turing had a lifelong
interest in machines: "Alan had dreamt of inventing typewriters as a boy; [his mother] Mrs. Turing had a typewriter; and he could
well have begun by asking himself what was meant by calling a typewriter 'mechanical'" (Hodges p. 96). While at Princeton
pursuing his PhD, Turing built a Boolean-logic multiplier (see below). His PhD thesis, titled "Systems of Logic Based on
Ordinals", contains the following definition of "a computable function":
It was stated above that 'a function is effectively calculable if its values can be found by some purely mechanical
process'. We may take this statement literally, understanding by a purely mechanical process one which could be
carried out by a machine. It is possible to give a mathematical description, in a certain normal form, of the
structures of these machines. The development of these ideas leads to the author's definition of a computable
function, and to an identification of computability with effective calculability. It is not difficult, though somewhat
laborious, to prove that these three definitions [the 3rd is the λ-calculus] are equivalent.
When Turing returned to the UK he ultimately became jointly responsible for breaking the German secret codes created by
encryption machines called "The Enigma"; he also became involved in the design of the ACE (Automatic Computing Engine), "
[Turing's] ACE proposal was effectively self-contained, and its roots lay not in the EDVAC [the USA's initiative], but in his own
universal machine" (Hodges p. 318). Arguments still continue concerning the origin and nature of what has been named by
Kleene (1952) Turing's Thesis. But what Turing did prove with his computational-machine model appears in his paper "On
Computable Numbers, with an Application to the Entscheidungsproblem" (1937):
[that] the Hilbert Entscheidungsproblem can have no solution ... I propose, therefore to show that there can be no
general process for determining whether a given formula U of the functional calculus K is provable, i.e. that there
can be no machine which, supplied with any one U of these formulae, will eventually say whether U is provable.
Turing's example (his second proof): If one is to ask for a general procedure to tell us: "Does this machine ever print 0", the
question is "undecidable".
Depending on the objects one likes to manipulate in the computations (numbers like nonnegative integers or
alphanumeric strings), two models have obtained a dominant position in machine-based complexity theory:
the off-line multitape Turing machine..., which represents the standard model
for string-oriented computation, and
the random access machine (RAM) as introduced by Cook and Reckhow ...,
which models the idealized Von Neumann style computer.
— van Emde Boas 1990:4
Only in the related area of analysis of algorithms this role is taken over by the RAM model.
See also
Arithmetical hierarchy
Bekenstein bound, showing the impossibility of infinite-tape Turing machines of finite size and bounded energy
BlooP and FlooP
Busy beaver
Chaitin constant or Omega (computer science) for information relating to the halting problem
Chinese Room
Conway's Game of Life, a Turing-complete cellular automaton
Digital infinity
The Emperor's New Mind
Enumerator (in theoretical computer science)
Genetix
Gödel, Escher, Bach: An Eternal Golden Braid, a famous book that discusses, among other topics, the Church–
Turing thesis
Halting problem, for more references
Harvard architecture
Imperative programming
Langton's ant and Turmites, simple two-dimensional analogues of the Turing machine
List of things named after Alan Turing
Modified Harvard architecture
Probabilistic Turing machine
Quantum Turing machine
Claude Shannon, another leading thinker in information theory
Turing machine examples
Turing switch
Turing tarpit, any computing system or language that, despite being Turing complete, is generally considered
useless for practical computing
Unorganized machine, for Turing's very early ideas on neural networks
Von Neumann architecture
Notes
1. Minsky 1967:107 "In his 1936 paper, A. M. Turing defined the class of abstract machines that now bear his name.
A Turing machine is a finite-state machine associated with a special kind of environment -- its tape -- in which it
can store (and later recover) sequences of symbols", also Stone 1972:8 where the word "machine" is in quotation
marks.
2. Stone 1972:8 states "This "machine" is an abstract mathematical model", also cf. Sipser 2006:137ff that
describes the "Turing machine model". Rogers 1987 (1967):13 refers to "Turing's characterization", Boolos
Burgess and Jeffrey 2002:25 refers to a "specific kind of idealized machine".
3. Sipser 2006:137 "A Turing machine can do everything that a real computer can do".
4. Cf. Sipser 2002:137. Also, Rogers 1987 (1967):13 describes "a paper tape of infinite length in both directions".
Minsky 1967:118 states "The tape is regarded as infinite in both directions". Boolos Burgess and Jeffrey 2002:25
include the possibility of "there is someone stationed at each end to add extra blank squares as needed".
5. Cf. Rogers 1987 (1967):13. Other authors use the word "square" e.g. Boolos Burgess Jeffrey 2002:35, Minsky
1967:117, Penrose 1989:37.
6. This word is used by e.g. Davis 2000:151
7. This table represents an algorithm or "effective computational procedure" which is necessarily finite; see Penrose
1989:30ff, Stone 1972:3ff.
8. Boolos Burgess and Jeffrey 2002:25
9. Boolos Burgess Jeffry 2002:25 illustrate the machine as moving along the tape. Penrose 1989:36-37 describes
himself as "uncomfortable" with an infinite tape observing that it "might be hard to shift!"; he "prefer[s] to think of
the tape as representing some external environment through which our finite device can move" and after
observing that the " 'movement' is a convenient way of picturing things" and then suggests that "the device
receives all its input from this environment.
10. "Also by convention one of the states is distinguished as the stopping state and is given the name HALT" (Stone
1972:9). Turing's original description did not include a HALT instruction but he did allow for a "circular" condition,
a "configuration from which there is no possible move" (see Turing 1936 in The Undecidable 1967:119); this
notion was added in the 1950s; see more at Halting problem.
11. Hodges, Andrew (2012). Alan Turing: The Enigma (The Centenary Edition). Princeton University Press.
ISBN 978-0-691-15564-7.
12. The idea came to him in mid-1935 (perhaps, see more in the History section) after a question posed by M. H. A.
Newman in his lectures: "Was there a definite method, or as Newman put it, a "mechanical process"which could
be applied to a mathematical statement, and which would come up with the answer as to whether it was
provable" (Hodges 1983:93). Turing submitted his paper on 31 May 1936 to the London Mathematical Society for
its Proceedings (cf. Hodges 1983:112), but it was published in early 1937 and offprints were available in
February 1937 (cf. Hodges 1983:129).
13. See footnote in Davis 2000:151.
14. Turing 1936 in The Undecidable 1965:132-134; Turing's definition of "circular" is found on page 119.
15. Turing 1936 in The Undecidable 1965:145
16. Sipser 2006:137 observes that "A Turing machine can do everything that a real computer can do. Nevertheless,
even a Turing machine cannot solve certain problems. In a very real sense, these problems are beyond the
theoretical limits of computation."
17. See the definition of "innings" on Wiktionary
18. A.M. Turing (1948). "Intelligent Machinery (manuscript)" (http://www.alanturing.net/turing_archive/archive/l/l32/L3
2-004.html). The Turing Archive. p. 3.
19. Occasionally called an action table or transition function.
20. Usually quintuples [5-tuples]: qiaj→qi1aj1dk, but sometimes quadruples [4-tuples].
21. p.149; in particular, Hopcroft and Ullman assume that is undefined on all states from
References
Computability theory
Boolos, George; Richard Jeffrey (1999) [1989]. Computability and Logic (https://archive.org/details/computabilityl
og0000bool_r8y9) (3rd ed.). Cambridge UK: Cambridge University Press. ISBN 0-521-20402-X.
Boolos, George; John Burgess; Richard Jeffrey (2002). Computability and Logic (4th ed.). Cambridge UK:
Cambridge University Press. ISBN 0-521-00758-5. Some parts have been significantly rewritten by Burgess.
Presentation of Turing machines in context of Lambek "abacus machines" (cf. Register machine) and recursive
functions, showing their equivalence.
Taylor L. Booth (1967), Sequential Machines and Automata Theory, John Wiley and Sons, Inc., New York.
Graduate level engineering text; ranges over a wide variety of topics, Chapter IX Turing Machines includes some
recursion theory.
Martin Davis (1958). Computability and Unsolvability. McGraw-Hill Book Company, Inc, New York.. On pages 12–
20 he gives examples of 5-tuple tables for Addition, The Successor Function, Subtraction (x ≥ y), Proper
Subtraction (0 if x < y), The Identity Function and various identity functions, and Multiplication.
Davis, Martin; Ron Sigal; Elaine J. Weyuker (1994). Computability, Complexity, and Languages and Logic:
Fundamentals of Theoretical Computer Science (2nd ed.). San Diego: Academic Press, Harcourt, Brace &
Company. ISBN 0-12-206382-1.
Hennie, Fredrick (1977). Introduction to Computability. Addison–Wesley, Reading, Mass. QA248.5H4 1977.. On
pages 90–103 Hennie discusses the UTM with examples and flow-charts, but no actual 'code'.
John Hopcroft and Jeffrey Ullman (1979). Introduction to Automata Theory, Languages, and Computation (1st
ed.). Addison–Wesley, Reading Mass. ISBN 0-201-02988-X. A difficult book. Centered around the issues of
machine-interpretation of "languages", NP-completeness, etc.
Hopcroft, John E.; Rajeev Motwani; Jeffrey D. Ullman (2001). Introduction to Automata Theory, Languages, and
Computation (2nd ed.). Reading Mass: Addison–Wesley. ISBN 0-201-44124-1. Distinctly different and less
intimidating than the first edition.
Stephen Kleene (1952), Introduction to Metamathematics, North–Holland Publishing Company, Amsterdam
Netherlands, 10th impression (with corrections of 6th reprint 1971). Graduate level text; most of Chapter XIII
Computable functions is on Turing machine proofs of computability of recursive functions, etc.
Knuth, Donald E. (1973). Volume 1/Fundamental Algorithms: The Art of computer Programming (2nd ed.).
Reading, Mass.: Addison–Wesley Publishing Company.. With reference to the role of Turing machines in the
development of computation (both hardware and software) see 1.4.5 History and Bibliography pp. 225ff and 2.6
History and Bibliographypp. 456ff.
Zohar Manna, 1974, Mathematical Theory of Computation. Reprinted, Dover, 2003. ISBN 978-0-486-43238-0
Marvin Minsky, Computation: Finite and Infinite Machines, Prentice–Hall, Inc., N.J., 1967. See Chapter 8, Section
8.2 "Unsolvability of the Halting Problem." Excellent, i.e. relatively readable, sometimes funny.
Christos Papadimitriou (1993). Computational Complexity (1st ed.). Addison Wesley. ISBN 0-201-53082-1.
Chapter 2: Turing machines, pp. 19–56.
Hartley Rogers, Jr., Theory of Recursive Functions and Effective Computability, The MIT Press, Cambridge MA,
paperback edition 1987, original McGraw-Hill edition 1967, ISBN 0-262-68052-1 (pbk.)
Michael Sipser (1997). Introduction to the Theory of Computation (https://archive.org/details/introductiontoth00sip
s). PWS Publishing. ISBN 0-534-94728-X. Chapter 3: The Church–Turing Thesis, pp. 125–149.
Stone, Harold S. (1972). Introduction to Computer Organization and Data Structures (1st ed.). New York:
McGraw–Hill Book Company. ISBN 0-07-061726-0.
Peter van Emde Boas 1990, Machine Models and Simulations, pp. 3–66, in Jan van Leeuwen, ed., Handbook of
Theoretical Computer Science, Volume A: Algorithms and Complexity, The MIT Press/Elsevier, [place?], ISBN 0-
444-88071-2 (Volume A). QA76.H279 1990. Valuable survey, with 141 references.
Church's thesis
Nachum Dershowitz; Yuri Gurevich (September 2008). "A natural axiomatization of computability and proof of
Church's Thesis" (http://research.microsoft.com/en-us/um/people/gurevich/Opera/188.pdf) (PDF). Bulletin of
Symbolic Logic. 14 (3). Retrieved 2008-10-15.
Roger Penrose (1990) [1989]. The Emperor's New Mind (2nd ed.). Oxford University Press, New York. ISBN 0-
19-851973-7.
External links
Hazewinkel, Michiel, ed. (2001) [1994], "Turing machine" (https://www.encyclopediaofmath.org/index.php?title=p/
t094460), Encyclopedia of Mathematics, Springer Science+Business Media B.V. / Kluwer Academic Publishers,
ISBN 978-1-55608-010-4
Turing Machine on Stanford Encyclopedia of Philosophy (http://plato.stanford.edu/entries/turing-machine/)
Detailed info on the Church–Turing Hypothesis (http://plato.stanford.edu/entries/church-turing/) (Stanford
Encyclopedia of Philosophy)
Turing Machine-Like Models (https://web.archive.org/web/20060622074841/http://www.weizmann.ac.il/mathuser
s/lbn/new_pages/Research_Turing.html) in Molecular Biology, to understand life mechanisms with a DNA-tape
processor.
The Turing machine (http://www.SaschaSeidel.de/html/programmierung/download_The_Turing_machine.php)—
Summary about the Turing machine, its functionality and historical facts
The Wolfram 2,3 Turing Machine Research Prize (http://www.wolframscience.com/prizes/tm23/)—Stephen
Wolfram's $25,000 prize for the proof or disproof of the universality of the potentially smallest universal Turing
Machine. The contest has ended, with the proof affirming the machine's universality.
"Turing Machine Causal Networks (http://demonstrations.wolfram.com/TuringMachineCausalNetworks/)" by
Enrique Zeleny, Wolfram Demonstrations Project.
Turing Machines (https://curlie.org/Computers/Computer_Science/Theoretical/Automata_Theory/Turing_Machine
s) at Curlie
Purely mechanical Turing Machine (http://www.turing2012.fr/?p=530&lang=en)
How Alan Turing Cracked The Enigma Code (http://www.iwm.org.uk/history/how-alan-turing-cracked-the-enigma-
code) Imperial War Museums
Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using
this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia
Foundation, Inc., a non-profit organization.