Mostrando entradas con la etiqueta Algoritmo. Mostrar todas las entradas
Mostrando entradas con la etiqueta Algoritmo. Mostrar todas las entradas

17 de enero de 2016

La búsqueda de la computabilidad y la formulación de la máquina de Turing

La búsqueda de la computabilidad es el cuarto capítulo del libro Rompiendo los códigos.Vida y legado de Turing. En este capítulo, se plantea, por un lado, el problema de la decibilidad o Entscheidungsproblem, y, por el otro lado, qué es y cómo funciona una máquina de Turing.

Los fundamentos de las matemáticas, que hemos expuesto anteriormente, son el "contexto histórico" en el que Alan Turing se mueve antes de participar en el curso de Max Newman sobre los fundamentos de las matemáticas. Es en el tercer punto: "¿Son computables las matemáticas?" "¿se pueden diseñar un procedimiento mecánico que, partiendo de una proposición, tras un número finito de pasos, de la conclusión de si es cierta o falsa?" donde se centraran los esfuerzos de Alan Turing. Es el llamado Entscheidungsproblem, es decir, el problema de la decisión. La cuestión fundamental del Entscheidungsproblem es: ¿podemos encontrar ese algoritmo? En la época de Turing no existía una definición precisa de algoritmo. No obstante, fue un aliciente para el propio Turing. Inmediatamente, se puso a trabajar y en 1937 se publicó un artículo transcendental para las ciencias de la computación: "On Computable Numbers, with an application to the Entscheidungsproblem." En el artículo, Turing introdujó varios conceptos: números computables, máquina computadora y máquina universal. Prueba con todo ello que el problema de decisión es insoluble. Turing "reformuló los resultados de Kurt Gödel de 1931, reemplazando el lenguaje formal basado en la aritmética de Gödel por el concepto de máquina de Turing." ¿Cómo funcionaba la máquina de Turing? "Este instrumento abstracto funciona moviéndose de un estado a otro, siguiendo un número finito de reglas concretas. Puede escribir un símbolo en la cinta o borrarla. Así, una máquina de Turing sería capaz de realizar cualquier computación matemática si esta se representa como un algoritmo." De esta manera, Turing pudo demostrar que no hay solución al Entscheidungsproblem. Concluyó a su vez que el problema de la parada es indecidible, es decir, que no es posible decidir algorítmicamente si una máquina de Turing se detendrá o no. Por otro lado, Turing describe conceptualmente qué es una máquina universal de Turing como la de un ordenador "donde la cinta desempeñaba el papel del programa en los ordenadores modernos." Y definió qué era un número computable "como un número real cuya expresión decimal podía ser producida por una máquina de Turing." También describió un número que no es computable. Dejó claro que la mayoría de los números reales no son computables.

¿Qué era realmente una máquina de Turing? Una máquina de Turing es un dispositivo abstracto, no físico. Está constituida por una serie de elementos: una cinta infinita, dividida en casillas, un dispositivo móbil, que cuenta a su vez con un cabezal que puede leer o borrar el símbolo que está impreso en la cinta. Existe además un registro capaz de almacenar un estado determinado, que viene definido a su vez por un símbolo. Los símbolos que definen el estado del dispositivo no tienen por qué coincidir con los símbolos que se pueden leer o escribir en la cinta. ¿Cómo funciona? La máquina de Turing funciona de forma mecánica y secuencial: "Primero lee el símbolo que hay en la casilla que tiene debajo. Después toma el símbolo del estado en que se encuentra. Con estos dos datos accede a una tabla, en la cual, siguiendo las instrucciones, lee el símbolo que debe escribir en la cinta, el nuevo estado al que debe pasar y si debe desplazarse a la casilla izquierda o derecha." La ejecución de una máquina de Turing seguiría indefinidamente, al menos que se detenga. Esto supondría que llega a una estado en el que se detiene, permitiendo examinar la cinta para buscar el resultado. Una máquina de Turing puede utilizarse para todo tipo de operaciones matemáticas. Es posible programarla para que simule el comportamiento de un ordenador. Cualquier máquina de Turing puede ser codificada en cualquier computador "por pequeño que sea, sería posible emular en nuestro procesador una máquina de Turing que simule un superordenador." Ésta es la idea de la máquina universal de Turing, es decir, una máquina capaz de imitar el comportamiento de cualquier otra máquina con independencia del algoritmo para el que haya sido diseñada.

máquina universal de Turing