Curso Básico de Computación

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

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

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

Máquinas de Turing. 18 de junio de 2015

Máquinas de Turing, recordatorio y problemas

TIPOS DE GRAMATICAS JERARQUIAS DE CHOMSKY

Tema 6: Máquina de Turing

Unidad 4. Autómatas de Pila

MÁQUINAS DE TURING Y LENGUAJES ESTRUCTURADOS POR FRASES

Ciencias de la Computación I

MÁQUINAS DE TURING CIENCIAS DE LA COMPUTACION I 2009

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

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

Unidad 4. Autómatas de Pila

Curso Básico de Computación

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

Máquinas de Turing Definición y descripció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

3 Propiedades de los conjuntos regulares 3.1 Lema de Bombeo para conjuntos regulares

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

Autómatas de Estados Finitos

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

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

Curso Básico de Computación Preliminares

MODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular.

Máquinas de estado finito y expresiones regulares

Teoría de la Computación Lenguajes Regulares (LR) - Propiedades

5. Propiedades de los Lenguajes Recursivamente Enumerables y de los Lenguajes Recursivos.

Autómatas Finitos Deterministicos (DFA)

Autómatas Finitos Deterministicos (DFA)

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

7. Máquinas de Turing.

Lenguaje de programación S (Davis/Sigal/Weyuker) Lógica y Computabilidad. Ejemplo 1. Ejemplo 2

13.3. MT para reconocer lenguajes

La máquina de Turing

Entscheidungsproblem I TEORÍA DE LA COMPUTACIÓN MÁQUINAS DE TURING Y DECIDIBILIDAD. Máquinas de Turing (TM) Procedimiento efectivo

Teoría Matemática de la Computación Primer Problemario Prof. Miguel A. Pizaña 22 de Febrero de 2007

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

Propiedades de Lenguajes Regulares

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

2 Autómatas finitos y gramáticas regulares.

Universidad de Valladolid

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

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

Introducción a la indecidibilidad

La Jerarquía Polinomial

Autómatas Finitos INAOE. Introducción a. Autómatas. Definición formal de un. Finito Determinístico. Finito No- Finitos y Lenguajes Formales

Computabilidad y Lenguajes Formales: Autómatas de Pila

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002

Expresiones regulares, gramáticas regulares

Clases de complejidad computacional: P y NP

1. Cadenas EJERCICIO 1

Computabilidad y Lenguajes Formales: Autómatas Finitos

Computabilidad y lenguajes formales: Sesión 19. Gramáticas Incontextuales (Context Free Grammars)

Expresiones regulares, gramáticas regulares Unidad 3

Minimización de Aútomatas Finitos

ANÁLISIS LÉXICO AUTÓMATAS FINITOS

Otras propiedades de los lenguajes regulares

Procesadores de Lenguaje

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

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

Complejidad computacional (Análisis de Algoritmos)

Autómatas de Pila y Lenguajes Incontextuales

8.1 Indecibilidad 8.5 Indecibilidad en el problema de la correspondencia de Post

PROGRAMACIÓN II AÑO 2009 TALLER 3: TEORÍA DE LENGUAJES Y AUTÓMATAS

Ciencias de la Computación I

CAPITULO 2: LENGUAJES

PRACTICA 5: Autómatas Finitos Deterministas

Autómatas Deterministas. Ivan Olmos Pineda

Problemas Seleccionados Resueltos: Máquinas de Turing

Un árbol binario T se define como un conjunto finito de elementos, llamados nodos, de forma que:

Equivalencia Entre PDA y CFL

Teoría de Autómatas y Lenguajes Formales Equivalencia de Conjuntos Pruebas por Inducción

Introducción a la programación

Convertir un AFND a un AFD

Álgebra y estructuras finitas/discretas (Grupos A)

Una (muy) breve introducción a la teoría de la computación

Funciones de Variable Real

LENGUAJES Y GRAMÁTICAS

DEFINICIÓN FORMAL DE UN AFP

El Autómata con Pila: Transiciones

Conjuntos. Un conjunto es una colección de objetos. Si a es un objeto y R es un conjunto entonces por. a R. se entiende que a pertenece a R.

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

autómatas finitos y lenguajes regulares LENGUAJES FORMALES Y

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

300CIG007 Computabilidad y Lenguajes Formales: Autómatas Finitos

Transcripción:

Curso Básico de Computación 7 Máquina de Turing Feliú Sagols Troncoso Matemáticas CINVESTAV-IPN <fsagols@math.cinvestav.mx> 2010 Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 1 / 43

7 Máquina de Turing Es este capítulo introducimos la Máquina de Turing que es, un modelo matemático simple de una computadora. 7.1 Introducción Hasta ahora no se ha podido demostrar que el modelo de la maquina de Turing es equivalente a nuestra noción intuitiva de una computadora, pero existen argumentos complejos que sugieren esta equivalencia, a esto se le conoce como la hipótesis de Church. La maquina de Turing tiene un poder computacional más grande que cualquier computadora digital actual y no parece factible que pueda ser superada algún día. Al igual que los AFD y los AP, la máquina de Turing es un dispositivo teórico que se utiliza principalmente en estudios de computabilidad y de análisis de complejidad computacional. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 2 / 43

7.2 El modelo de la Máquina de Turing Un modelo formal de cómputo efectivo debe tener ciertas propiedades. Primero, cada procedimiento debe poder ser descrito de manera finita. Segundo, el procedimiento debe consistir de pasos separados, y cada uno de ellos debe poderse llevar a cabo de manera mecánica. Este modelo fue introducido por Alan Turing en 1936. Aquí presentaremos una variante. El modelo básico que se ilustra en la siguiente figura, a 1 a 2... a i... a n B B... Control Finito Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 3 / 43

tiene un control finito, una cinta que está dividida en celdas, y una cabeza de la cinta que explora una celda en la cinta a la vez. La cinta tiene una primer celda ubicada en la posición más a la izquierda de la cinta pero es infinita del lado derecho. Cada celda en la cinta puede contener exactamente un símbolo tomado de un alfabeto finito. Inicialmente, las n celdas más a la izquierda, para algún número finito n 0, contienen la entrada de la máquina, la cual es una cadena de símbolos que se escogen de un alfabeto llamado símbolos de entrada. Todas las celdas restantes (que forman un conjunto infinito) contienen el símbolo blanco, el cual es un símbolo especial que no forma parte del alfabeto de entrada. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 4 / 43

Un movimiento en la Máquina de Turing depende del símbolo explorado por la cabeza de la cinta y del estado de control finito. De manera sintética se hace lo siguiente: 1 dependiendo del símbolo explorado por la cabeza lectora/escritora y del estado en el control finito se cambia de estado, 2 se imprime un símbolo en la celda explorada, reemplazando el símbolo que ésta contenga y 3 se mueve la cabeza de lectura una celda hacia la izquierda o derecha. Note que la diferencia entre la máquina de Turing y un autómata finito de doble vía es que la máquina de Turing tiene la habilidad de cambiar los símbolos en la cinta de entrada. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 5 / 43

Formalmente, una máquina de Turing (MT) se denota por: donde M = (Q, Σ, Γ,δ, q 0, B, F), Q es un conjunto finito de estados, Γ es un conjunto finito de símbolos, llamado alfabeto de la cinta, B es un símbolo en Γ, y el símbolo blanco, Σ es un subconjunto de Γ que no incluye a B, es el alfabeto de símbolos de entrada, δ es la función que determina los movimientos de la máquina, es una transformación de Q Γ a Q Γ {L, R} (δ puede estar indefinida para algunos argumentos), q 0 Q es el estado inicial, F Q es el conjunto de estados finales. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 6 / 43

Una descripción instantánea (DI) de una máquina de Turing M es una expresiónα 1 qα 2. Aquí q Q, es el estado actual de M;α 1 α 2 es una cadena en Γ y es el contenido de la cinta hasta el símbolo no blanco más a la derecha o el símbolo de la izquierda de la cabeza, cualquiera que este más a la derecha. (Observe que el blanco B puede ocurrir enα 1 α 2 ). Asumimos que Q y Γ son disjuntos. Finalmente, asumimos que la cabeza de la cinta explora el símbolo más a la izquierda deα 2, o si α 2 =ǫ, la cabeza explora un blanco. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 7 / 43

Se define un movimiento en M como: sea X 1 X 2 X i 1 qx i X n una DI. Se supone queδ(q, X i ) = (p, Y,L), si i 1 = n, entonces se considera a X i como B. Si i = 1 entonces no es posible realizar el movimiento a la izquierda así que no hay DI siguiente porque la cabeza de la cinta no tiene permitido desprenderse del fin izquierdo de la cinta. Si i> 1, entonces escribimos 1) X 1 X 2 X i 1 qx i X n M X 1 X 2 X i 2 px i 1 YX i+1 X n Sin embargo, si cualquier sufijo de X i 1 YX i+1 X n es completamente blanco entonces el sufijo se borra en (1). Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 8 / 43

Alternativamente siδ(q, X i ) = (p, Y,R) entonces escribimos: 2) X 1 X 2 X i 1 qx i X i+1 X n M X 1 X 2 X i 1 YpX i+1 X n Note que en el caso de i 1 = n, la cadena X i X n es vacía, y el lado derecho de (2) es más largo que el lado izquierdo. Si dos DI están relacionadas por M, decimos que la segunda resulta de la primera por un movimiento. Si una DI resulta de otra por un número finito de movimientos, incluyendo cero movimientos, ellas están relacionadas por el símbolo * M. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 9 / 43

El lenguaje aceptado por M, denotado por L(M), es el conjunto de las palabras en Σ que causan que M entre a un estado final cuando se colocan al principio de la cinta de M, con M en el estado q 0, y la cabeza de la cinta de M en la celda más a la izquierda. Formalmente, el lenguaje aceptado por M = (Q, Σ, Γ,δ, q 0, B, F) es {w w Σ, q 0 w * Mα 1 pα 2 para algún p F, yα 1,α 2 Γ } Dada una MT que reconoce un lenguaje L, asumimos sin perder generalidad que la MT se para, es decir, no tiene más movimientos, cuando la entrada es aceptada. Sin embargo, para algunas palabras no aceptadas, es posible que la MT nunca pare. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 10 / 43

Ejemplo: El diseño de una MT que acepte el lenguaje L ={0 n 1 n n 1} es: inicialmente, la cinta de entrada de M contendrá 0 n 1 n seguido de un número infinito de blancos. Repetidamente, M reemplaza el 0 más a la izquierda por X, mueve hacia la derecha la cabeza de la cinta hasta encontrar el 1 que esté más a la izquierda, reemplazandolo por Y, luego se mueve a la izquierda para encontrar la X más a la derecha, entonces mueve la cabeza una celda hacia la derecha y si encuentra un 0 entonces repite el ciclo. Sin embargo, si cuando se busca un 1, M encuentra un blanco en su lugar, entonces M se para sin aceptar su entrada. Si, después de cambiar un 1 por una Y, M no encuentra más 0 s, entonces M examina que no haya más 1, si no los hay entonces acepta su entrada. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 11 / 43

Sea Q ={q 0, q 1, q 2, q 3, q 4 }, Σ ={0, 1}, Γ ={0, 1, X, Y,B}, y F ={q 4 }. Informalmente, cada estado representa una declaración o un grupo de declaraciones en un programa. Al estado q 0 se ingresa inicialmente y es el estado previo a cada reemplazo del 0 más a la izquierda por una X. El estado q 1 se usa para buscar a la derecha, saltando sobre los 0 s y las Y s, hasta encontrar el 1 más a la izquierda. Si M encuentra 1, lo cambia por Y, y entra al estado q 2. El estado q 2 busca a la izquierda una X y entra en el estado q 0 cuando lo encuentra, luego se mueve hacia la derecha hasta el 0 ubicado más a la izquierda. Conforme M busca hacia la derecha en el estado q 1, si B o X aparecen antes de encontrar un 1, entonces la entrada es rechazada; puede que haya demasiados 0 s o la entrada no esta en 0 1. El estado q 0 tiene otro papel. Si, después del estado q 2 se encuentra la X más a la derecha, existe una Y inmediatamente a su derecha, entonces los 0 s están agotados. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 12 / 43

Estado Y B q 0 (q 3, Y,R) q 1 (q 1, Y,R) q 2 (q 2, Y,L) q 3 (q 3, Y,R) (q 4, B, R) q 4 Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 13 / 43 Desde q 0, se explora Y, entra el estado q 3 para explorar sobre las Y s y examina que no haya 1 s restantes. Si las Y s están seguidas por B, se entra al estado q 4 y la aceptación ocurre; en otro caso, la cadena es rechazada. La funciónδ es: Estado 0 1 X q 0 (q 1, X, R) q 1 (q 1, 0, R) (q 2, Y,L) q 2 (q 2, 0, L) (q 0, X, R) q 3 q 4

La siguiente tabla muestra el cálculo de M para la entrada 0011. q 0 0011 Xq 1 011 X0q 1 11 Xq 2 0Y 1 q 2 X0Y 1 Xq 0 0Y 1 XXq 1 Y 1 XXYq 1 1 XXq 2 YY Xq 2 XYY XXq 0 YY XXYq 3 Y XXYYq 3 XXYYBq 4 Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 14 / 43

7.3 Lenguajes computables y funciones Un lenguaje que es aceptado por una máquina de Turing se dice recursivamente enumerable (r.e.). El término enumerable deriva del hecho de que precisamente estos lenguajes tienen cadenas que pueden ser enumeradas (listadas) por la máquina de Turing. La clase de los lenguajes r.e es muy amplia e incluye propiamente a los LLC. La clase de lenguajes r.e. incluye algunos lenguajes para los cuales no se puede determinar mecánicamente su pertenecia. Si L(M) es tal lenguaje, entonces cualquier máquina de Turing que reconozca a L(M) falla y se detiene con alguna entrada que no está en L(M). Si w L(M), M eventualmente se para con la entrada w. Sin embargo, mientras M se mantenga en ejecución, puede que en algún momento pare y acepte su entrada o pueda que se mantenga así por siempre. Es conveniente distinguir una subclase de los conjuntos r.e. llamada conjuntos recursivos, los cuales son los lenguajes aceptados por al menos una máquina de Turing que se para con todas las entradas. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 15 / 43

La máquina de Turing como un medio para evaluar funciones enteras La máquina de Turing puede verse como un medio para evaluar funciones de los enteros a los enteros. El método tradicional consiste en representar a los enteros en base 1; así el entero i 0 se representa por la cadena 0 i. Si una función tiene k argumentos, i 1, i 2,..., i k, entonces estos enteros se colocan inicialmente en la cinta separados por 1 s: 0 i 1 10 i 21 10 i k. Si la MT se para y la cinta contiene 0 m para algún m, entonces se dice que f (i 1, i 2,..., i k ) = m, donde f es la función de k argumentos calculados por esta máquina de Turing. Note que una máquina de Turing puede calcular una función de un argumento, una función diferente de dos argumentos, y así sucesivamente. También note que si la MT M calcula la función f con k argumentos, entonces f no necesariamente tiene un valor para todas las diferentes k-tuplas de enteros i 1, i 2,..., i k. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 16 / 43

Si f (i 1, i 2,..., i k ) está definida para todas las i 1, i 2,..., i k, entonces se dice que f es una función recursiva total. Una función f (i 1, i 2,..., i k ) calculada por la MT se llama función recursiva parcial. En este sentido, las funciones recursivas parciales son análogas a los lenguajes r.e., las funciones recursivas totales corresponden a los lenguajes recursivos. Todas las funciones aritméticas sobre enteros, como la multiplicación, n!, 2 2n son funciones recursivas totales. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 17 / 43

Ejemplo: 00 11 La sustracción propia 0 00 11 1 se define como m n para m n, y 0 para m<n. La MT M = ({q 0, q 1,..., q 6 },{0, 1},{0, 1, B},δ, q 0, B,{q 6 }) se define como: se inicia con 0 m 10 n en la cinta, se para con 0 m 00 11 0 00 11 n 1. M reemplaza repetidamente el primer 0 por blanco, entonces busca a la derecha un 1 seguido de un 0 y cambia el 0 por el 1. Luego, M se mueve hacia la izquierda hasta encontrar un blanco, se mueve hacia la derecha y entonces repite el ciclo. La repetición termina si i) Al buscar hacia la derecha un 0, M encuentra un blanco. Entonces, los n 0 s en 0 m 10 n han sido todos cambiados por 1 s, y n + 1 de los m 0 s fueron cambiados por B. M reemplaza los n + 1 1 s por un 0 y n B s, quedando m n 0 s de la cinta. ii) Comenzando el ciclo, M no encontró un 0 para cambiarlos por un blanco, porque los primeros m 0 s ya fueron cambiados. 00 11 00 11 01 Entonces n m, así m n = 0. M reemplaza el resto de todos los 1 s y 0 s por B. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 18 / 43

La funciónδse describe como: 1δ(q 0, 0) = (q 1, B, R) Comienza el ciclo. Reemplaza el primer 0 por el B. 2δ(q 1, 0) = (q 1, 0, R) δ(q 1, 1) = (q 2, 1, R) Busca en la derecha, búscando al primer 1. 3δ(q 2, 1) = (q 2, 1, R) δ(q 2, 0) = (q 3, 1, L) Busca en la derecha al primer 0 que aparezca después de un 1. Cambia ese 0 por 1. 4δ(q 3, 0) = (q 3, 0, L) δ(q 3, 1) = (q 3, 1, L) δ(q 3, B) = (q 0, B, R) Se mueve hacia la izquierda hasta encontrar el primer blanco. Entra al estado q 0 para repetir el ciclo. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 19 / 43

5δ(q 2, B) = (q 4, B, L) δ(q 4, 1) = (q 4, B, L) δ(q 4, 0) = (q 4, 0, L) δ(q 4, B) = (q 6, 0, R) Si en el estado q 2 aparece un símbolo B antes de un 0, se tiene la situación (i) que se describió antes. Entra al estado q 4 y se mueve hacia la izquierda, cambiando todos los 1 s por B s hasta encontrar a B. Esta B se cambia de regreso a 0, se entra al estado q 6, y M se detiene. 6δ(q 0, 1) = (q 5, B, R) δ(q 5, 0) = (q 5, B, R) δ(q 5, 1) = (q 5, B, R) δ(q 5, B) = (q 6, B, R) Si en el estado q 0 aparece un 1 en lugar de un 0, el primer bloque de 0 s ha sido consumido, como en la situación (ii) anterior. M entra al estado q 5 para borrar el resto de la cinta, entonces entra al estado q 6 y se para. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 20 / 43

Un cálculo simple de M con la entrada 0010 es: q 0 0010 Bq 1 010 B0q 1 10 B01q 2 0 B0q 3 11 Bq 3 011 q 3 B011 Bq 0 011 BBq 1 11 BB1q 2 1 BB11q 2 BB1q 4 1 BBq 4 1 Bq 4 B0q 6 Con la entrada 0100, M se comporta como: q 0 0100 Bq 1 100 B1q 2 00 Bq 3 110 q 3 B110 Bq 0 110 BBq 5 10 BBBq 5 0 BBBBq 5 BBBBBq 6 Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 21 / 43

7.4 Técnicas para la construcción de máquinas de Turing Con el objeto de describir construcciones complicadas de la máquina de Turing es importante contar con herramientas conceptuales de alto nivel. Almacenamiento en el control finito El control finito puede ser usado para almacenar una cantidad finita de información. Así, cada estado se escribe como un par de elementos, uno que ejerce el control y el otro almacena un símbolo. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 22 / 43

Ejemplo: Considere una máquina de Turing M que mira el primer símbolo de entrada, lo registra en su control finito, y verifica que el símbolo no aparezca en otra parte de la entrada. Note que M acepta un conjunto regular, pero M nos sirve para propósitos de demostración: M = (Q,{0, 1},{0, 1, B},δ, [q 0, B], B, F) donde Q es{q 0, q 1 } {0, 1, B}. Es decir, Q consiste de los pares [q 0, 0], [q 0, 1],[q 1, 0],[q 1, 1] y [q 1, B]. El conjunto F es{[q 1, B]}. La intención es que el primer componente de un estado de control esté en acción, mientras el segundo componente recuerde un símbolo. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 23 / 43

Se defineδ como 1 a)δ([q 0, B], 0) = ([q 1, 0], 0, R), b)δ([q 0, B], 1) = ([q 1, 1], 1, R), Inicialmente, q 0 es el componente de control del estado, y M se mueve hacia la derecha. Los primeros componentes de los estado de M se convierten en q 1, y el primer símbolo de entrada es almacenado en la segunda componente. 2 a)δ([q 1, 0], 1) = ([q 1, 0], 1, R), b)δ([q 1, 1], 0) = ([q 1, 1], 0, R), Si M tiene un 0 almacenado y ve un 1 o viceversa, entonces M continua moviendose hacia la derecha. 3 a)δ([q 1, 0], B) = ([q 1, B], B, L), b)δ([q 1, 1], B) = ([q 1, B], B, L), M entra al estado final [q 1, B] si se alcanza un símbolo blanco sin haber encontrado el primero una segunda copia del símbolo más a la izquierda. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 24 / 43

Si M alcanza un blanco en el estado [q 1, 0] o [q 1, 1], es aceptado. Para el estado [q 1, 0] y el símbolo 0 o para el estado [q 1, 1] y el símbolo 1,δ no está definida. Así si M encuentra símbolos en la cinta almacenados, M se para sin aceptar. En general, podemos permitir que el control finito tenga k componentes y todas, excepto una, almacenen información. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 25 / 43

Múltiples pistas Podemos imaginar que la cinta de la máquina de Turing está dividida en k pistas, para algún k finito. Por ejemplo, para k = 3 estamos hablando de una división como la que se muestra en la siguiente figura c 1 0 1 1 1 1 $ B B B B B B 1 0 1 B B B... B 1 0 0 1 0 1 B B B Control Finito Es decir, bajo este esquema los símbolos en la cinta son considerados como un k-tuplas con un componente por cada pista. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 26 / 43

Ejemplo: La cinta de la figura anterior pertenece a una máquina de Turing que toma una entrada binaria más grande que 2, la escribe en la primera pista, y determina si es un primo. La entrada aparece rodeada por ç y $ en la primera pista. Así, las entradas permitidas son [ c,b, B], [0, B, B], [1, B, B], y [$,B, B]. Estos símbolos pueden ser identificados con c, 0, 1 y $, respectivamente, cuando se examina como entrada. El símbolo blanco es identificado por [B, B, B]. Para probar si esta entrada es un primo, la MT primero escribe el número dos en binario sobre la segunda pista y copia la primer pista en la tercera. Entonces la segunda pista es substraída, tantas veces como sea posible, de la tercera pista, efectivamente se divide la tercera pista por la segunda y deja el resto. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 27 / 43

Si el resto es 0, el número en la primera pista no es un primo. Si el resto no es cero, se incrementa en uno el número de la segunda pista. Si la segunda es igual a la primera, el número en la primera pista es primo, porque no se puede dividir por cualquier otro número propiamente situado entre 1 y el mismo. Si el segundo es menor que el primero, toda la operación se repite para el nuevo número de la segunda pista. En la figura anterior, la MT prueba si 47 es primo. La MT divide por 5, ya que el 5 es substraído dos veces, aparece el 37 en la tercera pista. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 28 / 43

Poniendo marcas de verificación sobre los símbolos Poner marcas de verificación sobre los símbolos es un truco útil para visualizar como una MT reconoce lenguajes definidos por cadenas repetidas, tales como: {ww w Σ } {wcy w, y Σ, w y} o {ww R w Σ }. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 29 / 43

Es también útil cuando la longitud de las subcadenas deben ser comparadas, como en los lenguajes {a i b i i 1} o {a i b j c k i j o j k} Se introduce una pista extra en la cinta que tenga blancos o (la marca de verificación). La marca aparece cuando la MT considera el símbolo que aparece bajo la marca es una de sus comparaciones. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 30 / 43

Ejemplo: Considere una máquina de Turing M = (Q, Σ, Γ,δ, q 0, B, F), la cual reconoce el lenguaje{wcw w (a + b) + }. Sea Q ={[q, d] q = q 1, q 2,..., q 9 ; d = a, b, o B} La segunda componente del estado se usa para almacenar un símbolo de la entrada, Σ ={[B, d] d = a, b, o c} El símbolo de entrada [B, d] se identifica con d. Recuerde que dos pistas son herramientas conceptuales, es decir, [B, d] es otro nombre de d: Γ ={[X, d] X = B o ; d = a, b, c, o B} q 0 = [q 1, B]; F ={[q 9, B]}; Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 31 / 43

[B, B] es identificado con B, símbolo blanco. Para d = a o b y e = a o b se defineδcomo: 1)δ([q 1, B], [B, d]) = ([q 2, d], [, d], R) M busca el símbolo explorado en la cinta, almacena el símbolo en el control finito, y se mueve hacia la derecha. 2)δ([q 2, d], [B, e]) = ([q 2, d], [B, e], R) M continua moviendose hacia la derecha, mira hacia c. 3)δ([q 2, d], [B, c]) = ([q 3, d], [B, c], R) Al encontrar c, M entra a un estado con la primer componente q 3. 4)δ([q 3, d], [, e]) = ([q 3, d], [, e], R) M se mueve hacia la derecha sobre símbolos que tengan marcas de verificación. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 32 / 43

5)δ([q 3, d], [B, d]) = ([q 4, B], [, d], L) M encuentra un símbolo sin marca de verificación. Si tal símbolo es igual al símbolo almacenado en el control finito. M le pone la marca de verificación y comienza a moverse hacia la izquierda. Si los símbolos son diferentes, M se para sin aceptar su entrada. M también se para si en el estado q 3, alcanza [B, B] antes de encontrar un símbolo sin marcas de verificación. 6)δ([q 4, B], [, d]) = ([q 4, B], [, d], L) M se mueve hacia la izquierda sobre símbolos con marcas de verificación. 7)δ([q 4, B], [B, c]) = ([q 5, B], [B, c], L) M encuentra el símbolo c. 8)δ([q 5, B], [B, d]) = ([q 6, B], [B, d], L) Si el símbolo inmediato a la izquierda de c no tiene marca de verificación. M continúa hacia la izquierda para encontrar el símbolo con marca de verificación más a la derecha. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 33 / 43

9)δ([q 6, B], [B, d]) = ([q 6, B], [B, d], L) M continúa a la izquierda. 10)δ([q 6, B], [, d]) = ([q 1, B], [, d], R) M encuentra un símbolo con marca de verificación y se mueve hacia la derecha para continuar con otro símbolo para la comparación. El primer componente del estado se convierte otra vez en q 1. 11)δ([q 5, B], [, d]) = ([q 7, B], [, d], R) M podría estar en el estado [q 5, B] inmediatamente después de cruzar c moviendose hacia la izquierda (ver regla 7). Si un símbolo con marca de verificación aparece inmediatamente a la izquierda de c, todos los símbolos a la izquierda de c tienen marcas de verificación. M debe probar si todos los símbolos a la derecha tienen marcas de verificación. Si es así, ellos deben haber sido comparados propiamente con los símbolos a la izquierda de c, así M aceptará su entrada. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 34 / 43

12)δ([q 7, B], [B, c]) = ([q 8, B], [B, c], R) M se mueve hacia la derecha sobre c. 13)δ([q 8, B], [, d]) = ([q 8, B], [, d], R) M se mueve hacia la derecha sobre los símbolos con marcas de verificación. 14)δ([q 8, B], [B, B]) = ([q 9, B], [, B], L) Si M encuentra [B, B], el blanco, se para y la acepta. Si M encuentra un símbolo sin marca de verificación cuando su primer componente del estado es q 8, se para sin aceptarla. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 35 / 43

Corrimientos Una máquina de Turing puede hacer un espacio en su cinta para mover todos los símbolos no blancos a un número finito de celdas hacia la derecha. Para hacer esto, la cabeza de la cinta hace una excursión a la derecha, repetidamente almacena los símbolos leídos en el control finito y los reemplaza por símbolos leídos de celdas de la izquierda. La MT pueden entonces regresar a las celdas vacantes e imprimir los símbolos escogidos. Si el espacio es suficiente, puede empujar bloques de símbolos a la izquierda de manera similar. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 36 / 43

Ejemplo: Construir una parte de la MT M = (Q, Σ, Γ,δ, q 0, B, F), la cual puede ocasionalmente necesitar mover dos celdas de símbolos no blancos a la derecha. Suponemos que la cinta de M no contiene blancos entre no blancos, así que cuando se alcance un blanco se para el proceso de moverse. Supongamos que Q contiene estados de la forma [q, A 1, A 2 ] para q = q 1 o q 2, y A 1, A 2 Γ. Sea X un símbolo especial no usado por M excepto en el proceso de corrimiento. M comienza el proceso de corrimiento en el estado [q 1, B, B]. Las partes relevantes de la función δ son: 1)δ([q 1, B, B], A 1 ) = ([q 1, B, A 1 ], X, R) para A 1 Γ {B, X}. M almacena el primer símbolo leido en la tercera componente del estado. X se imprime sobre la celda explorada, y M se mueve hacia la derecha. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 37 / 43

2)δ([q 1, B, A 1 ], A 2 ) = ([q 1, A 1, A 2 ], X, R) para A 1, A 2 Γ {B, X}. M mueve el símbolo de la tercera componente a la segunda componente, almacena el símbolo que comienza a leer en la tercera componente, imprime X y se mueve hacia la derecha. 3)δ([q 1, A 1, A 2 ], A 3 ) = ([q 1, A 2, A 3 ], A 1, R) para A 1, A 2, A 3 Γ {B, X}. Ahora M repetidamente lee el símbolo A 3, lo almacena en la tercera componente del estado, mueve el símbolo que previamente estaba en la tercera componente, A 2, a la segunda componente, deposita la segunda componente previa, A 1, en la celda explorada, y se mueve hacia la derecha. Así, un símbolo se deposita en dos celdas a la derecha de su posición original. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 38 / 43

4)δ([q 1, A 1, A 2 ], B) = ([q 1, A 2, B], A 1, R) para A 1, A 2 Γ {B, X}. Cuando se ve un blanco en la cinta, los símbolos almacenados son depositados en la cinta. 5)δ([q 1, A 1, B], B) = ([q 2, B, B], A 1, L) Después de que todos los símbolos son depositados, M cambia la primer componente del estados a q 2 y se mueve hacia la izquierda para encontrar un X, el cual marca la celda vacante más a la derecha. 6)δ([q 2, B, B], A) = ([q 2, B, B], A, L) para A Γ {B, X}. M se mueve hacia la izquierda hasta encontrar a X. Cuando se encuentra X, M transfiere el control a un estado donde el autómata reanuda sus funciones. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 39 / 43

Subrutinas Como en la programación, un diseño modular o de arriba a abajo se facilita al emplear subrutinas para definir procesos elementales. Una máquina de Turing puede simular cualquier tipo de subrutinas encontradas en lenguajes de programación, incluyendo procesos recursivos y cualquier mecanismo conocido para transferir parámetros. Aquí sólo vamos a describir el uso de subrutinas sin parámetros y no recursivas, pero aún éstas son herramientas en extremo poderosas. La idea general es escribir parte de un programa de una MT como una subrutina; el diseño tiene un estado inicial designado y un estado de retorno también designado el cual temporalmente no tiene definidos movimientos y que se usa para efectuar el regreso a la rutina que lo ha invocado. Para diseñar una MT que invoque a la subrutina, se construye un conjunto nuevo de estados para la subrutina, y se especifica el movimiento al estado de retorno. La llamada se lleva a cabo ingresando al estado inicial de la subrutina, y el regreso se lleva a cabo mediante el movimiento al estado de retorno. Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 40 / 43

Ejemplo: El diseño de una MT M que implemente la función multiplicación recursiva total es: M comienza con 0 m 10 n en la cinta y termina con 0 mn rodeados por blancos. La idea general es colocar un 1 después de 0 m 10 n y entonces copiar el bloque de n 0 s sobre la parte final de la derecha m veces, borrando en cada paso uno de los m 0 s. El resultado es 10 n 10 mn. Finalmente se borra el prefijo 10 n 1, y se deja 0 mn. El corazón del algoritmo es la subrutina COPIA, que comienza con la DI 0 m 1q 1 0 n 10 i y eventualmente genera una DI 0 m 1q 5 0 n 10 i+n. COPIA es definida en la siguiente tabla: 0 1 2 B q 1 (q 2, 2, R) (q 4, 1, L) q 2 (q 2, 0, R) (q 2, 1, R) (q 3, 0, L) q 3 (q 3, 0, L) (q 3, 1, L) (q 1, 2, R) q 4 (q 5, 1, R) (q 4, 0, L) Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 41 / 43

En el estado q 1, y con 0 bajo la cabeza de la cinta, M cambia a el 0 a 2 y entra al estado q 2. En el estado q 2, M mueve la cabeza de la cinta hacia la derecha, hasta alcanzar el siguiente símbolo blanco, cambia a este símbolo por 0, e inicia el siguiente movimiento hacia la izquierda en el estado q 3. En el estado q 3, M mueve la cabeza de la cinta hacia la izquierda hasta encontrar el 2. Al alcanzarlo, entra al estado q 1 y el proceso se repite hasta encontrar el 1, que indica que el proceso de copiar está completo. El estado q 4 se usa para convertir los 2 en 0 s, y la subrutina para en q 5. Para completar el programa de multiplicación, se añaden estados para convertir la DI inicial q 0 0 m 10 n en B0 m 1 1q 1 0 n 1. Es decir, necesitamos las reglas δ(q 0, 0) = (q 6, B, R), δ(q 6, 0) = (q 6, 0, R), δ(q 6, 1) = (q 1, 1, R). Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 42 / 43

Se necesitan algunos estados adicionales para convertir la DI B i 0 m i 1q 5 0 n 10 ni en B i+1 0 m i 1 1q 1 0 n 10 ni, que prepara el entorno para volver a invocar a COPIA, y verifica si i = m, es decir, si todos los m 0 s fueron borrados. En caso que i = m, se borra el prefijo 10 n 1 y el cálculo se detiene en el estado q 12. Los movimientos son: 0 1 2 B q 5 (q 7, 0, L) q 7 (q 8, 1, L) q 8 (q 9, 0, L) (q 10, B, R) q 9 (q 9, 0, L) (q 0, B, R) q 10 (q 11, B, R) q 11 (q 11, B, R) (q 12, B, R) Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 43 / 43