COMS W3261
Computer Science Theory
Lecture 13: October 24, 2012
Variants of Turing Machines
Outline
- Midterm solutions
- Recursive and recursively enumerable languages
- Programming techniques for Turing machines
- Variants of Turing machines
1. Recursive and Recusively Enumerable Languages
- A language L is recursively enumerable if L = L(M) for some TM M.
- We sometimes say a language is Turing-recognizable if some TM recognizes it.
- A language is recursive if L = L(M) for some TM M such that
- If w is in L, then M accepts w.
- If w is not in L, then M eventually halts never entering
an accepting state.
- If L is a recursive language, we say L is decidable.
- If L is not a recursive language, we say L is undecidable.
2. Programming Techniques for Turing Machines
- Turing machines are exactly as powerful as conventional computers.
- To make the behavior of a Turing machine clearer, we can use the
finite-state control of a Turing machine to hold a finite amount of data.
One way to do this is to use states with multiple fields, where one field
represents a position in the Turing machine program, and the other fields
hold data elements. The number of fields in a state is always finite.
- Another way to make the behavior of a Turing machine clearer, is to think
of the tape as having several tracks.
- We can also group states into "subroutines". A subroutine has its own start
state, and another state which can serve as a "return" state.
3. Models of Computation Equivalent to Turing Machines
- Many variants of Turing machines have been defined such as:
- Turing machines with a semi-infinite input tape.
- Multitape Turing machines.
- Turing machines with tapes having multiple tracks.
- Nondeterministic Turing machines.
- All these machines are equivalent to our definition of a Turing machine.
- Other universal models of computation:
- 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.
- Lambda calculus.
- Pushdown automata with two or more stacks.
- Two-counter machines.
- Random access machines.
- Most programming languages.
- Real computers with an arbitrary amount of memory.
- Again, all these models are computationally equivalent to our definition
of a Turing machine.
4. Reading Assignment
aho@cs.columbia.edu