Está en la página 1de 5

Computabilidad de Turing

Fragmento del cap. 3 “Turing Computability” de Computability and Logic, 4ta. ed., escrito por
George S. Boolos, John P. Burgess, Richard Jeffrey. Cambridge et al., Cambridge University Press,
2002, pp. 23-26. Traducción al español de Esteban Perini y Florencia Ragone

Una función es efectivamente computable si existen determinadas reglas explícitas por las
cuales se pueda en principio computar su valor para cualquier argumento dado. Esta noción
será explicada más a fondo abajo, sin embargo, incluso después de una explicación extensa,
permanece como una noción intuitiva. En este capítulo nos dedicaremos al análisis de la
computabilidad introduciendo una noción rigurosamente definida de una función Turing-
computable. Resultará evidente desde la definición que las funciones Turing-computables son
efectivamente computables. La hipótesis de que, a la inversa, toda función efectivamente
computable es Turing-computable se conoce como la Tesis de Turing. Esta tesis no es evidente,
ni puede ser rigurosamente probada (pues la noción de computabilidad efectiva es intuitiva y
no es una noción rigurosamente definida), sin embargo, una gran cantidad de evidencia se ha
acumulado en su favor. Una pequeña parte de aquella evidencia será presentada en este
capítulo y extendida en los capítulos siguientes. Primero introduciremos la noción de máquina
de Turing, daremos ejemplos y después presentaremos la definición oficial de lo que significa
para una función ser computable por una máquina de Turing o ser Turing-computable.

Un ser suprahumano, como Zeus del capítulo anterior, podría quizás escribir la tabla entera de
valores para una función unaria en los enteros positivos escribiendo cada entrada al doble de
velocidad que la anterior, pero para un ser humano es imposible en principio completar un
proceso infinito de esta naturaleza. Afortunadamente, para los fines humanos generalmente no
necesitamos la tabla entera de valores de una función f, sino sólo los valores de a uno por vez,
por así decir: dado un argumento n, necesitamos el valor f(n). Si es posible generar el valor f(n)
de la función f para el argumento n, cuando tal valor se necesita, entonces aquello es casi tan
bueno como tener toda la tabla completa de valores escrita de antemano.
Una función f de enteros positivos a enteros positivos se llama efectivamente computable si
puede darse una lista de instrucciones que en principio hagan posible determinar el valor f(n)
para cualquier argumento n. (Esta noción se extiende de un modo evidente a funciones binarias
y n-arias). Las instrucciones deben ser completamente determinadas y explícitas. Deberían
decirle a uno qué hacer en cada paso, y no que uno pregunte a otra persona qué hacer o que
resuelva por uno mismo qué hacer: las instrucciones no deberían requerir fuentes externas de
1
información ni inventiva al ser ejecutadas, de modo que uno podría esperar automatizar el
proceso de aplicación de reglas, y que sea llevado a cabo por un dispositivo mecánico.
Permanece el hecho de que no será factible en la práctica para ningún ser humano ni para
ningún dispositivo mecánico llevar realmente a cabo el cómputo para todos los valores de n sino
sólo para un número finito de ellos: teóricamente podría ser completada en una cantidad finita
de tiempo, si nos mantuviéramos sanos, o si la máquina permaneciera en correcto
funcionamiento durante ese tiempo; pero en la práctica, moriremos o la máquina colapsará
mucho antes de que el proceso se complete. (También existe una preocupación por encontrar
suficiente espacio para almacenar los resultados intermedios del cómputo, e incluso, una
preocupación por encontrar suficiente materia para utilizar en la escritura de aquellos
resultados: sólo hay una cantidad finita de papel en el mundo, de modo que se debería escribir
más y más pequeño sin límite; para conseguir poner en papel un número infinito de símbolos
finalmente se estaría tratando de escribir sobre moléculas, átomos, electrones.) Pero el
presente estudio ignorará estas limitaciones prácticas, y trabajará con una noción idealizada de
computabilidad que va más allá de lo que las personas o las máquinas reales pueden estar
seguras de hacer. Nuestra meta final será probar que algunas funciones no son computables,
incluso aunque las limitaciones prácticas de tiempo, velocidad y cantidad de material pudieran
ser superadas, y para este propósito el requerimiento esencial es que nuestra noción de
computabilidad no sea demasiado estrecha.
Hasta ahora hemos estado girando en torno de un punto importante. Cuando nos es dado como
argumento un número n o un par de números (n,m), lo que directamente nos es dado es un
numeral para n o un par ordenado de numerales para m y n1. Igualmente, si el valor de la
función que tratamos de computar es un número, con lo que nuestros cómputos de hecho
terminan es con un numeral para ese número. Ahora bien, en el curso de la historia humana se
ha desarrollado una gran cantidad de sistemas de numeración, desde la notación con palotes en
la cual el número n es representado por una secuencia de n barras, hasta la notación indo-
arábiga o decimal de uso cotidiano hoy, pasando por sistemas como los numerales romanos, en
los cuales grupos de barras de 5, 10, 50, 100, en adelante, se abrevian con símbolos especiales.
¿Hace diferencia en una definición de computabilidad cuál de estos sistemas adoptamos?
Ciertamente los cómputos pueden, en la práctica, ser más difíciles con algunas notaciones que
con otras. Por ejemplo, multiplicar números expresados en numerales decimales (expresando el
producto en la misma forma) es más fácil en la práctica que multiplicar números dados en algo
como numerales romanos. Supóngase que nos son dados dos números, expresados en
numerales romanos, digamos XXXIX y XLVIII, y se nos pide obtener el producto, también en
numerales romanos. Probablemente para la mayoría de nosotros el modo más fácil de hacerlo
sería traducir primero de romano a indo-arábigo -las reglas para hacer esto son, o al menos
eran, enseñadas en la escuela primaria, y en cualquier caso pueden buscarse en obras de
1
N. de los T.: A continuación para referirnos a los signos de los números emplearemos la palabra “numeral”,
mientras que “números” se reserva para aquello que los signos denotan.

2
consulta- obteniendo así 39 y 48. Luego uno llevaría a cabo la multiplicación en el propio
sistema de numerales más conveniente, obteniendo 1872. Finalmente uno traduciría el
resultado de vuelta al sistema inconveniente, obteniendo MDCCCLXXII. Hacer todo esto es, por
supuesto, más difícil que simplemente llevar a cabo la multiplicación en números dados en
numerales decimales desde el comienzo.
Pero el ejemplo muestra que cuando un cómputo puede ser hecho en una notación, es posible
en principio hacerlo en cualquier otra notación, simplemente traduciendo los datos de la
notación engorrosa a una más sencilla, llevando a cabo la operación usando la notación más
sencilla, y luego traduciendo el resultado otra vez, desde la notación más sencilla a la más
engorrosa. Si una función es efectivamente computable cuando los números son representados
en un sistema de numerales, también será tal cuando los números sean representados en
cualquier otro sistema de numerales siempre y cuando la traducción entre sistemas pueda ser
llevada a cabo en sí misma de acuerdo con reglas explícitas, como es el caso de cualquier
sistema de numeración histórico que hayamos sido capaces de descifrar. (Decir que hemos sido
capaces de descifrarlo equivale a decir que existen reglas para traducir en un sentido y en otro
dicho sistema y el que hoy comúnmente se utiliza.) Para el propósito de estructurar una noción
de computabilidad rigurosamente definida, es conveniente utilizar la notación monádica o la
notación con palotes.
Una máquina de Turing es un tipo específico de máquina idealizada para llevar a cabo
cómputos, especialmente cómputos sobre los enteros positivos representados en la notación
monádica. Suponemos que el cómputo tiene lugar en una cinta, dividida en cuadrados, que no
tiene fin en ninguna de las dos direcciones –o bien porque es realmente infinita o bien porque
hay alguien posicionado en cada extremo para agregar más cuadrados en blanco cuando sea
necesario. Cada cuadrado o está en blanco, o tiene una barra impresa. (Representamos el
espacio en blanco con S0, ó 0, ó más frecuentemente B, y la barra con S1, ó |, ó más
frecuentemente 1, dependiendo del contexto.) Y con a lo sumo un número finito de
excepciones, todos los cuadrados están en blanco, tanto inicialmente como en cada etapa
subsiguiente del cómputo.
En cada etapa del cómputo, el computador (esto es, el agente humano o mecánico que realiza
el cómputo), examina un cuadrado de la cinta. El computador es capaz de borrar una barra en el
cuadrado examinado si hay una, o de imprimir una barra si el cuadrado examinado está en
blanco. Y él o ella (hombre o máquina) es capaz de moverse: un cuadrado a la derecha, o un
cuadrado a la izquierda por vez. Se puede, si se quiere pensar la máquina de un modo
aproximado como una caja sobre ruedas que, en cualquier etapa del cómputo está sobre algún
cuadrado de la cinta. La cinta es como las vías de un ferrocarril; las vigas marcan los límites de
los cuadrados; y la máquina es como un automóvil corto, capaz de moverse a lo largo de la vía
en cualquier dirección, como en la figura 3-1.

3
Figura 3-1. Una máquina de Turing

En la parte inferior del automóvil hay un dispositivo que puede leer lo que está escrito entre las
vigas, y borrar o imprimir una barra. La máquina está diseñada de modo que en cada etapa del
cómputo se encuentra en uno de un número finito de estados internos q 1…qm. El hecho de estar
en un estado u otro podría ser cuestión de tener tal diente de cierta rueda dentada más alto, o
de tener el voltaje en cierta terminal dentro de la máquina a tal nivel de los m diferentes
niveles, o cosas por el estilo: no estamos interesados en la mecánica o electrónica del asunto.
Quizás la forma más simple de imaginar el asunto es un poco toscamente: dentro de la caja hay
un hombre pequeño que realiza toda la lectura, y escritura, el borrado y el movimiento. (La caja
no tiene fondo, el pobre debe caminar entre las vigas empujando la caja.) Este operador dentro
de la máquina tiene una lista de instrucciones escritas en un papel, y se encuentra en el estado
qi cuando está llevando a cabo la instrucción número i.
Cada una de las instrucciones tiene forma condicional: dice qué hacer dependiendo de si el
símbolo que está siendo examinado (el símbolo en el cuadrado examinado) está en blanco o
tiene una barra, S0, o S1. Hay cinco cosas que pueden hacerse, a saber:
(1) Borrar: escribir S0 en lugar de lo que haya en el cuadrado examinado.
(2) Imprimir: escribir S1 en lugar de lo que haya en el cuadrado examinado.
(3) Moverse un cuadrado hacia la derecha.
(4) Moverse un cuadrado hacia la izquierda.
(5) Parar el cómputo.

[En caso de que el cuadrado ya esté en blanco, (1) equivale a no hacer nada; en caso de que el
cuadrado ya tenga una barra en él, (2) equivale a no hacer nada]. Entonces dependiendo de qué
instrucción se esté llevando a cabo (= en qué estado se encuentra la máquina o su operador) y
de qué símbolo se esté examinando, la máquina o su operador realizarán uno u otro de estos
cinco actos manifiestos. Salvo que el cómputo sea parado (acto manifiesto número (5)), la
máquina o su operador deben realizar también un acto oculto en el interior de la caja, a saber,
el acto de determinar cuál será la siguiente instrucción (el siguiente estado). De este modo el
estado presente y el presente símbolo examinado determinan qué acto manifiesto será
realizado, y cuál será el siguiente estado.

4
El problema global de instrucciones puede ser especificado de varias maneras, por ejemplo, por
medio de una tabla de máquina, o un diagrama de flujo (también llamado gráfico de flujo), o
por un conjunto de cuádruplos. Para el caso de una máquina que escribe tres símbolos S1 en
una cinta en blanco y luego para, examinando el que está más a la izquierda, las tres formas de
descripción están ilustradas en la figura 3-2.

(a) Tabla de máquina (b) Diagrama de flujo (c) Conjunto de cuádruplos

Figura 3-2. Un programa de la máquina de Turing

También podría gustarte