COMS W3261 CS Theory
Lecture 13: Turing Machine Variants
1. Programming Techniques for Turing Machines
- The following programmming techniques can be used to make the behavior of a TM clearer
but none of these techniques adds any additional computational power to a basic TM.
- Storage in the state
- We can make a state a tuple with a fixed number of fixed-size components.
- Components of the tuple can hold a fixed amount of data to simplify the behavior
of a TM program.
- Multiple tracks
- We can make each symbol of the input alphabet a tuple with a fixed number of
- Components of the tuple can hold marks and other other information to indicate that
an input tape square has
been previously visited or has been given some fixed value.
- Sets of states as subroutines
- We can group states into "subroutines" where a subroutine has its own start
state and another state which can serve as a "return" state.
2. Extensions of the Basic Turing Machine
- The following extended models of Turing machines can make programming a TM more convenient
but none of these extended
versions adds any additional computational power to a basic TM.
These extended models can be simulated by a basic TM.
- Multitape Turing machines
- Nondeterministic Turing machines
- All these machines are equivalent to a basic Turing machine.
3. Restricted Machines Equivalent to Turing Machines
- The following restricted models of computation can simulate a Turing machine
and so can recognize any recursively enumerable language.
- Turing machines with semi-infinite tapes
- Pushdown automata with two or more stacks
- Two-counter machines
- All of these machines can be simulated by a basic TM.
4. Other Models of Computation Equivalent to Turing Machines
- There are many other models of computation that are equivalent in
computational power to a Turing machine. Here are a few:
- Chomsky type 0 grammars. A type 0 grammar is like a context-free grammar
(V, T, P, S) except that productions can be of the form
α → β where α is a string of nonterminals and
terminals with at least one nonterminal and β is any string of
nonterminals and nonterminals.
- The lambda calculus
- Two-counter machines
- Random access machines
- Turing-complete programming languages. (Programming languages
for doing computation such as C and Python
are Turing complete.
Markup languages used to represent structured data such as HTML and JSON
are not Turing complete.)
- Real computers with potentially an unlimited amount of memory
5. The Church-Turing Thesis
- A Turing machine computes a function from an input to an output by reading the
input, making a sequence of moves, and then halting, leaving only the output of the
function on the tape.
- A recursive function is one that can be computed by a Turing machine that halts on
- A partial-recursive function is one that can be computed by a Turing machine that need
not halt on all inputs. The output of the function on an input for which the Turing
machine does not halt is said to be undefined.
- The Church-Turing thesis says that any general way to compute will allow us to compute
only the partial-recursive functions. The Church-Turing thesis is unprovable because
there is no precise definition for "any general way to compute."
- An informal way of expressing the Church-Turing thesis is that any function that can be
effectively computed can be computed by a Turing machine.
6. Practice Problems
- Describe at a high level how a deterministic multitape TM
can simulate a one-tape nondeterministic TM.
- Describe how a TM with a tape that is infinite only to the right
can simulate a basic TM.
- Describe how a PDA with two stacks can simulate a TM.