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 se lee el simbolo , entonces se cambia por y se pasa al estado |
R : | si desde se lee , entonces se pasa a leer la casilla situada a su derecha y se cambia al estado |
L : | si desde se lee , entonces se pasa a leer la casilla a su izquierda y se cambia al estado |
: | si desde se lee , entonces se cambia al estado o al según una cierta condición |
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
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 , o bien
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
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.