Sunteți pe pagina 1din 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. Traduccin al espaol de Esteban Perini y Florencia Ragone

Una funcin es efectivamente computable si existen determinadas reglas explcitas por las
cuales se pueda en principio computar su valor para cualquier argumento dado. Esta nocin
ser explicada ms a fondo abajo, sin embargo, incluso despus de una explicacin extensa,
permanece como una nocin intuitiva. En este captulo nos dedicaremos al anlisis de la
computabilidad introduciendo una nocin rigurosamente definida de una funcin Turingcomputable. Resultar evidente desde la definicin que las funciones Turing-computables son
efectivamente computables. La hiptesis de que, a la inversa, toda funcin efectivamente
computable es Turing-computable se conoce como la Tesis de Turing. Esta tesis no es evidente,
ni puede ser rigurosamente probada (pues la nocin de computabilidad efectiva es intuitiva y
no es una nocin rigurosamente definida), sin embargo, una gran cantidad de evidencia se ha
acumulado en su favor. Una pequea parte de aquella evidencia ser presentada en este
captulo y extendida en los captulos siguientes. Primero introduciremos la nocin de mquina
de Turing, daremos ejemplos y despus presentaremos la definicin oficial de lo que significa
para una funcin ser computable por una mquina de Turing o ser Turing-computable.

Un ser suprahumano, como Zeus del captulo anterior, podra quizs escribir la tabla entera de
valores para una funcin 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 funcin f, sino slo 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 funcin 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 funcin 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 nocin se extiende de un modo evidente a funciones binarias
y n-arias). Las instrucciones deben ser completamente determinadas y explcitas. Deberan
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 deberan requerir fuentes externas de
1

informacin ni inventiva al ser ejecutadas, de modo que uno podra esperar automatizar el
proceso de aplicacin de reglas, y que sea llevado a cabo por un dispositivo mecnico.
Permanece el hecho de que no ser factible en la prctica para ningn ser humano ni para
ningn dispositivo mecnico llevar realmente a cabo el cmputo para todos los valores de n sino
slo para un nmero finito de ellos: tericamente podra ser completada en una cantidad finita
de tiempo, si nos mantuviramos sanos, o si la mquina permaneciera en correcto
funcionamiento durante ese tiempo; pero en la prctica, moriremos o la mquina colapsar
mucho antes de que el proceso se complete. (Tambin existe una preocupacin por encontrar
suficiente espacio para almacenar los resultados intermedios del cmputo, e incluso, una
preocupacin por encontrar suficiente materia para utilizar en la escritura de aquellos
resultados: slo hay una cantidad finita de papel en el mundo, de modo que se debera escribir
ms y ms pequeo sin lmite; para conseguir poner en papel un nmero infinito de smbolos
finalmente se estara tratando de escribir sobre molculas, tomos, electrones.) Pero el
presente estudio ignorar estas limitaciones prcticas, y trabajar con una nocin idealizada de
computabilidad que va ms all de lo que las personas o las mquinas reales pueden estar
seguras de hacer. Nuestra meta final ser probar que algunas funciones no son computables,
incluso aunque las limitaciones prcticas de tiempo, velocidad y cantidad de material pudieran
ser superadas, y para este propsito el requerimiento esencial es que nuestra nocin de
computabilidad no sea demasiado estrecha.
Hasta ahora hemos estado girando en torno de un punto importante. Cuando nos es dado como
argumento un nmero n o un par de nmeros (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
funcin que tratamos de computar es un nmero, con lo que nuestros cmputos de hecho
terminan es con un numeral para ese nmero. Ahora bien, en el curso de la historia humana se
ha desarrollado una gran cantidad de sistemas de numeracin, desde la notacin con palotes en
la cual el nmero n es representado por una secuencia de n barras, hasta la notacin indoarbiga 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 smbolos especiales.
Hace diferencia en una definicin de computabilidad cul de estos sistemas adoptamos?
Ciertamente los cmputos pueden, en la prctica, ser ms difciles con algunas notaciones que
con otras. Por ejemplo, multiplicar nmeros expresados en numerales decimales (expresando el
producto en la misma forma) es ms fcil en la prctica que multiplicar nmeros dados en algo
como numerales romanos. Supngase que nos son dados dos nmeros, expresados en
numerales romanos, digamos XXXIX y XLVIII, y se nos pide obtener el producto, tambin en
numerales romanos. Probablemente para la mayora de nosotros el modo ms fcil de hacerlo
sera traducir primero de romano a indo-arbigo -las reglas para hacer esto son, o al menos
eran, enseadas en la escuela primaria, y en cualquier caso pueden buscarse en obras de
1

N. de los T.: A continuacin para referirnos a los signos de los nmeros emplearemos la palabra numeral,
mientras que nmeros se reserva para aquello que los signos denotan.

consulta- obteniendo as 39 y 48. Luego uno llevara a cabo la multiplicacin en el propio


sistema de numerales ms conveniente, obteniendo 1872. Finalmente uno traducira el
resultado de vuelta al sistema inconveniente, obteniendo MDCCCLXXII. Hacer todo esto es, por
supuesto, ms difcil que simplemente llevar a cabo la multiplicacin en nmeros dados en
numerales decimales desde el comienzo.
Pero el ejemplo muestra que cuando un cmputo puede ser hecho en una notacin, es posible
en principio hacerlo en cualquier otra notacin, simplemente traduciendo los datos de la
notacin engorrosa a una ms sencilla, llevando a cabo la operacin usando la notacin ms
sencilla, y luego traduciendo el resultado otra vez, desde la notacin ms sencilla a la ms
engorrosa. Si una funcin es efectivamente computable cuando los nmeros son representados
en un sistema de numerales, tambin ser tal cuando los nmeros sean representados en
cualquier otro sistema de numerales siempre y cuando la traduccin entre sistemas pueda ser
llevada a cabo en s misma de acuerdo con reglas explcitas, como es el caso de cualquier
sistema de numeracin histrico 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 comnmente se utiliza.) Para el propsito de estructurar una nocin
de computabilidad rigurosamente definida, es conveniente utilizar la notacin mondica o la
notacin con palotes.
Una mquina de Turing es un tipo especfico de mquina idealizada para llevar a cabo
cmputos, especialmente cmputos sobre los enteros positivos representados en la notacin
mondica. Suponemos que el cmputo 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 ms 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, ms frecuentemente B, y la barra con S1, |, ms
frecuentemente 1, dependiendo del contexto.) Y con a lo sumo un nmero finito de
excepciones, todos los cuadrados estn en blanco, tanto inicialmente como en cada etapa
subsiguiente del cmputo.
En cada etapa del cmputo, el computador (esto es, el agente humano o mecnico que realiza
el cmputo), 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 mquina) es capaz de moverse: un cuadrado a la derecha, o un
cuadrado a la izquierda por vez. Se puede, si se quiere pensar la mquina de un modo
aproximado como una caja sobre ruedas que, en cualquier etapa del cmputo est sobre algn
cuadrado de la cinta. La cinta es como las vas de un ferrocarril; las vigas marcan los lmites de
los cuadrados; y la mquina es como un automvil corto, capaz de moverse a lo largo de la va
en cualquier direccin, como en la figura 3-1.

Figura 3-1. Una mquina de Turing

En la parte inferior del automvil hay un dispositivo que puede leer lo que est escrito entre las
vigas, y borrar o imprimir una barra. La mquina est diseada de modo que en cada etapa del
cmputo se encuentra en uno de un nmero finito de estados internos q 1qm. El hecho de estar
en un estado u otro podra ser cuestin de tener tal diente de cierta rueda dentada ms alto, o
de tener el voltaje en cierta terminal dentro de la mquina a tal nivel de los m diferentes
niveles, o cosas por el estilo: no estamos interesados en la mecnica o electrnica del asunto.
Quizs la forma ms simple de imaginar el asunto es un poco toscamente: dentro de la caja hay
un hombre pequeo 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 mquina tiene una lista de instrucciones escritas en un papel, y se encuentra en el estado
qi cuando est llevando a cabo la instruccin nmero i.
Cada una de las instrucciones tiene forma condicional: dice qu hacer dependiendo de si el
smbolo que est siendo examinado (el smbolo 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 cmputo.
[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
instruccin se est llevando a cabo (= en qu estado se encuentra la mquina o su operador) y
de qu smbolo se est examinando, la mquina o su operador realizarn uno u otro de estos
cinco actos manifiestos. Salvo que el cmputo sea parado (acto manifiesto nmero (5)), la
mquina o su operador deben realizar tambin un acto oculto en el interior de la caja, a saber,
el acto de determinar cul ser la siguiente instruccin (el siguiente estado). De este modo el
estado presente y el presente smbolo examinado determinan qu acto manifiesto ser
realizado, y cul ser el siguiente estado.

El problema global de instrucciones puede ser especificado de varias maneras, por ejemplo, por
medio de una tabla de mquina, o un diagrama de flujo (tambin llamado grfico de flujo), o
por un conjunto de cudruplos. Para el caso de una mquina que escribe tres smbolos S1 en
una cinta en blanco y luego para, examinando el que est ms a la izquierda, las tres formas de
descripcin estn ilustradas en la figura 3-2.

(a) Tabla de mquina

(b) Diagrama de flujo

(c) Conjunto de cudruplos

Figura 3-2. Un programa de la mquina de Turing

S-ar putea să vă placă și