Otra forma de caracterizar la
clase de las funciones computables se hace mediante las llamadas máquinas de
Turing 33.
Estas son máquinas formales, es decir sin cables ni componentes físicos. Su
finalidad es definir los cálculos a partir de las operaciones más sencillas
posibles, y utilizando las cuales calcular efectivamente funciones dadas. Las
funciones que así pueden realizarse se llaman funciones calculables o computables.
Este tipo de máquina consta hipoteticamente
de una unidad de control capáz de interpretar las
instrucciones que reciba, y de una cabeza lectora que permite leer el contenido
de una de las casillas en que esta dividida una memoria lineal, ilimitada en
ambas direcciones de sus extremos.
La máquina en
su funcionamiento pasa por diferentes estados en
instantes
sucesivos.
El argumento de la función que queremos calcular estará almacenado previamente
en la memoria, y en el instante inicial, antes de que la máquina comience a
funcionar, la cabeza lectora apuntará al símbolo más a la izquierda del
argumento. A partir de ese momento la máquina realizará operaciones, que
dependerán del estado en que ella se encuentre, y del símbolo que en ese
momento lea la cabeza lectora. Con estas operaciones se podrán realizar las
siguientes atreas: sustituir el símbolo leído por
otro, pasar a leer el símbolo que esta en memoria a la derecha del símbolo
leído, pasar a leer el símbolo que esta en memoria a la izquierda, o saltar
directamente a ejecutar otra instrucción si se cumple una condición
especificada 34;
en todos los casos, y una vez ejecutada la tarea indicada, se pasaría al estado
que tambien se indica en la propia instrucción.
Estas
instrucciones, o cuaternas, las podemos representar e interpretar así:
|
si
estando en el estado |
|
si
desde |
|
si
desde |
|
si
desde |
donde: indica
un estado de la máquina tomado del conjunto de estados
;
indica
uno de los símbolos que pueden aparecer en la memoria tomado del alfabeto
;
es
un símbolo que indica pasar a leer la casilla de memoria situada a la derecha;
es
un símbolo que indica pasar a leer la casilla de memoria situada a la izquierda.
Se define una
máquina de Turing como
un conjunto finito, no vacío, de cuaternas, de forma que no contenga dos
cuaternas con los dos primeros símbolos correspondientes iguales.
Indicaremos
por al
conjunto de estados de la máquina, por
al
alfabeto de símbolos de la memoria.
En siempre
existe un estado particular, que se suele indicar por
y
llamarse estado inicial, en el que se supone está la máquina al comenzar
a operar. En el alfabeto
siempre
figurarán, entre otros posibles, dos símbolos: el blanco (
),
y el uno (expresado por un palote
) . A las cadenas formadas por símbolos de este alfabeto se
las llama expresiones de memoria. Si en una expresión de memoria
incluimos un único símbolo
(que
indique un estado de
)
siempre que no le situemos a la derecha de cualquier otro, obtendremos una
expresión que llamaremos descripción instantánea de la maquina
.
Los números
naturales se representan en estas máquinas, de la forma más simple, es decir
usando un solo símbolo ( ).
Se emplean dos clases de representación numérica; una llamada de entrada
mediante la cual con un solo palote representaremos el cero, y cualquier otro
número
se
representará por
palotes;
y la otra, llamada de salida, consiste en contar el número de palotes que
hay en la expresión de memoria (ningún palote se interpretaría, en este caso,
como el 0).
La
descripción instantánea de la maquina en
el instante inicial podría representarse por
En
cualquier otro instante una descripción instantánea sería de la forma
Para
ver como funciona una máquina de Turing, veamos como
se realizan las transiciones de unas descripciones instantaneas
a otras. Dada una descripción instantanea ,
en la que aparezcan el par de símbolos
,
buscaríamos la cuaterna de la máquina que comience con estos dos símbolos y
operaríamos en consecuencia, es decir, para cada uno de los tipos de cuaternas,
construiríamos la descripción instantánea siguiente,
,
como indicamos a continuación:
para
|
sería |
|
para
|
sería |
|
para
|
sería |
|
para
|
sería |
si el
número representado por cinta en ese instante pertenece a un conjunto
dado si el
número representado por la cinta en ese instante no pertenece a un
conjunto dado |
En el último
caso aparece el conjunto ,
que es un conjunto de números naturales, que no forma parte de la máquina, y al
que hay que consultar antes de tomar la decisión sobre una de las alternativas
propuestas (es el ``oráculo" a que nos referiamos
en una nota de la pagina anterior).
Si no
existiese en ninguna
cuaterna que comenzase por
diríamos
que la descripción instantánea
es
terminal.
En cualquiera
de los casos anteriores decimos que de la descripción instantanea
se
pasa a la
mediante
la maquina de Turing
,
lo que se denota
.
Llamamos
computación o cálculo de una máquina de Turing ,
a una sucesión finita de descripciones instantáneas
,
de forma que para
, sea
,
y sea
,
una descripción instantánea terminal.
Para calcular
una función , mediante una maquina de Turing,
se comenzará representando la n-upla de los
argumentos mediante una expresión de memoria de la forma
, a partir de la cual se formará la
descripción instantánea inicial
a la que se aplicaran sucesivamente las cuaternas que
correspondan de la maquina de Turing hasta llegar a
una descripción instantánea terminal. En esta contamos el numero de palotes que
contiene, y este será el valor de la función. 35
Dada una
función , no siempre existe una Máquina de Turing, mediante la cual, a partir de cualquier argumento,
podamos llegar desde el estado inicial a una descripción instantánea terminal;
cuando existe una tal máquina decimos que la función es computable.