07/04/2008

Unidad I Introducción a los paradigmas de programación MAQUINAS DE TURING

Prof. Dahianna Vega L.
dahianna@gmail.com

Marzo 2007
1

En 1931, el matemático checo Kurt Godel descubrió que había teoremas matemáticos que eran verdaderos aún cuando no se pudiesen probar. Ante esto, Alan Turing se puso a investigar aquellos que sí podían ser probados. Quería intentar demostrar la vieja idea de que las matemáticas no son un arte misterioso, sino una ciencia exacta regida por reglas lógicas. Para hacerlo, ideó una máquina imaginaria capaz de realizar de manera totalmente mecánica los procesos que normalmente llevaría a cabo un matemático. Había una máquina para cada proceso; así, había una máquina que sumaba, otra que multiplicaba, etc. Estas máquinas acabarían por recibir el nombre de "Máquinas de Turing". Básicamente, lo que quería era hacer una lista de los problemas que una máquina sería capaz de resolver siguiendo reglas lógicas. Si esta lista abarcaba todos los problemas matemáticos, entonces su tesis quedaría demostrada, y con ella la teoría de la computabilidad. Tras estudiar con detenimiento el funcionamiento de sus máquinas, concluyó que era posible diseñar un artilugio único capaz de cumplir las funciones de cualquier otra máquina de Turing. A ésta se le llamó la "Máquina Universal de Turing".

2

1

Se puede mover a la izquierda o derecha. 4 2 . Esta compuesta de: ◦ Cinta: con un limite a la izquierda e infinita a la derecha. creado por Alan Turing para definir lo que es matemáticamente un algoritmo. recorrer la secuencia en ambos sentidos y cambiar de estado entre un conjunto finito de estados posibles. 3 Entre las acciones esta la posibilidad de escribir nuevos datos en la secuencia. La máquina de Turing es un modelo matemático abstracto que formaliza el concepto de algoritmo. En cada instante la máquina puede leer un solo dato de la secuencia (generalmente un carácter) y realiza ciertas operaciones en base a una tabla que tiene en cuenta su estado actual (interno) y el ultimo dato leído.07/04/2008 Es un dispositivo imaginario. ◦ Cabezal: puede escribir/leer un símbolo a la vez. principalmente utilizado para reconocer lenguajes. Se divide en celdas. Es un autómata que se mueve sobre una secuencia lineal de datos insertos en una cinta.

El símbolo a escribir es alguno del alfabeto de la máquina. Estas instrucciones representan en cierta forma el "programa" de la máquina. Corresponde al conjunto de símbolos que pueden estar en la cinta. instrucciones de lo que hará el autómata. 5 Maquina de Turing tiene una tabla de acción que contiene las acción. en algunos modelos el desplazamiento puede ser nulo (detener H). ◦ Signo Blanco: se representa por la letra B corresponde al blanco de la cinta.07/04/2008 ◦ Conjunto de símbolos: representado por la letra griega Γ (gama). ◦ Conjunto de estados: se representa por la letra Q y corresponde al conjunto de posibles estados. 6 3 . y depende del carácter leído y del estado actual. Las ejecución de cada instrucción de la tabla de acción incluye cuatro pasos: Leer un carácter en la posición actual. Si la tabla de acción no contiene ninguna correspondencia con el estado actual y el símbolo leído. ◦ Estado final: se representa por F. entonces la máquina detiene su funcionamiento. Corresponde al conjunto de símbolos de entrada que pueden estar en la cinta. Desplazar el cabezal una celda a derecha o izquierda (R/L). Escribir un nuevo símbolo en esta posición (puede ser el mismo que había). Decidir cual será el nuevo estado en función del carácter que se acaba de leer y del estado actual. ◦ Conjunto de símbolos de entrada: representado por la letra griega Σ (sigma). ◦ Estado inicial: se representa por qo.

B y C. Supongamos que definimos la siguiente tabla: Que en forma simplificada es: 8 4 .07/04/2008 En los modelos didácticos computarizados la tabla suele definirse mediante una matriz de cinco columnas que contiene: Estado/Carácter-leído/Carácter-a-escribir/Movimiento/Nuevoestado 7 Sea la máquina de Turing capaz de leer o escribir los símbolos 0 y 1 en la cinta y que puede tener los estados A.

y cambiar el cero de separación por un uno. para representar el tres. 10 5 . Vamos a representar cada número por una cadena con tantos unos como indique dicho número. cinco unos. De este modo tendríamos una cadena formada por tantos unos como indica la suma de los dos números originales. Suma: Si tenemos dos números en una cinta. separados uno de otro por un cero. escribiríamos tres unos seguidos. para un cinco. la forma más fácil de sumarlos sería convertir uno de los unos de los extremos en cero. así.07/04/2008 Coloquemos cabezal sobre la cinta 9 Suma de dos números: Una de las tareas más simples que puede llevar a cabo una máquina de Turing Para ello debemos definir primero una convención para representar dichos números en la cinta.

el número ocho. 11 6 .07/04/2008 Ejemplo: Sumar tres y cinco: Cinta inicial: 0000111011111000 Ponemos un cero en el lugar del uno de la izquierda: 0000011011111000 Ponemos un uno en el lugar del cero de separación: 0000011111111000 El resultado: ocho unos.