Universal Turing machine
Set
M∈UTM |
M⊂TM2 |
x,α … bit string |
Mα … Turing machine |
∀M′. ∃α. ∀x. M[x,α]=Mα[x] |
Discussion
Turing showed that there indeed exist such universal Turing machines which are capable of running any other Turing machine M when given in machine code format: We ecode the original Turing machine Mα into a string α itself, i.e. ▹ α ◻ ◻ …, where α is the so called “machine code” of the machine Mα. Now have another machine M (designed for taking other Turing machines as additional input and copy what they would do) and simulate the machine code together with some normal input for α. Without going into detail, the idea is the following. Remember that a general transition function is of the type:
δ:Q×Γk→Q×Γk×{L,S,R}k
Consider a transition function δ for a Turing machine M we want to simulate:
δ:Q×Γ→Q×Γ×{L,S,R}
The art in designing the universal Turing machine M′ (and in particular δ′, which by construction has access to Q and δ) in terms of M. One key is to story Q and δ of M on M′'s tapes ΓQ,Γδ. Roughly
“δ′:Q′×Γ×ΓQ×Γδ→Q′×Γ×ΓQ×Γδ×{L,S,R}3”
After this 3-tape Turing machine is constructed we can concert is to a 1-tape Turing machine, if necessary.
Such a universal machine can be physically realized via hardware (like a PC, designed for executing δ with 3 Gigahertz) and the machine code might then come from a computer program written by a 6 year old fat girl from Ohio. This video is from a nerd who wanted to build himself a hands on realization of a universal Turing machine.
Theorems
The described process changes the runtime only as O(T(n))→O(⌈logT(n)⌉⋅T(n)).