Qué computa la computadora

25 abril 2011

Las memorias son cada vez más grandes, las máquinas cada vez más veloces y más potentes, ocupan espacios cada vez menores, y las maravillas que hacen las computadoras no paran de  sorprender, pero… ¿qué cosas podrán llegar a hacer las computadoras? ¿O acaso sólo puedan computar?

Por Juan Pablo Galeotti y Sergio Mera para EXACTAmente 46

Babilonia, 2400 años antes de Cristo. Muchos inventos diferentes emergieron en una de las civilizaciones más antiguas que se conoce: la agricultura organizada, la escritura, la rueda y… ¡la primera computadora! Y lo más curioso es que no necesitaba electricidad, no se colgaba y tampoco había que cambiarla por una nueva con tanta frecuencia. Está bien, había que pagar un precio bastante alto por estas ventajas, y en esa época uno no podía hacer mucho más que sumar y restar unos pocos números. Como quizás algunos ya sospechan, esta computadora no fue ni más ni menos que el ábaco, la primera herramienta conocida que fue usada para realizar un cómputo.

Ahora bien, ¿qué hacemos cuando “computamos”? Intuitivamente podemos pensar que estamos llevando a cabo un procedimiento, un algoritmo, para resolver un problema. Por ejemplo, si queremos sumar dos números con un ábaco, computar significa mover las piezas de determinada manera. En este caso los que movemos las piezas, es decir, los que conocemos y ejecutamos el algoritmo, somos nosotros. Ahora, no siempre computar significa usar un aparato mecánico como el ábaco. Si los números no son demasiado grandes, podemos intentar sumarlos mentalmente. Acá el dispositivo no es que haya desaparecido, sino que es nuestro propio cerebro.

Otro caso muy claro es pensar en una computadora como la conocemos ahora. Una computadora se parece mucho al ábaco, pero con algunas diferencias. Por un lado no tenemos que intervenir manualmente en cada paso del cómputo como hacíamos con el ábaco, la computadora se encarga de eso en forma automática. Por otro lado, no solamente podemos sumar o restar, sino hacer muchísimas cosas más. Sólo le tenemos que decir cuál es la operación que queremos llevar a cabo.

En camino a la máquina que todo lo puede

¿Qué tienen en común todos estos procesos de los que hablamos? Uno podría pensar que para sumar dos números también se podría usar algún oráculo como los de la antigua Grecia, darle los números a sumar, esperar que vuelva del trance y preguntarle el resultado. ¿Es esto también computar? Bueno, es un procedimiento concreto, eso seguro, y tiene una secuencia de pasos bien definidos. Lo que no parece es que sea un procedimiento efectivo, es decir, un proceso repetible y en el que siempre vamos a obtener el mismo resultado –el correcto– para los mismos valores de entrada.

Una vez que acordamos el significado de procedimiento efectivo, una pregunta que surge muy naturalmente es ¿qué es todo lo que se podrá calcular con un procedimiento efectivo? Dado que la noción de procedimiento efectivo está muy relacionada con la de proceso automático, la pregunta puede mirarse como ¿cuáles son las cosas que se pueden resolver de forma automática? Por ejemplo, ¿existirá algún dispositivo con el que se pueda resolver cualquier problema que a uno se le ocurra?

En esa dirección pensaba el matemático David Hilbert cuando en 1930 planteó su famosa pregunta: ¿puede un sistema mecánico decidir si una propiedad matemática es verdadera o falsa? Recordemos que en esa época muchos matemáticos se dedicaban a hacer cálculos, como escribir tablas de integrales, calcular predicciones en sistemas astronómicos, etc. Si bien todavía no existían las computadoras, ya se intuía que mucho de ese trabajo podía ser automatizado. En ese escenario, la pregunta de Hilbert era completamente válida, y era equivalente a decir ¿existirá un día en el que los matemáticos no serán necesarios? Pensemos que hoy los matemáticos ya no calculan tablas de integrales ni nada parecido: este tipo de  problemas son resueltos por una computadora. ¿Será que en un futuro tampoco van a tener que demostrar teoremas porque las computadoras se van a encargar de eso?

La tesis de Church-Turing

Para poder contestar esta pregunta, primero tenemos que ponernos de acuerdo sobre qué significa un “sistema mecánico”. Supongamos que podemos demostrar que todo sistema construido con engranajes tiene limitaciones y que hay preguntas que podemos escribir en el lenguaje de entrada de esta máquina que no pueden ser contestadas, no importa cómo la construyamos. ¿Demostramos con esto que los matemáticos no van a dejar de existir? Bueno, no necesariamente, quizás la limitación provenga de estar usando engranajes. Usando otra tecnología esto tal vez sí sea posible.

Entre 1930 y 1936 Alonso Church, Alan Turing y Stephen Kleene se estaban haciendo esta misma pregunta. Todos coincidían que cualquier sistema mecánico razonable tenía que tener ciertas características en común, como una cantidad máxima de configuraciones simbólicas detectables, un número finito de estados internos distintos en los que el sistema puede estar, etc. Los tres trabajaron independientemente y cada uno propuso una definición distinta, pero luego se demostró que las conclusiones equivalentes.

El hecho de haber llegado a la misma definición por vías distintas convenció a la comunidad (o a casi toda) de que se había llegado a una noción adecuada de procedimiento efectivo. Esto es conocido como la “tesis de Church-Turing”, que afirma que una función efectivamente calculable es una función que puede resolverse en medio del procedimiento efectivo. Esta tesis, lamentablemente, no puede tener una demostración formal, pero esto no afecta la definición de lo que es “razonablemente” calculable con un sistema físico (capaz de un procedimiento efectivo).

El Dr. Santiago Figueira del Departamento de Computación dela FCEyNse dedica a estudiar la teoría de la computabilidad. En su opinión, “El modelo de cómputo de las máquinas de Turing es el más general, es decir, el más poderoso, aunque no es el único. La idea intuitiva de función efectiva, mecánica, realizable, se formaliza con la noción de función computable: una función es computable cuando es calculada por alguna máquina de Turing”. Esto pareciera indicar que la investigación en el área está fuertemente vinculada al uso directo de las máquinas de Turing. Sin embargo, “aunque las máquinas de Turing son las que dan origen a esta noción central de ‘función computable’, no se suelen usar en las demostraciones de los teoremas. Es que la noción de ‘función computable’ es tan intuitiva que en general alcanza con dar argumentos más o menos informales para convencer al lector de una prueba de que cierta construcción es computable. Así que nos quedamos tranquilos con tener la definición ‘cómputo’ basada en máquinas de Turing, pero no las usamos demasiado después.”, afirma Figueira.

Los límites de lo computable

Además de exhibir estos formalismos, tanto Turing como Church pudieron responder, por la negativa, a la famosa pregunta de Hilbert: el problema de decidir si una propiedad matemática arbitraria es verdadera no puede ser resuelto mediante una función computable. En ese sentido los matemáticos tienen su profesión a salvo. El ejemplo más conocido fue encontrado por Turing, y es conocido como el halting problem (el problema de la detención). ¿De qué se trata? Supongamos que queremos averiguar si un algoritmo termina. Sería realmente muy útil si pudiéramos decidir esto con algún procedimiento automático. Por ejemplo, podríamos darle como entrada a este procedimiento cualquier sistema operativo y saber si se cuelga. Lo que mostró Turing fue que tal procedimiento no puede existir. No es posible decidir de forma automática si un algoritmo arbitrario termina.

Tal vez existan procedimientos más efectivos, o extensiones al modelo de Turing. Sin embargo, Figueira asegura “Por un lado es aceptado que no existen ni van a existir procedimientos mecánicos más poderosos que una máquina de Turing [una computadora ideal que realiza procedimientos efectivos]. O sea, nadie duda de la Tesisde Church-Turing. Pero también es cierto que se estudian, desde un punto de vista abstracto, extensiones de las máquinas de Turing;  de hecho ésta es una de las direcciones principales de la teoría de la Computabilidad”. Figueira ha trabajado varios años en extensiones abstractas al modelo de Turing. “El modelo más conocido que extiende a las máquinas de Turing son las máquinas de Turing con oráculo.”

El oráculo es un dispositivo capaz de introducir una decisión no mecánica, no automática, equivalente a una decisión intuitiva que podría tomar, por ejemplo,  un ser humano. “Una máquina con oráculo para abordar el problema de la detención puede calcular más cosas que una máquina que no lo tiene. Pero ¿cuánto más calcula?, ¿hay algo que tampoco esta máquina con oráculo puede calcular?, ¿hay una jerarquía de oráculos que dan más y más información a las máquinas? Estas son algunas de las preguntas centrales que estudia la teoría. Esto es muy interesante desde el punto de vista abstracto, pero está claro que las máquinas de Turing con oráculo son modelos teóricos y no modelos físicos que se puedan construir en el mundo real.”

En relación a la definición de computable Figueira es concluyente: “Lo computable no va a cambiar. Ahí están las funciones computables. Son esas y no otras. Nadie busca nuevos dispositivos que resuelvan problemas que no pueden ser resueltos por una máquina de Turing, o por cualquiera de los otros formalismos equivalentes, dispositivos que puedan ser efectivamente construibles en el mundo real”.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: