The finite-state machine is too limited to even be able to recognize simple
sets like , where
stands for n copies of a. In 1936 Alan
Turing proposed a machine (now called a ``Turing Machine'') which is
general enough to implement any algorithm to date. It is a simple modification
of the finite-state machine, as we see below.
Definition: Let S be a finite set of states and I a finite set of tape symbols, including a special symbol b (for ``blank''). A Turing Machine is a set of quintuples of the form (s,i,i',s',d) where
The machine acts on an ``infinite tape'' (so it's hard to implement...), with at most a finite number of non-blank entries (so it has unlimited memory, only a finite amount of which is actually non-blank).
The Turing machine processes the tape until it arrives at a state and input which is not found in the set SxI, at which point it terminates.
This is very similar to the finite state machine in some ways: we think of
``...[A] finite-state machine is a very special case of a Turing machine, one that always prints the old symbol on the cell read, always moves to the right, and always halts on the symbol b.'' p. 591.
Turing machines can be used as
Since any algorithm can be implemented in a Turing machine, the next questions to ask might be:
You've got your work cut out for you: to tackle these and other difficult problems. Go to it!