- An Alan Turing Wikipedia article.

- Proposed by Alan Turing in 1936.
- Like a finite automaton, but has unlimited and unrestricted memory.
- Can solve any problem that is computable.

- An infinite tape
- A read/write head that can read symbols from the tape and write symbols to the tape.
- A read/write head that has the ability to move one square either left or right on the tape.
- Accept and Reject states that take effect immediately.

Look at Figure 3.2 on page 167. The idea is to
recognize the language B = {w#w | w ∈ {0, 1}^{*}}.

A Turing machine is a 7-tuple (Q, Σ, Γ, δ,
q_{0}, q_{accept}, q_{reject}) where
Q, Σ, Γ are finite sets and

- Q is the set of states,
- Σ is the input alphabet not containing the
**blank symbol**, - Γ is the tape alphabet, where the
**blank symbol**∈ Γ and Σ ⊆ Γ, - δ: Q × Γ → Q × Γ × {L, R} is the transition function,
- q
_{0}∈ Q is the start state, - q
_{accept}∈ Q is the accept state, and - q
_{reject}∈ Q is the reject state, where q_{reject}≠ q_{accept}.

- What is Σ in Figure 3.2?
- What is Γ in Figure 3.2?
- Assume that at the start of a computation, the input tape
contains 0100#0100 (followed by an infinite number of
**blank symbols**). What transitions are needed for the tape to contain x100#x100 and for the read/write head to be positioned on the #? - A
**configuration**of a Turing machine is*u q v*where*q*is the current state of the machine and*u v*are the contents of Γ. The first symbol of*v*is the location of the read/write head. What is the starting configuration in the bullet above?

*ua q*_{i}bv**yields***u q*if δ(q_{j}acv_{i}, b) = (q_{j}, c, L). Note:*u, v*∈ Γ^{*}and*a, b, c*∈ Γ*ua q*_{i}bv**yields***uac q*if δ(q_{j}v_{i}, b) = (q_{j}, c, R).

- Write the special cases for
**yields**if the configuration is*q*._{i}bv - Explain why special cases are not needed for configuration
*ua q*._{i}

- Special configurations include the
**start configuration**,**accepting configuration**,**rejecting configuration**and**halting configuration**. - A Turing Machine M
**accepts**input*w*if a sequence of configurations C_{1}, ... C_{k}exist such that C_{1}is the start configuration, each C_{i}yields C_{i+1}and C_{k}is an accepting configuration. - The collection of strings that Turing Machine M accepts is the
**language of M**or the**language recognized by M**and is denoted L(M). - A language is
**Turing-recognizable**if some Turing Machine recognizes it. - A language is
**Turing-decidable**(or**decidable**) if some Turing Machine decides it. To decide a language, the Turing Machine must halt on all inputs. In other words, no infinite looping is allowed. Every decidable language is Turing-recognizable, but not vice-versa - stay tuned!