![]() ![]() |
This essay is a more in-depth look into Turing Machines (TM) and their workings than we have previously seen. This essay will assume you have read the Turing Machines essay, or have some knowledge of the basic composition and working of a TM.
00 to 01R.The small letters are the states, the left-hand one referring to the state the machine is in, and the right-hand one referring to the state to change to. The large number on the left-hand side represents the data just read, and on the right-hand side the data to write. The 'R' means to move the tape right, 'L' means to move the tape left (not shown above) and [stop] means to stop the Turing machine (note I will abbrievate this further to merely S). Therefore, the instruction "01 to 11L" means "If in State 0 and a 1 is read, change to state one, output a one on the tape, and shift the tape left." The above 4 rules are the rules that govern unary addition - which is what Generation5's JavaScript Turing Machine demonstrates.
01 to 11R.
10 to 00R. [stop]
11 to 11R.
|
Now that notation and movement has been cleared up, we will move on to the move complicated concept of the Universal Turing Machine.
0 = 0 = 00Therefore, we can code one of the above rules like this:
1 = 1 = 10
L = 2 = 110
R = 3 = 1110
S = 4 = 11110
00 to 01R.Penrose uses some additional tricks and compression techniques to quite substantially reduce down the length of the instruction coding. For our purposes, though, I will not bother looking into such techniques. For simple Turing Machines (like the unary addition one), the final coded string is fairly manageable:
000000101110
00000010111000101010111010000000111011110101010101110Using this coding as a binary representation of a number, we can say that our unary addition turing machine is the 101,523,633,597,102nd Turing Machine using our representation! That's quite a large number considering the relative simplicity of the TM itself. I should note though that using Penrose's more complex coding scheme the TM is merely the 177,642nd machine - which is quite a saving.
What do these numbers mean, though? Aside from allowing a UTM to model them, they mean very little. They do not indicate complexity, nor do they indicate that they even work as Turing Machines! For example, let us take the 132nd Turing Machine. The binary representation of such a string is 10000100, which as our current scheme code stands in impossible to decode! In fact, let us look at what can be encoded:
000001101110 = 110You can see that in the first 750 Turing Machines, only 4 are valid! Now, this is a sign of my terrible coding scheme more than anything else. Nevertheless, on a natural number line, only a fraction of these TMs are valid Turing Machines. The interesting thing is that the Universal Turing Machine also has a number assigned to it. If anyone is enterprising (mad?) enough to attempt to calculate the number for this essay, I'd be very grateful. Needless to say, Penrose and Deutsch figured out the UTM number for Penrose's coding - the decimal number took a page and the binary coding took three!
000011101110 = 238
000101101110 = 366
001011101110 = 750
I find it rather ironic, that Turing's findings are one of Penrose's chief arguments against Artificial Intelligence. The man that founded Artificial Intelligence is also the man that has sparked a lot of debate about whether it can ever be achieved.
Submitted: 17/01/2000