Turing machines are extremely basic abstract symbolmanipulating devices which, despite their simplicity, can be adapted to simulate the logic of any computer that could possibly be constructed. They were described in 1936 by Alan Turing. Though they were intended to be technically feasible, Turing machines were not meant to be a practical computing technology, but a thought experiment about the limits of mechanical computation; thus they were not actually constructed. Studying their abstract properties yields many insights into computer science and complexity theory. For the Doctor Who novel named after the test, see The Turing Test (novel). ...
Turing Machine is an instrumental rock band formed in New York City in 1998. ...
This article is about the machine. ...
1936 (MCMXXXVI) was a leap year starting on Wednesday (link will take you to calendar). ...
Alan Mathison Turing, OBE, FRS (23 June 1912 â€“ 7 June 1954) was an English mathematician, logician, and cryptographer. ...
In philosophy, physics, and other fields, a thought experiment (from the German Gedankenexperiment) is an attempt to solve a problem using the power of human imagination. ...
An abstract machine, also called an abstract computer, is a theoretical model of a computer hardware or software system used in Automata theory. ...
Computer science, or computing science, is the study of the theoretical foundations of information and computation and their implementation and application in computer systems. ...
As a branch of the theory of computation in computer science, computational complexity theory investigates the problems related to the amounts of resources required for the execution of algorithms (e. ...
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 mathematicallyoriented 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 ChurchTuring thesis. The thesis states that Turing machines indeed capture the informal notion of effective method in logic and mathematics, and provide a precise definition of an algorithm or 'mechanical procedure'. The Turing machine is an abstract machine introduced in 1936 by Alan Turing to give a mathematically precise definition of algorithm or mechanical procedure. As such it is still widely used in theoretical computer science, especially in complexity theory and the theory of computation. ...
â€¹ The template below (Expand) is being considered for deletion. ...
The lambda calculus is a formal system designed to investigate function definition, function application, and recursion. ...
Look up computation in Wiktionary, the free dictionary. ...
In computability theory the ChurchTuring thesis, Churchs thesis, Churchs conjecture or Turings thesis, named after Alonzo Church and Alan Turing, is a hypothesis about the nature of mechanical calculation devices, such as electronic computers. ...
In mathematics, computing, linguistics, and related disciplines, an algorithm is a finite list of welldefined instructions for accomplishing some task that, given an initial state, will terminate in a defined endstate. ...
Informal description
 For visualizations of Turing machines, see Turing machine gallery.
The concept of the Turing machine is based on the idea of a person executing a welldefined procedure by changing the contents of an unlimited paper tape, which is divided into squares that can contain one of a finite set of symbols. The person needs to remember one of a finite set of states and the procedure is formulated in very basic steps in the form of "If your state is 42 and the symbol you see is a '0' then replace this with a '1', move one symbol to the right, and assume state 17 as your new state." An artistic representation of a Turing Machine . ...
In some models the tape moves and the unused tape is truly blank. The instruction to be performed (q _{4}) is shown over the scanned square. (Drawing after Kleene (1952) p.375.)
In some models the head moves along the stationary tape. The instruction to be performed (q _{1}) is shown inside the head. In this model the "blank" tape is all 0's. The shaded squares, including the blank scanned by the head, and the squares marked 1, 1, B, and the head symbol, constitute the system state. (Drawing after Minsky (1967) p. 121). More precisely, a Turing machine consists of: Image File history File links Turing_machine_2a. ...
Image File history File links Turing_machine_2a. ...
Image File history File links Turing_machine_2b. ...
Image File history File links Turing_machine_2b. ...
 A TAPE which is divided into cells, one next to the other. Each cell contains a symbol from some finite alphabet. The alphabet contains a special blank symbol (here written as 'B') and one or more other symbols. The tape is assumed to be arbitrarily extendable to the left and to the right, i.e., the Turing machine is always supplied with as much tape as it needs for its computation. Cells that have not been written to before are assumed to be filled with the blank symbol. In some models the tape has a left end marked with a special symbol; the tape extends or is indefinitely extensible to the right. The symbols are sometimes referred to as colors.
 A HEAD that can read and write symbols on the tape and move the tape left and right one (and only one) cell at a time. In some models the head moves and the tape is stationary.
 A TABLE ("action table", or transition function) of instructions (usually quintuples or 5tuples but sometimes 4tuples) that, given the state the machine is currently in and the symbol it is reading on the tape tells the machine to do the following in sequence (for the 5tuple models): (i) either erase or write a symbol, and then (ii) move the head ('L' for one step left or 'R' for one step right), and then (iii) assume the same or a new state as prescribed. In the 4tuple models the TABLE tells the machine to (ia) erase or to write a symbol or (ib) move the head left or right, and then (ii) assume the same or a new state as prescribed, but not both actions (ia) and (ib) in the same instruction. In some models, if there is no entry in the table for the current combination of symbol and state then the machine will halt; other models require all entries to be filled.
 A state register that stores the state of the Turing table. The number of different states is always finite and there is one special start state with which the state register is initialized. Turing defined this as a "note of instructions" to preserve the computation of the "computer" (a person) who is working in a "desultory manner":
 "This note is the counterpart of the 'state of mind'." (Undecidable, p. 139)
Note that every part of the machine—its state and symbolcollections—and its actions—printing, erasing and tape motion—is finite, discrete and distinguishable; it is the potentially unlimited amount of tape that gives it an unbounded amount of storage space. This article does not cite any references or sources. ...
Examples of Turing machines To see examples of the following models, see Turing machine examples: The following are examples to supplement the article Turing machine: // The following table is Turings very first example (Turing 1936): 1. ...
 Turing's very first machine
 Copy routine
 3state busy beaver
In computability theory, a Busy Beaver (from the colloquial expression for industrious person) is a Turing machine that, when given an empty tape, does a lot of work, then halts. ...
Formal definition of singletape Turing machine A nutshell formal description of a "Turing machine":  "A Turing machine is a finitestate machine associated with an external storage or memory medium." (Minsky (1967), p. 117)
 "A Turing machine is essentially a finitestate sequential machine that has the ability to communicate with an external store of information." (Booth (1967), p. 354)
The finite state machine is represented by the statetable together with its state register. The "external storage medium" is the tape. The input to the state machine is the scanned symbol on the tape. The output of the state machine is a symbol to print or the erase command and tape motioncommand left or right. Fig. ...
Hopcroft and Ullman (1979, p. 148) formally define a (onetape) Turing machine as a 7tuple where In mathematics, a tuple is a finite sequence (also known as an ordered list) of objects, each of a specified type. ...
 Q is a finite set of states
 Γ is a finite set of the tape alphabet/symbols
 is the blank symbol (the only symbol allowed to occur on the tape infinitely often at any step during the computation)
 Σ, a subset of Γ not including b is the set of input symbols
 is a partial function called the transition function, where L is left shift, R is right shift.
 is the initial state
 is the set of final or accepting states
The 7tuple for the 3state busy beaver looks like this (see more about this busy beaver at Turing machine examples): In mathematics, a partial function is a relation that associates each element of a set (sometimes called its domain) with at most one element of another (possibly the same) set, called the codomain. ...
In mathematics, a transition function has several different meanings: In topology, a transition function is a homeomorphism from one coordinate chart to another. ...
In computability theory, a Busy Beaver (from the colloquial expression for industrious person) is a Turing machine that, when given an empty tape, does a lot of work, then halts. ...
The following are examples to supplement the article Turing machine: // The following table is Turings very first example (Turing 1936): 1. ...
 Q = { A, B, C, HALT }
 Γ = { 0, 1 }
 b = 0 = "blank"
 Σ = { }, empty set
 δ = see statetable below
 q_{0} = A = initial state
 F = the one element set of final states {HALT}
State table for 3 state, 2 symbol busy beaver Tape symbol  Current state A  Current state B  Current state C  Write symbol  Move tape  Next state  Write symbol  Move tape  Next state  Write symbol  Move tape  Next state  0  1  R  B  1  L  A  1  L  B  1  1  L  C  1  R  B  1  N  HALT  This specification is insufficient, however. van Emde Boas (1990) observes that:  "The settheoretical object [his formal seventuple description similar to the above] provides only partial information on how the machine will behave and what its computations will look like" (p. 6).
Examples readily demonstrate that, as well as the behavior of the components of the informal description, the form of the input and output "parameters", and the position of the head at the start must be specified as well. For example, Turing (1936) places his "figures" "1" and "0" on alternate squares. Other models form the input as tightpacked unary 1s with blanks between the various strings, yet others place strings of 0's, each spaced by 1, on truly blank tape, etc.; the output may or may not appear in a similar manner. Thus to fully "describe" a "computation" of a Turing machine Stone (1972) states it is necessary to state the following:  The tape alphabet
 The form in which the parameters are presented on the tape
 The initial state of the Turing machine
 The form in which answers will be represented on the tape when the Turing machine halts
 The machine program" (Stone, p. 10)
Turing instructions—quintuples (5tuples) 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, changing the set {L,R} to {L,R,N}, where N ("None" or "Nooperation") would allow the machine to stay on the same tape cell instead of moving left or right, does not increase the machine's computational power. The most common convention represents each "Turing instruction" in a "Turing table" by one of nine 5tuples, per the convention of Turing/Davis (Turing (1936 in Undecidable, p. 126127 and Davis (2000) p. 152):  (definition 1): (q_{i}, S_{j}, S_{k}/E/N, L/R/N, q_{m})
 ( current state q_{i} , symbol scanned S_{j} , print symbol S_{k} PS_{k}/erase E/none N , move_tape_one_ square left L/right R/None N , new state q_{m} )
Other authors (Minsky (1967) p. 119, Hopcroft and Ullman (1979) p. 158, Stone (1972) p. 9) adopt a different convention, with new state q_{m} listed immediately after the scanned symbol S_{j}:  (definition 2): (q_{i}, S_{j}, q_{m}, S_{k}/E/N, L/R/N)
 ( current state q_{i}, symbol scanned S_{j} , new state q_{m} , print symbol S_{k} PS_{k}/erase E/none N , move_tape_one_square left L/none N/right R )
For remainder of this article we will use "definition 1" i.e. the Turing/Davis convention. Example: state table for the 3state 2symbol busy beaver reduced to 5tuples Current state  Scanned symbol  Print symbol  Move tape  Final (i.e. next) state  5tuples  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 Undecidable, p. 126). He allowed for erasure of the "scanned square" by naming a 0th symbol S_{0} = "erase" or "blank", etc. However, he did not allow for nonprinting, so every instructionline includes "print symbol S_{k}" or "erase" (cf footnote 12 in Post (1947), Undecidable p. 300). The abbreviations are Turing's (Undecidable p.119). Subsequent to Turing's original paper in 1936–1937, machinemodels have allowed all nine possible fivetuples:  Current mconfiguration (Turing state)  Tape symbol  Printoperation  Tapemotion  Final mconfiguration (Turing state)  5tuple  5tuple comments   4tuple  N1  q_{i}  S_{j}  Print(S_{k})  Left L  q_{m}  (q_{i}, S_{j}, S_{k}, L, q_{m})  "blank" = S_{0}, 1=S_{1}, etc.    N2  q_{i}  S_{j}  Print(S_{k})  Right R  q_{m}  (q_{i}, S_{j}, S_{k}, R, q_{m})  "blank" = S_{0}, 1=S_{1}, etc.    N3  q_{i}  S_{j}  Print(S_{k})  None N  q_{m}  (q_{i}, S_{j}, S_{k}, N, q_{m})  "blank" = S_{0}, 1=S_{1}, etc.   (q_{i}, S_{j}, S_{k}, q_{m})            4  q_{i}  S_{j}  None N  Left L  q_{m}  (q_{i}, S_{j}, N, L, q_{m})    (q_{i}, S_{j}, L, q_{m})  5  q_{i}  S_{j}  None N  Right R  q_{m}  (q_{i}, S_{j}, N, R, q_{m})    (q_{i}, S_{j}, R, q_{m})  6  q_{i}  S_{j}  None N  None N  q_{m}  (q_{i}, S_{j}, N, N, q_{m})  Direct "jump"   (q_{i}, S_{j}, N, q_{m})  7  q_{i}  S_{j}  Erase  Left L  q_{m}  (q_{i}, S_{j}, E, L, q_{m})     8  q_{i}  S_{j}  Erase  Right R  q_{m}  (q_{i}, S_{j}, E, R, q_{m})     9  q_{i}  S_{j}  Erase  None N  q_{m}  (q_{i}, S_{j}, E, N, q_{m})    (q_{i}, S_{j}, E, q_{m})  We can construct any Turing table (list of instructions) from the above nine 5tuples. For technical reasons usually we can dispense with the three nonprinting or "N" instructions (4, 5, 6). For examples see Turing machine examples. The following are examples to supplement the article Turing machine: // The following table is Turings very first example (Turing 1936): 1. ...
Less frequently we encounter the use of 4tuples—these represent a further atomization of the Turing instructions (cf Post (1947), Boolos & Jeffrey (1974, 1999), DavisSigalWeyuker (1994)); also see more at PostTuring machine. A PostTuring Machine is a simple model of computation that has been shown to be equivalent in computational power to a Turing Machine. ...
The "state" The word "state" used in context of Turing machines can be a source of confusion. 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 "mconfiguration", and the machine's (or person's) "state of progress" through the computation. 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' (Undecidable, p.139–140, emphasis added)
Earlier in his paper Turing carried this even further: he gives an example where he places a symbol of the current "mconfiguration"—the instruction's label—beneath the scanned square, together with all the symbols on the tape (Undecidable, p.121); this he calls "the complete configuration" (Undecidable, p. 118). To print the "complete configuration" on one line he places the statelabel/mconfiguration to the left of the scanned symbol. We see a variant of this in Kleene (1952) where Kleene shows how to write the Gödel number of a machine's "situation": he places the "mconfiguration" symbol q_{4} over the scanned square in roughly the center of the 6 nonblank squares on the tape (see the Turingtape figure in this article) and puts it to the right of the scanned square. But Kleene refers to "q_{4}" itself as "the machine state" (Kleene, p. 374375). Hopcroft and Ullman call this composite the "instantaneous description" and follow the Turing convention of putting the "current state" (instructionlabel, mconfiguration) to the left of the scanned symbol (p.149). This article or section may be confusing or unclear for some readers, and should be edited to rectify this. ...
Example: total state of 3state 2symbol 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 rightmost 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. Thus when we speak of "state" in the context of Turing machines we should clarify whether we are describing: (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.
Turing machine "state" diagrams The table for the 3state busy beaver ("P" = print/write a "1") Tape symbol  Current state A  Current state B  Current state C   Write symbol  Move tape  Next state  Write symbol  Move tape  Next state  Write symbol  Move tape  Next state  0  P  R  B  P  L  A  P  L  B  1  P  L  C  P  R  B  P  R  HALT 
The "3state busy beaver" Turing Machine in a finite state representation. Each circle represents a "state" of the TABLE—an "mconfiguration" 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 (1965), Hill and Peterson (1974). To the right: the above TABLE as expressed as a "state transition" diagram". Image File history File links Download highresolution version (1157x299, 26 KB) cut from State_diagram_3_state_busy_beaver_2_. ...
Image File history File links Download highresolution version (1157x299, 26 KB) cut from State_diagram_3_state_busy_beaver_2_. ...
Fig. ...
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. Fig. ...
The evolution of the busybeaver's computation starts at the top and proceeds to the bottom. 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/or space. While every time the busy beaver machine "runs" it will always follow the same statetrajectory, this is not true for the "copy" machine that can be provided with variable input "parameters". Image File history File links Download highresolution version (1358x830, 197 KB) wvbaileyWvbailey 12:33, 10 August 2006 (UTC), original drawing by wvbailey in Autosketch I, the creator of this work, hereby grant the permission to copy, distribute and/or modify this document under the terms of the GNU Free...
Image File history File links Download highresolution version (1358x830, 197 KB) wvbaileyWvbailey 12:33, 10 August 2006 (UTC), original drawing by wvbailey in Autosketch I, the creator of this work, hereby grant the permission to copy, distribute and/or modify this document under the terms of the GNU Free...
The diagram "Progress of the computation" shows the 3state busy beaver's "state" (instruction) progress through its computation from start to finish. On the far right is the Turing "complete configuration" (Kleene "situation", HopcroftUllman "instantaneous description") at each step. If we were to stop the machine and clear 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) Undecidable pp. 139–140).
Models equivalent to the Turing machine model 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 ChurchTuring thesis hypothesizes this to be true: that anything that can be “computed” can be computed by some Turing machine.) In computability theory the ChurchTuring thesis, Churchs thesis, Churchs conjecture or Turings thesis, named after Alonzo Church and Alan Turing, is a hypothesis about the nature of mechanical calculation devices, such as electronic computers. ...
A Turing machine is equivalent to a pushdown automaton made more powerful by relaxing the lastinfirstout requirement of its stack. (Interestingly, this seemingly minor relaxation enables the Turing machine to perform such a wide variety of computations that it can serve as a model for the computational capabilities of all modern computer software.) In automata theory, a pushdown automaton (PDA) is a finite automaton that can make use of a stack containing data. ...
In a stack, the topmost item, which is added last, is taken out first. ...
At the other extreme, some very simple models turn out to be Turingequivalent, i.e. to have the same computational power as the Turing machine model. For the usage of this term in Turing reductions, see Turing complete set. ...
Common equivalent models are the multitape Turing machine, machines with input and output, and the nondeterministic 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. In theoretical computer science, an ordinary (deterministic) Turing machine (DTM) has a transition rule that specifies for a given current state of the head and computer (s,q) a single instruction (s, q, d), where s is the symbol to be written by the head, q is the subsequent state...
For more on this topic see Turing machine equivalents, in particular Register machine and PostTuring machine. The following article is a referral from the article Turing machine. ...
In theoretical computer science a register machine is an abstract machine used to study decision problems, similar to how a Turing machine is used. ...
A PostTuring Machine is a simple model of computation that has been shown to be equivalent in computational power to a Turing Machine. ...
Read only right moving Turing Machines are equivalent to NDFA's (as well as DFA's by conversion using the NDFA to DFA conversion algorithm). A particular type of Turing Machine. ...
In the theory of computation, a nondeterministic finite state machine or nondeterministic finite automaton (NFA) is a finite state machine where for each pair of state and input symbol there may be several possible next states. ...
In the theory of computation, a deterministic finite state machine or deterministic finite automaton (DFA) is a finite state machine where for each pair of state and input symbol there is one and only one transition to a next state. ...
The NDFA to DFA conversion algorithm is used to remove nondeterminism from a DFA. It is also know as the subset method. It is based on Powerset construction. ...
For practical and didactical intentions the equivalent register machine can be used as a usual assembly programming language. In theoretical computer science a register machine is an abstract machine used to study decision problems, similar to how a Turing machine is used. ...
See the terminology section, below, regarding inconsistent use of the terms assembly and assembler. ...
A programming language is an artificial language that can be used to control the behavior of a machine, particularly a computer. ...
Choice cmachines, Oracle omachines Early in his paper (1936) Turing makes a distinction between an "automatic machine"—its "motion … completely determined by the configuration" and a "choice machine":  "…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" (p. 118 Undecidable)
Turing (1936) does not elaborate further excepting a footnote in which he describes how to use an amachine 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 i_{1}, i_{2}, …, i_{n} (i_{1} = 0 or 1, i_{2} = 0 or 1, …, i_{n} = 0 or 1), and hence the number 2^{n} + i_{1}2^{n1} + i_{2}2^{n2} + … +in completely determines the proof. The automatic machine carries out successively proof 1, proof 2, proof 3, …"(Footnote ‡ The Undecidable: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. In theoretical computer science, an ordinary (deterministic) Turing machine has a transition rule that specifies for a given current state of the head and computer (s,q) a single instruction (s, q, d), where s is the symbol to be written by the head, q is the subsequent state of...
An oracle machine or omachine is a Turing amachine 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), Undecidable p. 166–168). The concept is now actively used by mathematicians. In complexity theory and computability theory, an oracle machine is an abstract machine used to study decision problems. ...
Universal Turing machines 
As Turing wrote in Undecidable, p. 128: The Turing machine is an abstract machine introduced in 1936 by Alan Turing to give a mathematically precise definition of algorithm or mechanical procedure. As such it is still widely used in theoretical computer science, especially in complexity theory and the theory of computation. ...
 "It is possible to invent a single machine which can be used to compute any computable sequence. If this machine U is supplied with the tape on the beginning of which is written the string of quintuples separated by semicolons of some computing machine M, then U will compute the same sequence as M." (italics added)
We now take this remarkable finding for granted. But at the time (1936) it was astonishing. The model of computation that Turing called his "universal machine"—"U" for short—is considered by some (cf Davis (2000)) to have been the fundamental theoretical breakthrough that led to the notion of the stored program computer. The socalled von Neumann architecture is a model for a computing machine that uses a single storage structure to hold both the set of instructions on how to perform the computation and the data required or generated by the computation. ...
This article is about the machine. ...
 "Turing's paper … contains, in essence, the invention of the modern computer and some of the programming techniques that accompanied it" (Minsky (1967), p. 104).
As part of his New Kind of Science, Stephen Wolfram announced his discovery of a 2state 5symbol universal Turing machine. Wolfram's example was the smallest universal Turing machine then known since it has the smallest product (2,5)=10 of any known universal Turing machine. A New Kind of Science is a controversial book by Stephen Wolfram, published in 2002. ...
Stephen Wolfram (born August 29, 1959 in London) is a physicist known for his work in theoretical particle physics, cellular automata, complexity theory, and computer algebra, and is the creator of the computer program Mathematica. ...
On May 14th, 2007, Wolfram announced a US$25,000 prize for the proof or disproof of the conjecture that an even simpler, 2state 3symbol Turing machine is universal.[1] On 20071024, the prize was won by Alex Smith, an undergraduate studying Electronic and Computer Engineering at the University of Birmingham, UK.[2][3][4][5]. However, on 20071029 Vaughan Pratt of Stanford University announced he had discovered a flaw in the proof.[6] Wolfram Research disputes Pratt's interpretation.[7] In his A New Kind of Science, Stephen Wolfram found a universal 2state 5color Turing machine, and conjectured that a particular 2state 3color Turing machine (hereinafter (2,3) Turing machine) might be universal as well. ...
Year 2007 (MMVII) is the current year, a common year starting on Monday of the Gregorian calendar and the AD/CE era in the 21st century. ...
is the 297th day of the year (298th in leap years) in the Gregorian calendar. ...
Year 2007 (MMVII) is the current year, a common year starting on Monday of the Gregorian calendar and the AD/CE era in the 21st century. ...
is the 302nd day of the year (303rd in leap years) in the Gregorian calendar. ...
Vaughan Pratt is Professor Emeritus of Computer Science at Stanford University. ...
Stanford redirects here. ...
Comparison with real machines It is often said that Turing machines, unlike simpler automata, are as powerful as real machines, and are able to execute any operation that a real program can. What is missed in this statement is that almost any particular program running on a particular machine is in fact nothing but a deterministic finite automaton, since the machine it runs on can only be in finitely many configurations. Turing machines would actually only be equivalent to a machine that had an unlimited amount of storage space. We might ask, then, why Turing machines are useful models of real computers. There are a number of ways to answer this: In the theory of computation, a deterministic finite state machine or deterministic finite automaton (DFA) is a finite state machine where for each pair of state and input symbol there is a deterministic next state. ...
 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 parameterpassing mechanisms" (Hopcroft and Ullman p. 157). Thus, a statement about the limitations of Turing machines will also apply to real computers.
 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.
 Like a Turing machine, a real machine can have its storage space enlarged as needed, by acquiring more disks or other storage media. If the supply of these runs short, the Turing machine may become less useful as a model. But the fact is that neither Turing machines nor real machines need astronomical amounts of storage space in order to perform useful computation. The processing time required is usually much more of a problem.
 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 on a given real machine has quadrillions. This makes the DFA representation infeasible to analyze.
 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.
 Turing machines simplify the statement of algorithms. Algorithms running on Turingequivalent abstract machines are usually more general than their counterparts running on real machines, because they have arbitraryprecision data types available and never have to deal with unexpected conditions (including, but not limited to, running out of memory).
One way in which Turing machines are a poor model for programs is that many real programs, such as operating systems and word processors, are written to receive unbounded input over time, and therefore do not halt. Turing machines do not model such ongoing computation well (but can still model portions of it, such as individual procedures). In the theory of computation, a deterministic finite state machine or deterministic finite automaton (DFA) is a finite state machine where for each pair of state and input symbol there is a deterministic next state. ...
An operating system (OS) is the software that manages the sharing of the resources of a computer and provides programmers with an interface used to access those resources. ...
A word processor (also more formally known as a document preparation system) is a computer application used for the production (including composition, editing, formatting, and possibly printing) of any sort of viewable or printed material. ...
Limitations of Turing machines in computational complexity theory  Further information: Computational complexity theory
A limitation of Turing Machines is that they do not model the strengths of a particular arrangement well. For instance, modern storedprogram computers are actually instances of a more specific form of abstract machine known as the random access stored program machine or RASP machine model. Like the Universal Turing machine the RASP stores its "program" in "memory" external to its finitestate machine's "instructions". Unlike the Universal Turing Machine, the RASP has an infinite number of distinguishable, numbered but unbounded "registers"—memory "cells" that can contain any integer (cf Elgot and Robinson (1964), Hartmanis (1971), and in particular CookRechow (1973); references at random access machine). The RASP's finitestate machine is equipped with the capability for indirect addressing (e.g. the contents of one register can "point to" the address of any other, arbitrary register); thus the RASP's "program" can address any register in the registersequence. The upshot of this distinction is that there are computational optimizations that can be performed based on the memory indices, which are not possible in a general Turing Machine; thus when Turing Machines are used as the basis for bounding running times, a 'false lower bound' can be proven on certain algorithms' running times (due to the false simplifying assumption of a Turing Machine). An example of this is binary search, which violates the Turing machine's linear Ω(n) lower bound on searching an ordered list. As a branch of the theory of computation in computer science, computational complexity theory investigates the problems related to the amounts of resources required for the execution of algorithms (e. ...
An abstract machine, also called an abstract computer, is a theoretical model of a computer hardware or software system used in Automata theory. ...
In theoretical computer science the Random Access Stored Program (RASP) machine model is an abstract machine used for the purposes of algorithm development and algorithm complexity theory. ...
The Turing machine is an abstract machine introduced in 1936 by Alan Turing to give a mathematically precise definition of algorithm or mechanical procedure. As such it is still widely used in theoretical computer science, especially in complexity theory and the theory of computation. ...
In computer science, random access machine (RAM) is an abstract machine in the general class of register machines. ...
In computer science, binary search or binary chop is a search algorithm for finding a particular value in a linear array, by ruling out half of the data at each step. ...
History  See also: Algorithm and ChurchTuring thesis
In mathematics, computing, linguistics, and related disciplines, an algorithm is a finite list of welldefined instructions for accomplishing some task that, given an initial state, will terminate in a defined endstate. ...
In computability theory the ChurchTuring thesis, Churchs thesis, Churchs conjecture or Turings thesis, named after Alonzo Church and Alan Turing, is a hypothesis about the nature of mechanical calculation devices, such as electronic computers. ...
Historical background: computational machinery Robin Gandy—a student of Alan Turing (1912–1954) and his lifelong friend—traces the lineage of the notion of "calculating machine" back to Babbage (circa 1834) and actually proposes "Babbage's Thesis": Robin Oliver Gandy (22 September 1919  20 November 1995) was a British mathematician and logician. ...
Alan Mathison Turing, OBE, FRS (23 June 1912 â€“ 7 June 1954) was an English mathematician, logician, and cryptographer. ...
Charles Babbage Charles Babbage (December 26, 1791 – October 18, 1871) was an English mathematician, analytical philosopher and (proto_) computer scientist who was the first person to come up with the idea of a programmable computer. ...
 "That the whole of development and operations of analysis are now capable of being executed by machinery" (italics in Babbage as cited by Gandy, p. 54)
Gandy's analysis of Babbage's Analytical Engine describes the following five operations (cf p. 52–53): The analytical engine, an important step in the history of computers, was the design of a mechanical generalpurpose computer by the British professor of mathematics Charles Babbage. ...
 The arithmetic functions +, , x where  indicates "proper" subtraction x  y = 0 if y >= x
 Any sequence of operations is an operation
 Iteration of an operation (repeating n times an operation P)
 Conditional iteration (repeating n times an operation P conditional on the "success" of test T)
 Conditional transfer (i.e. conditional "goto")
Gandy states that "the functions which can be calculated by (1), (2), and (4) are precisely those which are Turing computable." (p. 53). He cites other proposals for "universal calculating machines" included those of Percy Ludgate (1909), Leonardo Torres y Quevedo (1914), M. d'Ocagne (1922), Louis Couffignal (1933), Vannevar Bush (1936), Howard Aiken (1937). However: Computable functions (or Turingcomputable functions) are the basic objects of study in computability theory. ...
Percy Ludgate (August 2, 1883 October 16, 1922) was an accountant in Dublin and designer of an Analytical Engine. ...
Leonardo Torres y Quevedo (28 December 1852 â€“ 18 December 1936), usually Leonardo Torres Quevedo in Spanishspeaking countries, was a Spanish engineer and mathematician of the late nineteenth and early twentieth centuries. ...
Louis Couffignal (19021966) was a French Cybernetics pioneer. ...
Vannevar Bush (March 11, 1890 â€“ June 30, 1974) was an American engineer and science administrator, known for his political role in the development of the atomic bomb, and the idea of the memexâ€”seen as a pioneering concept for the World Wide Web. ...
Harvard Mark I / IBM ASCC, left side. ...
 "... 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)
The Entscheidungsproblem (the "decision problem"): Hilbert's tenth question of 1900 With regards to Hilbert's problems posed by the famous mathematician David Hilbert in 1900, an aspect of problem #10 had been floating about for almost 30 years before it was framed precisely. Hilbert's original expression for #10 is as follows: Hilberts problems are a list of twentythree problems in mathematics put forth by German mathematician David Hilbert at the Paris conference of the International Congress of Mathematicians in 1900. ...
David Hilbert (January 23, 1862, KÃ¶nigsberg, East Prussia â€“ February 14, 1943, GÃ¶ttingen, Germany) was a German mathematician, recognized as one of the most influential and universal mathematicians of the 19th and early 20th centuries. ...
 "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 firstorder 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 Nachum Dershowitz and Yuri Gurevich, "A Natural Axiomatization of Church's Thesis", 2007:1 [8])
By 1922, this notion of "Entscheidungsproblem" had developed a bit, and H. Behmann stated that The Entscheidungsproblem (German for decision problem) is the challenge in symbolic logic to find a general algorithm which decides for given firstorder statements whether they are universally valid or not. ...
 "... most general form of the Entscheidungsproblem [is] as follows:
 "A quite definite generally applicable prescription is required which will allow one to decide in a finite number of steps the truth or falsity of a given purely logical assertion ..." (Gandy p. 57 quoting Behmann)
 "Behmann remarks that ... the general problem is equivalent to the problem of deciding which mathematical propositions are true." (Gandy p. 57)
If one were able to solve the Entscheidungsproblem then one would have a "procedure for solving many (or even all) mathematical problems" (Gandy 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 mid1930's. Kurt GÃ¶del (IPA: ) (April 28, 1906 BrÃ¼nn, AustriaHungary (now Brno, Czech Republic) â€“ January 14, 1978 Princeton, New Jersey) was an Austrian American mathematician and philosopher. ...
The problem was: An answer first required a precise definition of "definite general applicable prescription", what 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 Princeton professor Church and his two students Stephen Kleene and J. B. Rosser by use of Church's λ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 λcalculus and his machines would compute the same functions. â€¹ The template below (Expand) is being considered for deletion. ...
In computability theory the Churchâ€“Turing thesis (also known as Churchs thesis, Churchs conjecture and Turings thesis) is a combined hypothesis about the nature of effectively calculable (computable) functions by recursion (Churchs Thesis: Kleene 1952:300)), by mechanical device equivalent to a Turing machine (Turings...
Emil Leon Post (February 11, 1897  April 21, 1954) was a PolishAmerican mathematician and logician. ...
Stephen Cole Kleene (January 5, 1909  January 25, 1994) was an American mathematician whose work at the University of WisconsinMadison helped lay the foundations for theoretical computer science. ...
John Barkley Rosser Sr. ...
In mathematical logic and computer science, lambda calculus, also Î»calculus, is a formal system designed to investigate function definition, function application, and recursion. ...
Recursion theory, or computability theory, is a branch of mathematical logic dealing with generalizations of the notion of computable function, and with related notions such as Turing degrees and effective descriptive set theory. ...
Emil Leon Post (February 11, 1897  April 21, 1954) was a PolishAmerican mathematician and logician. ...
 "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.
Alan Turing's a (automatic)machine In the spring of 1935 Alan M. Turing, the young Master's student at King's College Cambridge UK took on the challenge; he had been stimulated by the lectures of the logician M. H. A. Newman "and learned from them of Gödel's work and the Entscheidungsproblem ... Newman used the word 'mechanical' ... In his obituary of Turing 1955 Newman writes: Alan Turing is often considered the father of modern computer science. ...
Maxwell Herman Alexander Newman (February 7, 1897 â€“ February 22, 1984) was a British mathematician and codebreaker. ...
 "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)
Gandy states that:  "I suppose, but do not know, that Turing, right from the start of his work, had as his goal a proof of the undecidability of the Entscheidungsproblem. He told me that the 'main idea' of the paper came to him when he was lying in Grantchester meadows in the summer of 1935. The 'main idea' might have either been his analysis of computation or his realization that there was a universal machine, and so a diagonal argument to prove unsolvability." (p. 76)
While Gandy believed that Newman's statement above is "misleading", this opinion is not shared by all. Turing had 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 Booleanlogic 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 calculabiity. It is not difficult, though somewhat laborious, to prove that these three definitions [the 3rd is the λcalculus] are equivalent ..." (Turing (1939) in The Undecidable p. 160)
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 Machine), "[Turing's] ACE proposal was effectively selfcontained, 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 computationalmachine model appears in his paper On Computable Numbers, With an Application to the Entscheidungsproblem (1937): This article does not cite any references or sources. ...
The EDVAC as installed in Building 328 at the Ballistics Research Laboratory. ...
In computability theory the Churchâ€“Turing thesis (also known as Churchs thesis, Churchs conjecture and Turings thesis) is a combined hypothesis about the nature of effectively calculable (computable) functions by recursion (Churchs Thesis), by mechanical device equivalent to a Turing machine (Turings Thesis) or by...
 "[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." (from Turing's paper reprinted in The Undecidable, p. 145)
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."
1937–1970: The "digital computer", the birth of "Computer science" In 1937, while at Princeton working on his PhD thesis, Turing built a digital (Booleanlogic) multiplier from scratch, making his own electromechanical relays (Hodges p. 138). "Alan's task was to embody the logical design of a Turing machine in a network of relayoperated switches . . ." (Hodges p. 138). While Turing might have been just curious and experimenting, quiteearnest work in the same direction was going in Germany ( Konrad Zuse (1938)), and in the United States (Howard Aiken) and George Stibitz (1937); the fruits of their labors were used by the Axis and Allied military in World War II (cf Hodges p. 298–299). In the early to mid1950's Hao Wang and Marvin Minsky reduced the Turing machine to a simpler form (a precursor to the PostTuring machine of Martin Davis ); simultaneously European researchers were reducing the newfangled electronic computer to a computerlike theoretical object equivalent to what was now being called a "Turing machine" (Turing by this time had killed himself by eating a poisoned apple). In the late 1950s and early 1960s, the coincidentallyparallel developments of Melzak and Lambek (1961), Minsky (1961), and Shepherdson and Sturgis (1961) carried the European work further and reduced the Turing machine to a more friendly, computerlike abstract model called the counter machine; Elgot and Robinson (1964), Hartmanis (1971), Cook and Reckhow (1973) carried this work even further with the register machine and random access machine models —but basically all are just multitape Turing machines with an arithmeticlike instruction set. Statue in Bad Hersfeld Konrad Zuse (June 22, 1910 Berlin  December 18, 1995 HÃ¼nfeld) was a German engineer and computer pioneer. ...
Harvard Mark I / IBM ASCC, left side. ...
George Stibitz George Robert Stibitz (April 20, 1904 â€“ January 31, 1995) is internationally recognized as a father of the modern digital computer. ...
Hao Wang 王浩 (1921 – 1995) was a ChineseAmerican logician, philosopher and mathematician. ...
Marvin Lee Minsky (born August 9, 1927), sometimes affectionately known as Old Man Minsky, is an American cognitive scientist in the field of artificial intelligence (AI), cofounder of MITs AI laboratory, and author of several texts on AI and philosophy. ...
A PostTuring Machine is a simple model of computation that has been shown to be equivalent in computational power to a Turing Machine. ...
Martin Davis, (born 1926, New York City) is an American mathematician, known for his work on Hilberts tenth problem. ...
The tower of a personal computer. ...
In theoretical computer science a register machine is an generic class of abstract machine used to study decision problems, similar to how a Turing machine is used. ...
In theoretical computer science a register machine is an abstract machine used to study decision problems, similar to how a Turing machine is used. ...
In computer science, random access machine (RAM) is an abstract machine in the general class of register machines. ...
1970–present: The Turing machine as a model of computation Today the counter, register and randomaccess machines and their sire the Turing machine continue to be the models of choice for theorists investigating questions in the theory of computation. In particular, computational complexity theory makes use of the Turing machine: The theory of computation is the branch of computer science that deals with whether and how efficiently problems can be solved on a computer. ...
As a branch of the theory of computation in computer science, computational complexity theory investigates the problems related to the amounts of resources required for the execution of algorithms (e. ...
 "Depending on the objects one likes to manipulate in the computations (numbers like nonnegative integers or aphanumeric strings), two models have obtained a dominant position in machinebased complexity theory:
 "the offline multitape Turing machine. . . , which represents the standard model for stringoriented 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"(van Emde Boas 1990:16)
See also  Algorithm, for a brief history of some of the inventions and the mathematics leading to Turing's definition of what he called his "amachine"
 Busy beaver
 ChurchTuring thesis, which says Turing machines can perform any computation that can be performed
 Conway's Game of Life, a Turingcomplete cellular automaton
 Halting problem, for more references
 Harvard architecture
 Modified Harvard architecture
 Langton's ant, a simple twodimensional analogue of the Turing machine.
 Arithmetical hierarchy
 Probabilistic Turing machine
 Quantum Turing machine
 Turing completeness, an attribute used in computability theory to describe computing systems with power equivalent to a universal Turing machine.
 Turing tarpit, any computing system or language which, despite possessing Turing completeness, is generally considered useless for practical computing.
 Von Neumann architecture
 Chaitin constant or Omega (computer science) for information relating to the halting problem
 Gödel, Escher, Bach, an influential book largely about the ChurchTuring Thesis.
In mathematics, computing, linguistics, and related disciplines, an algorithm is a finite list of welldefined instructions for accomplishing some task that, given an initial state, will terminate in a defined endstate. ...
In computability theory, a Busy Beaver (from the colloquial expression for industrious person) is a Turing machine that, when given an empty tape, does a lot of work, then halts. ...
In computability theory the ChurchTuring thesis, Churchs thesis, Churchs conjecture or Turings thesis, named after Alonzo Church and Alan Turing, is a hypothesis about the nature of mechanical calculation devices, such as electronic computers. ...
Gospers Glider Gun creating gliders. The Game of Life is a cellular automaton devised by the British mathematician John Horton Conway in 1970. ...
In computability theory the halting problem is a decision problem which can be stated as follows: Given a description of a program and a finite input, decide whether the program finishes running or will run forever, given that input. ...
The term Harvard architecture originally referred to computer architectures that used physically separate storage and signal pathways for their instructions and data (in contrast to the von Neumann architecture). ...
The Modified Harvard Architecture is a variation of the Harvard computer architecture that allows the contents of the instruction memory to be accessed as if it were data. ...
Langtons ant is a twodimensional Turing machine with a very simple set of rules, invented by Chris Langton. ...
In mathematical logic, the arithmetical hierarchy, arithmetic hierarchy or Kleene hierarchy classifies the set of arithmetic formulas (or arithmetic sets) according to their degree of solvability. ...
In computability theory, a probabilistic Turing machine is a nondeterministic Turing machine which randomly chooses between the available transitions at each point according to some probability distribution. ...
A Quantum Turing machine is an abstract machine used to model the effect of a quantum computer. ...
For the usage of this term in Turing reductions, see Turing complete set. ...
In computer science, computability theory is the branch of the theory of computation that studies which problems are computationally solvable using different models of computation. ...
A Turing tarpit is a programming language designed to be Turingcomplete while minimizing the number of distinct instructions. ...
Design of the Von Neumann architecture For the robotic architecture also named after Von Neumann, see Von Neumann machine The von Neumann architecture is a computer design model that uses a single storage structure to hold both instructions and data. ...
In the computer science subfield of algorithmic information theory the Chaitin constant or halting probability is a construction by Gregory Chaitin which describes the probability that a randomly generated program for a given model of computation or programming language will halt. ...
...
GÃ¶del, Escher, Bach: an Eternal Golden Braid: A metaphorical fugue on minds and machines in the spirit of Lewis Carroll (commonly GEB) is a Pulitzer Prize (1980)winning book by Douglas Hofstadter, published in 1979 by Basic Books. ...
References  Brunfiel, Geoff, Student snags maths prize, Nature, October 24. 2007.
 Boolos, George; Richard Jeffrey (1989, 1999). Computability and Logic, 3rd ed., Cambridge UK: Cambridge University Press. ISBN 052120402X.
 Boolos, George; John Burgess, Richard Jeffrey, (2002). Computability and Logic, 4th ed., Cambridge UK: Cambridge University Press. ISBN 0521007585 (pb.). 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.
 B. Jack Copeland ed. (2004), The Essential Turing: Seminal Writings in Computing, Logic, Philosophy, Artificial Intelligence, and Artificial Life plus The Secrets of Enigma, Clarendon Press (Oxford University Press), Oxford UK, ISBN 0198250797. Contains the Turing papers plus a draft letter to Emil Post re his criticism of "Turing's convention", and Donald W. Davies' Corrections to Turing's Universal Computing Machine
 Martin Davis (1958). Computability and Unsolvability. McGrawHill Book Company, Inc, New York. . On pages 1220 he gives examples of 5tuple 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). Second Edition: Computability, Complexity, and Languages and Logic: Fundamentals of Theoretical Computer Science, 2nd ed., San Diego: Academic Press, Harcourt, Brace & Company.
 Martin Davis (ed.) (1965), The Undecidable, Raven Press, Hewlett, NY.
 Martin Davis (2000). Engines of Logic: Mathematicians and the origin of the Computer, 1st edition, W. W. Norton & Company, New York. ISBN 0393322297 pbk..
 Jim Giles, Simplest 'universal computer' wins student $25,000, New Scientist, October 24, 2007.
 Robin Gandy, "The Confluence of Ideas in 1936", pp.51–102 in Rolf Herken, see below.
 Hennie, Fredrick (1977). Introduction to Computability. AddisonWesley, Reading, Mass. . On pages 90–103 Hennie discusses the UTM with examples and flowcharts, but no actual 'code'.
 Stephen Hawking (editor), 2005, God Created the Integers: The Mathematical Breakthroughs that Changed History", Running Press, Philadelphia, ISBN13: 9780762419227. Includes Turing's 1936–1937 paper, with brief commentary and biography of Turing as written by Hawking.
 Rolf Herken. The Universal Turing Machine—A HalfCentury Survey. Springer Verlag. ISBN 3211826378.
 Andrew Hodges, Alan Turing: The Enigma, Simon and Schuster, New York. Cf Chapter "The Spirit of Truth" for a history leading to, and a discussion of, his proof.
 John Hopcroft and Jeffrey Ullman, (1979). Introduction to Automata Theory, Languages and Computation, 1st edition, AddisonWesley, Reading Mass. ISBN 020102988X.. A difficult book. Centered around the issues of machineinterpretation of "languages", NPCompleteness, etc.
 Hopcroft, John E.; Rajeev Motwani, Jeffrey D. Ullman (2001). Introduction to Automata Theory, Languages, and Computation, 2nd ed., Reading Mass: AddisonWesley. Distinctly different and less intimidating than the first edition.
 Stephen Kleene (1952), Introduction to Metamathematics, NorthHolland 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.: AddisonWesley 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.
 Marvin Minsky, Computation: Finite and Infinite Machines, PrenticeHall, 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 edition, Addison Wesley. ISBN 0201530821. Chapter 2: Turing machines, pp.19–56.
 Emil Post (1936), "Finite Combinatory Processes—Formulation 1", Journal of Symbolic Logic, 1, 103–105, 1936. Reprinted in The Undecidable pp.289ff.
 Emil Post (1947), "Recursive Unsolvability of a Problem of Thue", Journal of Symbolic Logic, vol. 12, pp. 1–11. Reprinted in The Undecidable pp.293ff. In the Appendix of this paper Post comments on and gives corrections to Turing's paper of 1936–1937.
 Roger Penrose (1989, 1990). The Emperor's New Mind, 2nd edition, Oxford University Press, New York. ISBN 0198519737.
 Ivars Peterson (1988). The Mathematical Tourist: Snapshots of Modern Mathematics, 1st edition, W. H. Freeman and Company, New York. ISBN 0716720647 (pbk.).
 Rogozhin, Yurii, "A Universal Turing Machine with 22 States and 2 Symbols", Romanian Journal Of Information Science and Technology, 1(3), 259–265, 1998. (surveys known results about small universal Turing machines)
 Michael Sipser (1997). Introduction to the Theory of Computation. PWS Publishing. ISBN 053494728X. Chapter 3: The ChurchTuring Thesis, pp.125–149.
 Stone, Harold S. (1972). Introduction to Computer Organization and Data Structures, 1st ed., New York: McGrawHill Book Company. ISBN 0070617260.
 Paul Strathern. Turing and the Computer—The Big Idea. Anchor Books/Doubleday. ISBN 038549243X.
 Alan Turing (1936), "On Computable Numbers, With an Application to the Entscheidungsproblem", Proceedings of the London Mathematical Society, Series 2, Volume 42 (1936). Eprint. Reprinted in The Undecidable pp.115–154.
 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 0444880712 (Volume A). QA76.H279 1990. Valuable survey, with 141 references.
 Hao Wang, "A variant to Turing's theory of computing machines", Journal of the Association for Computing Machinery (JACM) 4, 63–92 (1957).
 Stephen Wolfram, Wolfram, Stephen, A New Kind of Science, Wolfram Media, ISBN 1579550088
In theoretical computer science a register machine is an abstract machine used to study decision problems, similar to how a Turing machine is used. ...
It has been suggested that this article or section be merged into computable function. ...
Taylor L. Booth was a mathematician specialized in automata theory. ...
B. Jack Copeland is Professor of Philosophy at the University of Canterbury, Christchurch, New Zealand. ...
Emil Leon Post (February 11, 1897  April 21, 1954) was a PolishAmerican mathematician and logician. ...
Martin Davis, (born 1926, New York City) is an American mathematician, known for his work on Hilberts tenth problem. ...
Martin Davis, (born 1926, New York City) is an American mathematician, known for his work on Hilberts tenth problem. ...
Martin Davis, (born 1926, New York City) is an American mathematician, known for his work on Hilberts tenth problem. ...
Robin Oliver Gandy (22 September 1919  20 November 1995) was a British mathematician and logician. ...
Stephen William Hawking, CH, CBE, FRS, FRSA, (born 8 January 1942) is a British theoretical physicist. ...
John Hopcroft John E. Hopcroft (born October 7, 1939) is a renowned theoretical computer scientist and the grandson of Jacob Nist, founder of the Seattle Box Company. ...
Jeffrey D. Ullman (born November 22, 1942) is a renowned computer scientist. ...
Stephen Cole Kleene (January 5, 1909  January 25, 1994) was an American mathematician whose work at the University of WisconsinMadison helped lay the foundations for theoretical computer science. ...
Donald Knuth Donald Ervin Knuth (born January 10, 1938) is a renowned computer scientist and Professor Emeritus at Stanford University. ...
Marvin Lee Minsky (born August 9, 1927), sometimes affectionately known as Old Man Minsky, is an American cognitive scientist in the field of artificial intelligence (AI), cofounder of MITs AI laboratory, and author of several texts on AI and philosophy. ...
Christos Papadimitriou is a Professor in the Computer Science Division at the University of California, Berkeley, USA. He studied at the National Technical University of Athens (BS in Electrical Engineering, 1972) and at Princeton University (MS in Electrical Engineering, 1974 and PhD in Electrical Engineering and Computer Science, 1976). ...
Emil Leon Post (February 11, 1897  April 21, 1954) was a PolishAmerican mathematician and logician. ...
Emil Leon Post (February 11, 1897  April 21, 1954) was a PolishAmerican mathematician and logician. ...
Sir Roger Penrose, OM, FRS (born 8 August 1931) is an English mathematical physicist and Emeritus Rouse Ball Professor of Mathematics at the Mathematical Institute, University of Oxford and Emeritus Fellow of Wadham College. ...
Ivars Peterson is an awardwinning mathematics writer. ...
Michael Sipser Michael Sipser is a professor of Applied Mathematics in the Theory of Computation Group at the Massachusetts Institute of Technology. ...
Paul Strathern (1940) is a British writer and academic. ...
Alan Mathison Turing, OBE, FRS (23 June 1912 â€“ 7 June 1954) was an English mathematician, logician, and cryptographer. ...
Hao Wang 王浩 (1921 – 1995) was a ChineseAmerican logician, philosopher and mathematician. ...
Stephen Wolfram (born August 29, 1959 in London) is a physicist known for his work in theoretical particle physics, cellular automata, complexity theory, and computer algebra, and is the creator of the computer program Mathematica. ...
External links  online Turing Machine emulator Online emulator
 Turing Machine on Stanford Encyclopedia of Philosophy
 Detailed info on the ChurchTuring Hypothesis (Stanford Encyclopedia of Philosophy)
 Turing MachineLike Models in Molecular Biology, to understand life mechanisms with a the DNAtape processor.
 The Turing machine—Summary about the Turing machine, its functionality and historical facts
 Can the cosmos be modeled by a Turing machine? Private web site concludes that the cosmos cannot be represented as a Turing computation.
 The Turing Machine and Universal Computation—The paper discusses the concept of the Turing Machine in a historical context and why it provides an important connection between mathematics and computing.
 The Wolfram 2,3 Turing Machine Research Prize—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 in Conway's Game of Life by Paul Rendell
Simulators  Visual Turing Machine, a visual designer and simulator (Free software, crossplatform)
 Visual Turing, a Turing machine interactive simulator/IDE (freeware, Windows)
 Simple Java demonstration of a Turing Machine that adds and multiplies small numbers.
 JFLAP, tool for simulating finite automata, pushdown automata and Turing machines (multitape and building blocks) (Free software)
 Turing Machine Simulator, basic, easytouse Turing Machine simulator written in C# (Free software, .NET)
 Visual Automata Simulator, a tool for simulating, visualizing and transforming finite state automata and Turing Machines (Free software, crossplatform)
 Suzanne Britton's Turing Machine Simulator (Java applet)
 C++ Simulator of a Nondeterministic and Deterministic Multitape Turing Machine (Free software)
 C++ Simulator of a Universal Turing Machine (which accepts Multitape Turing Machine) (Free software)
 Turing Train Terminal—A working Turing machine built out of model trains
 TMML—Describing a Turing Machine with XML
 TuringMachine function in Mathematica—Documentation for the Mathematica function that generates the evolution of Turing machines.
