Definition:Turing Machine

A Turing machine is an idealization of a computing machine.

It was devised around 1936 by Alan Turing.

The idea goes as follows.

A Turing machine works by manipulating symbols on a piece of paper by means of a specific set of algorithmic rules.

To simplify things, the piece of paper being worked on is in the form of a series of boxes on a one-dimensional "tape" divided into squares.

Each square can be either blank or can contain a symbol taken from a finite list, e.g. $$s_1, s_2, \ldots, s_\alpha$$.

The machine examines one square at a time, and carries out an action determined by:
 * the symbol in the square;
 * the current internal state of the machine.

The internal state of the machine is a way of providing a device that can keep track of the symbols in other squares.

There can be only a finite number of these states, say $$q_1, q_2, \ldots, q_\beta$$.

The actions that the machine can take are as follows:
 * Replace the symbol in the square with another symbol;
 * Move to examine the square in the immediate left of the current square being looked at;
 * Move to examine the square in the immediate right of the current square being looked at;

After carrying out an action, the machine may change to a different internal state.

The program for the machine is a set of instructions which specify:
 * what action to take in some possible combinations of the internal state and symbol in the square currently being read;
 * which internal state the machine moves into after carrying out that action.

Thus the instructions have the following form:
 * $$q_i \quad s_j \quad A \quad q_t$$

which is interpreted as:

"If: then:
 * the machine is in internal state $$q_i$$;
 * the symbol in the square currently being examined is $$s_j$$;
 * Carry out action $$A$$;
 * Move into internal state $$q_t$$.

The actions can be abbreviated to:
 * $$L$$: Move one square to the left;
 * $$R$$: Move one square to the right;
 * $$s_k$$: Replace the symbol in the square currently being read with symbol $$s_k$$.

The computation stops when there is no instruction which specifies what should be done in the current combination of internal state and symbol being read.