PRACTICA 10: Máquinas de Turing

Documentos relacionados
Definiciones previas

PRACTICA 5: Autómatas Finitos Deterministas

MÁQUINAS DE TURING CIENCIAS DE LA COMPUTACION I 2009

Máquinas de Turing, recordatorio y problemas

Máquinas de Turing Definición y descripción

MÁQUINAS DE TURING Y LENGUAJES ESTRUCTURADOS POR FRASES

Departamento de Tecnologías de la Información. Tema 4. Máquinas de Turing. Ciencias de la Computación e Inteligencia Artificial

7. Máquinas de Turing.

TIPOS DE GRAMATICAS JERARQUIAS DE CHOMSKY

Máquinas de Turing. Definición 2

Unidad 4. Autómatas de Pila

Teoría de Autómatas y Compiladores [ICI-445] Capítulo 2: Autómatas Finitos

Computabilidad y Lenguajes Formales: Teoría de la Computabilidad: Máquinas de Turing

Ciencias de la Computación I

Unidad 4. Autómatas de Pila

Tema 6: Máquina de Turing

7 Máquina de Turing. 7.1 Introducción. 7.2 El modelo de la Máquina de Turing

Ciencias de la Computación I

Máquinas de Turing. Complexity D.Moshkovitz

Temas. Objetivo. Que el estudiante logre: 1) Identificar conceptos constructivos de la Teoría de la Computabilidad. 2) Definir autómatas de pila.

Máquinas de Turing. 18 de junio de 2015

ALGORITMOS DIGITALES II. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006

Autómata de Pila (AP, PDA) Sesión 18

Equivalencia Entre PDA y CFL

Traductores Push Down

Autómata de Pila (AP, PDA) Tema 18

Clases 18 y 19:Máquina de Turing. M. en C. Edgardo Adrián Franco Martínez

5 Autómatas de pila 5.1 Descripción informal. 5.2 Definiciones

1. Define que es un Autómatas finitos determinanticos y cuáles son sus elementos constitutivos (explique cada uno de ellos).

Introducción. Máquinas de Turing. Turing restringidas. Turing y Computadoras INAOE (INAOE) 1 / 49

Departamento de Tecnologías de la Información. Tema 5. Decidibilidad. Ciencias de la Computación e Inteligencia Artificial

El Autómata con Pila

Jerarquía de Chomsky. 1. Clasificación de gramáticas. 2. Clasificación de lenguajes. 3. Gramáticas regulares. 5. Gramáticas dependientes del contexto

Autómatas Deterministas. Ivan Olmos Pineda

Máquinas de Turing IIC3242. IIC3242 Máquinas de Turing 1 / 45

Curso Básico de Computación

Máquinas de Turing. Gálvez Martínez Ernesto Sánchez Sandoval David Isaac Villegas Rosales Erik Salazar Santiago Juan Carlos

Tema: Autómata de Pila

Teoría de Autómatas y Lenguajes Formales.

Autómatas Finitos Deterministicos (DFA) Introducción a la Complejidad Computacional FFHA, Universidad Nacional de San Juan

Máquinas de Turing IIC3242. IIC3242 Máquinas de Turing 1 / 42

MODELOS DE COMPUTACIÓN CRISTIAN ALFREDO MUÑOZ ALVAREZ JUAN DAVID LONDOÑO CASTRO JUAN PABLO CHACON PEÑA EDUARDO GONZALES PULGARIN

Teoría de autómatas. Un enfoque práctico. Recortables. Thelma Cantú María Gpe. Mendoza

Problemas de Decisión

Curso Básico de Computación

Autómatas Finitos Deterministicos (DFA)

Autómatas Finitos Deterministicos (DFA)

1) Comprender la importancia que tiene la Máquina de Turing para la Ciencia de la Computación.

Capítulo 9. Introducción a los lenguajes formales. Continuar

Teoría de Autómatas y Lenguajes Formales.

Temas finales de Teoría de Autómatas y Lenguajes Formales II Curso

Teoría de la Computabilidad

Introducción a la Teoría de Autómatas, Lenguajes y Computación

Modelos Avanzados de Computación

OCW-V.Muto Sistemas de numeración Cap. III CAPITULO III. SISTEMAS DE NUMERACION 1. REPRESENTACION DE LA INFORMACION

Alfabetos y cadenas (1) Alfabetos y cadenas (2) Lenguajes. Propiedades de la concatenación:

Maquina de Turing. 5. Fundamentos de algoritmos. Turing TURING TURING 10/08/2010. MI Elizabeth Fonseca Chávez

Autómatas de Pila. Descripciones instantáneas o IDs. El Lenguaje de PDA. Equivalencia entre PDAs y CFGs INAOE (INAOE) 1 / 50

300CIG007 Computabilidad y Lenguajes Formales: Autómatas Finitos

Autómatas de Pila y Lenguajes Incontextuales

Modelos de Informática Teórica Capítulo 2 - Clases de Complejidad

Máquinas de estado finito y expresiones regulares

Universidad de Valladolid

1.1 Máquinas secuenciales Modelo de Moore y de Mealy Lenguaje de una máquina secuencial Equivalencia de modelos

Ciencias de la Computación I

2.1. Autómatas finitos deterministas (AFD) Los autómatas finitos son máquinas abstractas que procesan cadenas, las cuales son aceptadas o rechazadas:

Teoría de la Computación y Lenguajes Formales

Tema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I

Modelos de Computación. Guía Modelos de Computación. Tema VI: Maquinas De Estado Finito Con Salida

Procesadores de Lenguaje

Ciencias de la Computación I

Conjuntos Los conjuntos se emplean en muchas áreas de las matemáticas, de modo que es importante una comprensión de los conjuntos y de su notación.

7. ( ) Describe una máquina de Turing que acepte el siguiente lenguaje: L = {a n b n n>0}. L = {a n b n c n n>0}. L = {xcx x {a, b} + }.

Máquinas de Turing, programas y tesis de Turing-Church

Introducción a la indecidibilidad

ANÁLISIS LÉXICO AUTÓMATAS FINITOS

Modelos De Computación. Guía Modelos de Computación. Tema I: Lenguajes y Gramáticas

Computabilidad y Lenguajes Formales: Autómatas de Pila

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

la máquina de Turing (MT) como sustituto formal del concepto de algoritmo 0 0 r 1

Examen. Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. Segundo Semestre, 2003.

DATOS DE IDENTIFICACIÓN DEL CURSO

El Autómata con Pila: Transiciones

Lenguajes y Compiladores Análisis Léxico

7.1 Máquina de Turing 7.5 Modificaciones de la máquina de Turing. Cinta infinita de doble vía

Tema 1: Introducción. Teoría de autómatas y lenguajes formales I

1. Probar pertenencia a Lenguajes libres de contexto

LENGUAJES Y GRAMÁTICAS

Análisis y Diseño de Algoritmos

La máquina de Turing

INGENIERIA INVERSA APLICADA A LA ANATOMÍA ANIMAL M O O C

09 Análisis léxico V Compiladores - Profr. Edgardo Adrián Franco Martínez

Lenguajes y Gramáticas

Igualdad de cadenas. Las nociones de sufijo y prefijo de cadenas sobre un alfabeto son análogas a las que se usan habitualmente.

IMPLEMENTACIÓN FÍSICA DE UNA MÁQUINA DE TURING USANDO LEGOS. Instituto Tecnológico de León.

Clase 17: Autómatas de pila

Visual Automata Simulator

Máquinas de Estados Finitos

Transcripción:

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA Departamento de Estadística, I.O. y Computación Teoría de Autómatas y Lenguajes Formales PRACTICA 10: Máquinas de Turing 10.1. Introducción La clase de autómatas que hoy conocemos como máquinas de Turing fue propuesta en 1936 por el matemático Alan Turing. La pretensión de Turing era el estudio de los procesos algorítmicos usando un modelo computacional. Podemos considerar las máquinas de Turing como una generalización de los autómatas que hemos estudiado en temas anteriores. Las máquinas de Turing (TM, por Turing Machine) son similares a los autómatas finitos en tanto en cuanto poseen un mecanismo de control y un flujo de entrada que se representa como una cinta (ver Figura 10.1). La diferencia fundamental es que una TM puede mover su cabeza de lectura hacia delante y hacia atrás sobre la cinta de entrada, y puede tanto leer como escribir en dicha cinta. Figura 10.1: Conceptualización de una Máquina de Turing Una TM contiene un mecanismo de control que en cualquier momento puede encontrarse en uno de entre un número finito de estados. Uno de estos estados se denomina estado inicial y representa el estado en que la máquina comienza sus cálculos. Otro estado distinguido es el estado de parada. Una vez que la TM alcanza ese estado, finalizan todos los cálculos. El estado inicial y el de parada han de ser distintos, y por tanto, toda TM ha de tener al menos dos estados. La TM dispone de una cabeza que puede leer y escribir símbolos en la cinta de la máquina. Esta cinta se supone que se extiende indefinidamente hacia derecha e izquier- 1

da. Una TM utiliza su cinta como dispositivo de almacenamiento auxiliar y puede no sólo insertar o extraer símbolos sino también rastrear los datos de la cinta y modificar las celdas que desee sin alterar el resto. Es conveniente que la TM utilice marcas especiales para distinguir partes de la cinta. Con este fin, la TM utiliza símbolos que no aparecen en los datos de entrada, es decir, se distingue entre el conjunto finito de símbolos llamado el alfabeto de la máquina, en el que deben estar codificados los datos de entrada iniciales y otro conjunto también finito de símbolos de cinta posiblemente mayor que el anterior llamado símbolos de cinta, que son los símbolos que la máquina puede leer y escribir. De este modo los símbolos de cinta de una TM pueden incluir marcas especiales que no sean símbolos del alfabeto de la máquina. El espacio en blanco es uno de los símbolos de esta clase: se supone que está en cualquier celda de la cinta que no esté ocupada. Por ejemplo, si una TM leyera más a la derecha de los símbolos de entrada de su cinta, encontraría y leería las celdas en blanco que allí encontraría. También puede ser necesario que una TM borre una celda de la cinta, escribiendo en ella un espacio en blanco. Por estos motivos se considera que el espacio en blanco forma parte de los símbolos de cinta, pero no del alfabeto de la máquina. Para que el símbolo de espacio en blanco no nos ocasione problemas en las representaciones adoptaremos el símbolo $ para representar el espacio en blanco. Este convenio elimina la ambigüedad entre las cadenas a b y a b porque representaremos la primera como a$b y la segunda como a$$b. En cada paso de un cómputo una TM lee un símbolo de la cinta de entrada, lo reemplaza por un nuevo símbolo (que puede ser el que econtró originalmente) y a continuación cambia su estado (el nuevo estado puede ser el mismo en que se encontraba antes de la operación) y realiza un movimiento de la cabeza de lectura/escritura hacia la izquierda o a la derecha. La acción que en un determinado momento del cómputo realizará la TM dependerá del símbolo (símbolo actual) que esté visible en ese momento en la celda (celda actual) en que está posicionada la cabeza de lectura/escritura, y del estado actual del mecanismo de control de la máquina. Figura 10.2: Un estado de una TM Una TM se puede definir formalmente como una 7-upla T M (Q, Σ, Γ, s, $, F, δ) 2

donde el significado de cada uno de los elementos es: Q es el conjunto finito de estados de la máquina Σ es el alfabeto de entrada Γ es el alfabeto de la cinta s Q es el estado inicial $ Γ es el símbolo espacio en blanco. $ / Σ F Q es el conjunto de estados finales o de aceptación δ Es la función (parcial) de transición δ : Q Γ Q Γ {L, R} Figura 10.3: El nuevo estado después de la transición δ(s3, x) = (s2, y, L) Generalmente se permite que Σ Γ {$}, es decir que el alfabeto de entrada sea un subconjunto del de pila, pero el símbolo blanco no puede formar parte del alfabeto de entrada. La función de transición transforma pares (q, σ) formados por el estado actual, q y el símbolo σ en que está posicionada la cabeza de lectura/escritura en triples (p, t, X) donde p es el estado siguiente, t Γ es el símbolo que se escribe en la cinta y X {L, R} es un movimiento de la cabeza de lectura escritura que puede ser a la izquierda (L) o a la derecha (R). Por ejemplo, una transición como δ(s3, x) = (s2, y, L) provoca que la TM pase de una configuración como la que se muestra en la Figura 10.2 a la que presenta la Figura 10.3. La función de transición, δ de una TM es una función parcial, lo cual quiere decir que no tiene porqué estar definida para todos los pares (q, σ) del conjunto de partida. Nos interesará disponer de una notación concisa que represente la configuración de una TM, incluyendo el contenido de las celdas de la cinta, la posición de la cabeza de lectura/escritura y el estado de la máquina. Para representar las configuraciones utilizaremos pares de la forma (q i, w 1 σw 2 ) donde q i es el estado en que se encuentra la máquina, σ es el símbolo presente en la celda en que está posicionada la cabeza de lectura 3

escritura, y w 1 y w 2 son respectivamente las cadenas de símbolos que anteceden y siguen a σ sobre la cinta. A estas configuraciones se les llama descripciones instantáneas (DI). El paso de una DI a otra lo denotaremos con el símbolo, y los símbolos y + tienen el significado habitual de cero o más y uno o más pasos respectivamente. 10.2. Ejemplo 1 Consideremos como primer ejemplo la TM definida por: Q = {q 1, q 2 } Σ = {a, b} Γ = {a, b, $} s = q 1 F = {q 2 } y con la siguiente función de transición δ: δ(q 1, a) = (q 1, a, R) δ(q 1, b) = (q 1, a, R) δ(q 1, $) = (q 2, $, L) La máquina comienza a funcionar estando en el estado q1. Supongamos que la cabeza de lectura/escritura se encuentra situada sobre un símbolo a. En ese caso, la transición que se aplicaría es: δ(q1, a) = (q1, a, R); es decir, la máquina sobreescribirá el símbolo que encuentra sobre la cinta, se moverá una posición a la derecha y permanecerá en el mismo estado. Esto es lo que ocurre tanto con la primera a como con todas las sucesivas que la máquina encuentre sobre la cinta. Si eventualmente se encuentra una b, el comportamiento es análogo, con la diferencia que la máquina sobreescribe la b con una a. Si la máquina encuentra un blanco, se moverá hacia la izquierda y alcanzará el estado final q2. Dado que no hay transiciones desde el estado final, la máquina parará una vez llega a ese estado. Veamos un ejemplo de cómputo de esta máquina para la frase de entrada abba: (q 1, abba) (q 1, abba) (q 1, aaba) (q 1, aaaa) (q 1, aaaa$) (q 2, aaaa) Como vemos, esta TM transforma su entrada que es una cadena de aes y bes de un determinado tamaño en otra cadena del mismo tamaño formada sólo por símbolos a. Cuando δ(q, σ) no está definida y la configuración de la TM es (q, w 1 σw 2 ) es imposible que pase a otra configuración. En este caso se dice que la TM está parada. En este caso puede ocurrir que q sea un estado final (q F ) o que no. En cualquier caso interesa dotar de significado a la parada en un estado final. Para simplificar, supondremos que no se definirá ninguna transición para los estados de F, por lo que la TM siempre parará al alcanzar un estado final. 4

Se llama computación a la secuencia de movimientos que conducen a una configuración de parada. 10.3. Ejemplo 2 Consideremos ahora la TM definida por: Q = {q 1, q 2 } Σ = {a, b} Γ = {a, b, $} s = q 1 F = y δ definida como : δ(q1, a) = (q2, a, R) δ(q1, b) = (q2, b, R) δ(q1, $) = (q2, $, R) δ(q2, a) = (q1, a, L) δ(q2, b) = (q1, b, L) δ(q2, $) = (q1, $, L) Si la máquina comienza a funcionar con la cabeza situada en el primer símbolo (la a) de una cadena de la forma abw realizará la siguiente secuencia de movimientos: (q 1, abw) (q 1, abw) (q 1, abw) (q 1, abw)... y se moverá por tiempo indefinido desplazando la cabeza de lectura/escritura de izquierda a derecha alternativamente. Este es un ejemplo de TM que nunca parará. Podríamos decir que la máquina entra en un bucle infinito. Esta situación es fundamental en la teoría de las TM y la representaremos (q 1, w 1 σw 2 ) indicando que la máquina, partiendo de la configuración inicial (q 1, w 1 σw 2 ) nunca parará. 10.4. Ejemplo 3 Consideremos a continuación una TM que acepte el lenguaje L = {0 n 1 n n 1}. Inicialmente la máquina contendrá una secuencia de símbolos 0 n 1 n seguida por un número infinito de $. Sucesivamente, la máquina reemplazará el 0 más a la izquierda en la cinta por un símbolo X, se moverá hacia la derecha hasta el 1 situado más a la izquierda en 5

la cinta reemplazándolo por un símbolo Y, se moverá hacia la izquierda hasta encontrar la X situada más a la derecha, a continuación se mueve una celda a la derecha para alcanzar el 0 situado más a la izquierda y repetirá el ciclo. Si la máquina encuentra un $ cuando busca un 1, la máquina parará sin aceptar la cadena. Si después de cambiar un 1 por una Y la máquina no encuentra más ceros, comprueba que no hay más unos, aceptando la cadena si no los hay. El alfabeto de entrada será Σ = {0, 1}, el de cinta Γ = {0, 1, X, Y, $} y el conjunto de estados de la máquina será Q = {q 0, q 1, q 2, q 3, q 4 }. El estado q 0 es el inicial y también se transita a él antes de reemplazar un cero situado más a la izquierda por una X. El estado q 1 se utiliza para buscar hacia la derecha ignorando ceros y símbolos Y, hasta encontrar el 1 situado más a la izquierda. Si la TM halla un 1, lo cambia por Y pasando al estado q 2. El estado q 2 se usa para buscar un símbolo X hacia la izquierda. Cuando lo encuentra, la máquina pasa al estado q 0 y se mueve a la derecha para colocarse sobre el 0 situado más a la izquierda. Cuando la máquina busca hacia la derecha en el estado q 1 rechaza la entrada si encuentra un $ o una X antes que un 1: en este caso o bien hay demasiados ceros o bien la entrada no es de la forma 0*1*. Símbolo Estado 0 1 X Y $ q0 (q1, X, R) - - (q3, Y, R) - q1 (q1, 0, R) (q2, Y, L) - (q1, Y, R) - Cuadro 10.1: La función de transición de la máquina que reconoce 0 n 1 n El estado q 0 juega también otro papel: si después de que en el estado q 2 se encuentre la X situada más a la derecha hay una Y situada inmediatamente a la derecha, entonces es que los ceros se han acabado. En este caso (estando en q 0 y viendo una Y ) se transita al estado q 3 para leer todas las Y y comprobar que no queda ningún 1. Si los símbolos Y están seguidos por un $ se pasa al estado de aceptación q 4. En otro caso, la cadena es rechazada. La Figura 10.1 muestra la función de transición para esta máquina. Veamos un ejemplo de computación con esta máquina, para la cadena de entrada 0011: (q 0, 0011$) (q 1, X011$) (q 1, X011$) (q 2, X0Y 1$) (q 2, X0Y 1$) (q 0, X0Y 1$) (q 1, XXY 1$) (q 1, XXY 1$) (q 2, XXY Y $) (q 2, XXY Y $) (q 0, XXY Y $) (q 3, XXY Y $) (q 3, XXY Y $) (q 4, XXY Y $$) 10.5. Simulador de Máquina de Turing El objetivo de la práctica es diseñar en C++ un programa simulador de máquinas de Turing. El programa deberá ser capaz de leer la tabla de transición de una máquina, así como el contenido inicial de la cinta de entrada, y simular el comportamiento de cada una de las acciones que efectúe dicha máquina. 6

La tabla de transición de la máquina a simular y su cinta de entrada deben estar en dos ficheros diferentes, y sus nombres se capturarán en la línea de comandos, mostrando un texto explicativo de cómo se han de introducir los parámetros en caso de que el usuario no los introduzca de forma correcta. Los ficheros de transición para las diferentes máquinas tendrán la extensión.tm, (Turing Machine) mientras que los ficheros de cintas de entrada tendrán extesión.tmt (Turing Machine Tape). El simulador ignorará de los ficheros de definición de máquinas (TM) todas las líneas que comiencen con los caracteres //. Esto permitirá colocar comentarios a dichos ficheros, explicando la máquina de Turing que representan. Los símbolos del alfabeto podrán ser cualquier caracter alfanumérico. Los estados son enteros comenzando con estado inicial igual a cero. 10.5.1. Ficheros de especificación de máquinas de Turing El fichero que contiene a la tabla de transición de la máquina debe tener la extensión.tm y seguir el siguiente formato: Posiblemente una serie de líneas que comienzan con // y que serán ignoradas por el simulador a la hora de leer la máquina. Después de estas líneas (que son opcionales) vendría la siguiente información: Línea 1: Entero indicando el número de estados Línea 2: Entero indicando el primer estado final Líneas sucesivas: una tupla en cada línea Los estados con número mayor o igual que el estado final se consideran también estados finales. El formato de las tuplas es el siguiente: estado$entrada$escribe$movimiento$siguiente estado $: Espacio en blanco ( ). estado: Entero que representa el estado entrada: Símbolo del alfabeto de entrada escribe: Elemento del alfabeto de cinta a escribir en la cinta para dicho estado y entrada. movimiento: Movimiento a realizar por la cabeza de lectura: L - Izquierda R - Derecha S - Parar siguiente estado: Siguiente estado al que transita la máquina. 7

En la sección de descargas de las páginas de la asignatura pueden obtenerse ejemplos de ficheros de definición de máquinas de Turing, así como algunos ficheros con entradas para dichas máquinas. 8