No matter how we try to extend our TM model, it never seems to increase its computational power. In fact, other completely different computational models have been proposed, and none of them are any more powerful than our basic Turing machine. This leads to the Church-Turing Thesis which, roughly, says this: "If a Turing machine can't compute it, nothing can!"
More precisely, the Church-Turing Thesis says that a Turing machine can be taken as the definition of what it means to compute --- i.e. by definition what a TM computes is what's computable --- because any computational device can be simulated by a Turing machine. This is not a mathematical fact, it's a philosophical statement. It's a definition of a term (computable) which, otherwise is vague. In the next few classes, we'll show that there are problems that cannot be computed by Turing machines, which means there are problems that are "uncomputable".
To make things clear, let's fix names for every possible character, and while we're at it, every possible state. Let S = {a0 , a1 , a2 , ...} be the set of all possible symbols for a machine. Let A = {q0 , q1 , q2 , ...} be the set of all possible states for Turing Machines. Thus, any machine M = (Q,Σ,Γ,δ,s) will satisfy Σ ⊂ S and Q ⊂ A.
We'll let e be our "encoding function", which takes any object and encodes it as a string of zeros and ones. First let's look at characters:
e(□) = 0Next we'll come up with an encoding scheme for states ... including the halt state
e(ai) = 0i+2
e(h) = 0Finally we must encode the three possible moves of the tape head:
e(qi) = 0i+2
e(S) = 0
e(L) = 00
e(R) = 000
At this point, we have a scheme for encoding the building blocks of a machine, but the real heart of the machine is $\delta$. If transition $m$ in a TM is $\delta(p,a) = (q,b,D)$, we encode $m$ as \[e(m) = e(p)1e(a)1e(q)1e(b)1e(D)1\]
Now we can encode a Turing Machine. Let $T$ be a Turing Machine with initial state $q$ and ``transitions'' (i.e. values of $\delta$) $m_1,m_2,\ldots,m_k$ We encode $T$ as: \[e(T) = e(q)1e(m_1)1e(m_2)1\cdots e(m_k)1\]
Since we've come so far, I should also point out that we could encode an input string $z = a_{i_1} a_{i_2} \cdots a_{i_n}$ as: \[e(z) = 11e(a_{i_1})1 e(a_{i_2})1 \cdots e(a_{i_n})1\]
To summarize:
| Symbols | States | Moves |
|
$e(□) = 0$ $e(a_i) = 0^{i+2}$ |
$e(h) = 0$ $e(q_i) = 0^{i+2}$ |
$e(S) = 0$ $e(L) = 00$ $e(R) = 000$ |
Note: The set of states in the machine is implicit in the transitions, meaning that if you want to know what states are in the TM described by an encoding, you go through all the transitions and collect any states that get mentioned into a set, and that's your set of states.
Note: You may be worried (or maybe not) that there could be "missing" transitions in the encoding, meaning that there is a state that is a part of the machine, since it appears in a transition, but does not itself have outgoing transisitions for each of the characters that get mentioned. We adopt the same convention as with our diagram: if $q_i$ is a state in the machine and $a_j$ a character in the tape alphabet for which there is no transition out of $q_i$ for symbol $a_j$, $\delta(q_i,a_j) = (q_i,a_j,S)$ is an implicit transition.
This machine gets encoded as:![]()
0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 \__/ \____________________________/ \______________________/ start transition 1 transition 2 state
Input string w = ai1 ai2 ... aik gets encoded as e(w) = 11e(ai1 ) e(ai2 ) ... e(aik )This input string can then simply be appended to the encoded machine.
0010010101010110010010001001000110001010001010001100010010010010001111001001001
\_________/ \_______________/ \______________/ \_______________/ \_________/
t1 t2 t3 t4 input
00+1(00+10+10+10+1(0|00|000)11)*11(00+1)*