viernes, 6 de agosto de 2010

Bibliografía. Más información

• Historia de las Computadoras (n.d.) Extraído desde http://html.rincondelvago.com/historia-de-las-computadoras_1.html


• Documental: Como empezó la informática. Extraído desde http://www.taringa.net/posts/info/2788805/Documental--:--Como-empezo-la-Informatica!.html

• Teoría de Autómatas I: Máquinas de Turing y lenguajes estructurados por frases. Extraído desde http://dac.escet.urjc.es/~lrincon/uned/ta1/ta1-tema3.pdf

• Máquina de Turing (01, 2003). Wikipedia, la enciclopedia en línea. Extraído desde http://es.wikipedia.org/wiki/M%C3%A1quina_de_Turing

• Lenguaje recursivamente enumerable (02, 2008). Wikipedia, la enciclopedia en línea. Extraído desde http://es.wikipedia.org/wiki/Lenguaje_recursivamente_enumerable

• Alfonseca, Manuel (n.d.) La máquina de Turing. Extraído desde http://www.sinewton.org/numeros/numeros/43-44/Articulo33.pdf

• La máquina de Turing / La teoría de la computación y la Máquina de Turing (05, 2005.) Epistemowikia. Extraído desde http://campusvirtual.unex.es/cala/epistemowikia/index.php?title=La_m%C3%A1quina_de_Turing/La_teor%C3%ADa_de_la_computaci%C3%B3n_y_la_M%C3%A1quina_de_Turing

• Quiroga, E., (2008). Módulo Autómatas y lenguajes formales, (p.p 1 – 143). Bogotá, Colombia: Universidad Nacional Abierta y a Distancia

• Máquinas de Turing (n.d) Universidad del Valle. Extraído desde http://eisc.univalle.edu.co/materias/Computabilidad/material/turing.pdf

• 4.4 Variantes de una máquina de Turing (n.d) Extraído desde http://sistemas.itlp.edu.mx/tutoriales/teoriadelacomputacion/t44.htm

• Máquina de Turing multicinta (n.d.) Extraído desde http://www3.uji.es/~martine/DOC/E45/apuntes/node12.html

• Zator System (n.d.) Computación: Máquina de Turing. Extraído desde http://www.zator.com/Cpp/E0_1_1.htm

• Teoría de la Computación (10, 2003). Wikipedia, la enciclopedia en línea. Extraído desde http://es.wikipedia.org/wiki/Teor%C3%ADa_de_la_computaci%C3%B3n

• Alan Turing (08, 2003). Wikipedia, la enciclopedia en línea. Extraído desde http://es.wikipedia.org/wiki/Alan_Turing#cite_note-Leavitt-0

• Alan M. Turing (n.d.) Stanford Encyclopedia of Philosophy. Extraído desde http://plato.stanford.edu/archives/sum2002/entries/turing/#2


Vídeos

• Oliveira, Elthon (n.d.) Máquina de Turing: Ciência da computaçao – UFAL. Extraído desde http://www.youtube.com/watch?v=zqUU-fXdfos&feature=related

http://www.youtube.com/watch?v=2VROJ__Pr5A&feature=related

http://www.youtube.com/watch?v=E3keLeMwfHY&feature=player_embedded


Imágenes

www.madrimasd.org/blogs/universo/2007/08/04/71181

http://www.cs.utah.edu/~draperg/cartoons/2005/turing.html

Conclusiones

• Una Máquina de Turing, o MT, se considerar una cinta infinita dividida en casillas, cada una de las cuales contiene un símbolo, y sobre la cual actúa un dispositivo que puede adoptar diversos estados, y que lee un símbolo de la casilla sobre la que está situado. En función de dicho símbolo y del estado actual, se pueden realizar tres acciones siguientes: pasa a un nuevo estado, imprime un símbolo en lugar del que acaba de leer y se desplaza a una posición hacia la izquierda, derecha, o se detiene.


• Existen diversas clasificaciones de las Máquinas de Turing, atendiendo a los estados reconocidos, tipo de cinta, cantidad o división de dichas cintas: MT con directiva de permanecer, MT con cinta infinita en una dirección, MT en dos direcciones, MT multicinta, MT Multidimensional, MT No determinista.

• Las MT, de acuerdo a la clasificación de los lenguajes formales de Chomsky, acepta los lenguajes tipo cero (0), llamados lenguajes recursivamente enumerables.

• La creación modular de una maquina de Turing permite desarrollar máquinas complejas a partir de bloques elementales, mediante diagramas de transiciones. La construcción de máquinas de Turing se lleva a cabo mediante dichos diagramas de transición, y sus combinaciones.

• Las MT han sido aplicadas en el desarrollo de la teoría computacional y en las llamadas máquinas oráculo, generadores de funciones, calculadoras de funciones, y generadores de lenguaje.

10. Funcionamiento de la MT Multicinta

Tal como se describió en la sección anterior sobre la clasificación de las MT, una máquina multicintas posee n cintas diferentes, y n cabezas de L/E. La función de transición para máquinas de Turing con n cintas es:


δ:QxΓ^n→QxΓ^n x〖{D,I,N}〗^n


Para entender su funcionamiento, se presentan dos ejemplos a continuación:




Ejemplo 1

Reconocimiento del lenguaje {anbn
n³ 1}. Éste es bastante laborioso en una máquina de Turing con una única cinta. Es mucho más fácil realizarlo con una máquina de Turing de dos cintas. Suponiendo que, inicialmente, coloca la cadena a analizar en la cinta 1 y que q1 es el estado inicial. Si la cabeza de lectura/escritura de la cinta 1 está situada inicialmente sobre el carácter del extremo izquierdo de la cadena, las cuatro posiciones siguientes son fundamentales para el reconocimiento (cualquier otra transición sería para cadenas mal formadas y se puede suponer que llega a un estado que no es de aceptación):

d (q1, (a, B)) =(q1, (a, a), (R, R))

d (q1, (b, B)) =( q2, (b, B), (S, L))

d ( q2, (b, a)) =( q2, (b, a), (R, L))

d ( q2, (B, B)) =( q3, (B, B), (R, L))

Aunque esta máquina de Turing multicinta parece bastante distinta y posiblemente más potente que la máquina de Turing definida originalmente, las dos son equivalentes en el sentido de que cada una de ellas puede ser simulada por la otra.



Ejemplo 2

Sea una MT de dos cintas, que reconoce el lenguaje L={a^i b^i c^i:i≥0}

Se coloca la cadena de entrada en la primera cinta, la idea es copiar en la segunda cinta una X por cada “a” y cuando encuentre la primera “b”, se detiene en la primera cinta, luego se avanza a la derecha en la primera cinta y se avanza a la izquierda en la segunda cinta, cuando encuentra la primera “c” las dos cintas avanzan hacia la derecha.

La función de transición es la siguiente, sea T = {q3}.

δ(q0, (a,B)) = (q0, (a,X), (D,D))

δ(q0, (b,B)) = (q1, (b,B), (N,D))

δ(q1, (b,B)) = (q1, (b,X), (D, I))

δ(q1, (c,B)) = (q2, (c,B), (N,D))

δ(q2, (c,X)) = (q2, (c,X), (D,D))

δ(q2, (B,B)) = (q3, (B,B), (D,D))

Se muestra el funcionamiento de la MT multicinta, con la cadena de entrada w = abc.



Se finaliza en el estado q3, definido como estado de aceptación.

9. Ejemplos de aplicación de las MT

Ejemplo del Funcionamiento: se construye una MT que acepte el lenguaje L={a^i b^i c^i:i≥0}, sobre Σ={a,b,c}.


1. Se cambia la “a” por una X y se mueve hacia la derecha pasando por encima de todas las “a” e “Y”, hasta llegar a la primera “b”, cambia la primera “b” por una Y, se mueve a la derecha pasando por encima de las “b” y “Z”, y luego encuentra la primera “c” y la cambia por “Z” y se mueve a la izquierda.

2. Luego se mueve a la izquierda pasando por encima de “b”, “Y”, “a”, hasta encontrar la “X”, la reemplaza por una “X” y repite el proceso anterior, cuando la máquina reemplaza la cadena “X”, “Y” y “Z” reconoce la cadena vacía y busca el estado de aceptación.

Comprobación de la aceptación de la cadena w = aabbcc:



En cuanto a las aplicaciones de las MT, tenemos la Teoría de la computación:


Teoría de la computación:

La teoría de la computación es una rama de la matemática y la computación que centra su interés en las limitaciones y capacidades fundamentales de las computadoras. Específicamente esta teoría busca modelos matemáticos que formalizan el concepto de hacer un cómputo (cuenta o cálculo) y la clasificación de problemas de acuerdo a su grado de dificultad.

La teoría de la computación comienza propiamente a principios del siglo XX, poco antes que las computadoras electrónicas fuesen inventadas. En esta época varios matemáticos se preguntaban si existía un método universal para resolver todos los problemas matemáticos. Para ello debían desarrollar la noción precisa de método para resolver problemas, es decir, la definición formal de algoritmo.

Algunos de estos modelos formales fueron propuestos por precursores como Alonzo Church (cálculo Lambda), Kurt Gödel (funciones recursivas) y Alan Turing (máquina de Turing). Se ha mostrado que estos modelos son equivalentes en el sentido de que pueden simular los mismos algoritmos, aunque lo hagan de maneras diferentes. Entre los modelos de cómputo más recientes se encuentran los lenguajes de programación, que también han mostrado ser equivalentes a los modelos anteriores; esto es una fuerte evidencia de la conjetura de Church-Turing, de que todo algoritmo habido y por haber se puede simular en una máquina de Turing, o equivalentemente, usando funciones recursivas. En 2007 Nachum Dershowitz y Yuri Gurevich publicaron una demostración de esta conjetura basándose en cierta axiomatización de algoritmos.

Uno de los primeros resultados de esta teoría fue la existencia de problemas imposibles de resolver algoritmicamente, siendo el problema de la parada el más famoso de ellos. Para estos problemas no existe ni existirá ningún algoritmo que los pueda resolver, no importando la cantidad de tiempo o memoria se disponga en una computadora. Asimismo, con la llegada de las computadoras modernas se constató que algunos problemas resolubles en teoría eran imposibles en la práctica, puesto que dichas soluciones necesitaban cantidades irrealistas de tiempo o memoria para poderse encontrar.


Máquinas Oráculo (O-Machines)

La máquina con oráculo, es una máquina de Turing equipada con un oráculo que es capaz de contestar preguntas sobre la pertenencia a un conjunto específico de números naturales.

Funcionamiento:

La máquina también tiene tres estados especiales: el "estado llamada", el "estado-1" y el "estado-0" y un símbolo marcador especial: μ (mú). Para usar su oráculo, la máquina debe escribir primero el símbolo μ en dos recuadros de la cinta, y entonces se entrará en el "estado llamada". En este estado se manda una petición al oráculo y la máquina termina en el "estado-1" si el número escrito en los cuadrados de la cinta entre los símbolos "μ" son un elemento del conjunto oráculo y termina en el "estado-0" en otro caso.

Una máquina oráculo con el "conjunto parada" en su oráculo puede computar la función del problema de la parada. Mientras este sería un ejemplo trivial del uso del conjunto oráculo, muchas otras funciones de interés pueden ser computadas utilizando el oráculo de la función de la parada. De hecho, esto permite que todas las funciones recursivamente enumerables sean computables.

Función Recursiva Enumerable:

Una función "f" es recursivamente enumerable por definición si y sólo si hay una máquina de Turing, m, tal que para todo n perteneciente a los ℕ, la máquina dará como salida 1 si f(n)=1 y dará salida 0 o un bucle infinito (la máquina diverge) en otro caso.

Además una O-Machine con el "oráculo de la parada" puede preguntar a su oráculo si m se detendrá para la entrada n. Si m no se detiene, la O-Machine puede devolver 0 (f(n) debe ser 0). Si m se detiene, entonces la O-Machine puede simplemente simular la entrada n en la máquina m y retornar su resultado.

Dada la potencia y la naturaleza del conjunto de parada, es utilizado a menudo en la teoría de la recursión para describir los diferentes niveles de computabilidad.

Si un conjunto es computable en una O-Machine con el oráculo X, se dice que es computable en X o recursiva en X. El conjunto de las funciones computables por una máquina de Turing puede encajar en esta jerarquía imaginando una máquina de Turing como una O-Machine con un oráculo vacío, por tanto hay un incremento obvio en la potencia de esta máquina. La generalización del conjunto de parada a las O-Machines con oráculo X se denota como X’, donde la (’) es conocida como el operador de salto. De esta manera, el problema de la parada (y todas las funciones recursivamente enumerables) se dice que son recursivas en el ∅’, mientras que el problema de la parada para máquinas con oráculo ∅’ son recursivas en el ∅’’, y así sucesivamente.

Las máquinas oráculo tienen una propiedad de que cualquier función de ℕ en ℕ es computable por alguna máquina oráculo, pero ningún oráculo es suficiente para permitir a las O-Machines que tengan acceso a este oráculo computar todas las funciones de ℕ en ℕ.

Esta situación nace del hecho de que una O-Machine es una combinación entre una parte clásica (la máquina de Turing de estados y transiciones finitas) y un oráculo (que es un conjunto posiblemente infinito de números). De alguna manera esto permite la trivialización de la computación generalizada (si pudiéramos elegir el oráculo una vez que conociéramos la función, ésta podría ser resuelta utilizando el oráculo como una tabla infinita de búsqueda). Sin embargo, el concepto de computación por una O-Machine es interesante y está bien fundado, ya que resolvemos funciones que pueden ser resueltas con un oráculo determinado.


MT como calculadora de funciones:


Como las maquinas de Turing pueden transformar cadenas de entradas, también se utilizan como mecanismos para calcular funciones.

MT M=(Q,Σ,Γ,q_0,T,B,δ)

Formalmente una

f:Σ^*→Γ^* (parcial o total)

calcula una función

q_0 w⊢*q_f v, donde v=f(w)

si para una entrada w se tiene:

Σ={a,b} y q_f

El modelo de MT no utiliza estado de aceptación, el estado es llamado estado final se usa para terminar el proceso de la entrada y producir la salida.



Ejemplo:

Supongamos que tenemos Σ={a,b} y q_f y que representamos los enteros positivos mediante cadenas solo de “as”. Así el entero “n” estaría representado por a^n.

Se puede construir la MT que calcule la función f(n,m) = n+m, implementando la transformación

a^n ba^m en a^(n+m) b

Solución:

Se recorren desde la izquierda todas las as hasta encontrar una “b”, esta se reemplaza por una “a”, cambiando de estado, en este mismo estado se recorren todas las “as” a la derecha y cuando se llega a un blanco se reemplaza por el mismo blanco se deja la cabecera a la izquierda y se reemplaza la “a” por un blanco para restarle la que adiciono y se mueve hacia la derecha y se cambia al estado final “q3”.

M=(Q,Σ,Γ,q_0,q_3,B,δ)

Donde la función se define así:

MT como generadoras de lenguaje


Otra de las capacidades importantes es la de generar lenguajes, tarea en la

MT M=(Q,Σ,Γ,q_0,T,B,δ)

Cual los estados finales son necesarios. Concretamente una MT genera un lenguaje L⊆Σ^* si:

M comienza a operar con la cinta en blanco en el estado inicial “q0”.

Cada vez que M retorna al estado inicial “q0”, hay una cadena u∈L escrita sobre la cinta.

Todas las cadenas de L son, eventualmente, generadas por M.

El siguiente MT genera cadenas con un numero par de “a” sobre Σ={a}


8. Reconocimiento de cadenas de una MT

Para explicar el proceso de reconocimiento de cadenas se emplea la gráfica a continuación. La siguiente máquina de Turing acepta el lenguaje de palabras sobre {0,1} que comienzan y acaban con el mismo símbolo. Para validar este lenguaje, se presentan dos cadenas, una que cumple la condición y otra que será rechazada por la máquina. Se muestra entonces la cadena del lenguaje descrito, aceptada: 0110100 (Estado de aceptación q5).

Las transiciones, y el proceso seguido en la evaluación y aceptación de una cadena dada, se resumen en la siguiente tabla:


2. Cadena del lenguaje descrito, rechazada: 110


Para más información, se puede consultar el siguiente Ejemplo del reconocimiento de cadenas

7. Construcción modular de las MT

El objetivo de la creación modular de una maquina de Turing es poder desarrollar máquinas complejas a partir de bloques elementales, a partir de maquinas más pequeñas, mediante diagramas de transiciones. La construcción de máquinas de Turing se lleva a cabo mediante los diagramas de transición y combinarlos de manera parecida a lo que se realiza en la formación de la unión y concatenación de los autómatas finitos.


Pasos para la construcción de una máquina de Turing:

1. Elimine las características de inicio de los estados iniciales de las maquinas, excepto la de aquel donde iniciara la maquina compuesta.

2. Elimine las características de detención de los estados de parada de todas la maquinas e introduzca un nuevo estado de parada que nos se encuentre en ninguno de los diagramas que se combinan.

3. Para cada uno de los antiguos estados de parada p y cada x en y.

Ejemplificación de dicha construcción.

Los diagramas compuestos para la construcción modular de una máquina de Turing:


Son aquellos en los que cada uno de los bloques de construcción se representa como un nodo, con flechas entre dichos nodos para indicar las transiciones entre bloques.

Se puede combinar dos máquinas de Turing permitiendo que compartan la misma cinta y, que cuando una termine su ejecución, la otra empiece. El contenido de la cinta cuando comienza la ejecución de la segunda máquina de Turing, está formado por todo lo que dejó la primera máquina de Turing, y la cabeza de l/e de la segunda se situará, al comienzo de la ejecución, sobre la celda de la cinta sobre la que terminó la primera.

Un sistema Turing completo es aquel que puede simular el comportamiento de una máquina de Turing. Es evidente que salvando los problemas de memoria, los ordenadores modernos y los lenguajes de programación de uso general, son sistemas de Turing completos. También es evidente, que con independencia de su forma concreta, cualquier dispositivo que se comporte como un sistema de Turing completo, puede en principio ejecutar cualquier cálculo que realice cualquier computador.

Nota: Observe que la anterior afirmación no menciona para nada la posible dificultad de escribir el programa o del tiempo que pueda emplear en realizar el cálculo (cualquier cálculo que pueda hacer un ordenador puede teóricamente efectuarse con papel y lápiz).

Una máquina de Turing es un autómata que se mueve sobre una secuencia lineal de datos. En cada instante la máquina puede leer un solo dato de la secuencia (generalmente un carácter) y realiza ciertas acciones en base a una tabla que tiene en cuenta su "estado" actual (interno) y el último dato leído. Entre las acciones está la posibilidad de escribir nuevos datos en la secuencia; recorrer la secuencia en ambos sentidos y cambiar de "estado" dentro de un conjunto finito de estados posibles.


Maquinas de Turing Compuesta.

6. Lenguajes aceptados por una MT

De acuerdo a la clasificación de los lenguajes formales realizada por el norteamericano Avram Chomsky, la Máquina de Turing acepta los lenguajes más generales, o tipo cero (0), también llamados lenguajes recursivamente enumerables.


Un lenguaje recursivamente enumerable es un lenguaje formal para el cual existe una máquina de Turing que acepta y se detiene con cualquier cadena del lenguaje, pero que puede parar y rechazar, o bien iterar indefinidamente, con una cadena que no pertenece al lenguaje. Todos los lenguajes, regulares, independientes de contexto, dependientes de contexto y recursivos son recursivamente enumerables.

Una cadena ω∈A^*, es aceptada por una MT, si comienza en el estado e0, con la cabeza de lectura/escritura en el símbolo más a la izquierda, luego de leer toda la cadena ω, llega a un estado e_f∈F. El lenguaje aceptado por MT, es el conjunto de todas las cadenas que son aceptadas por MT:

L(MT)={ω / e_0 ω ⊢*α_1 e_f α_2 y e_f∈F y α_1,α_1 ∈C^* y ω∈A^* }

Tenemos por ejemplo una MT que reconoce el lenguaje {0^n 1^n:n≥1}. Las transiciones de la máquina se representan como sigue:


Se evalúa la cadena w = 1100, arrojando el siguiente resultado:

Otras cadenas también aceptadas por esta MT son 11110000, 10, 11111110000000.

5. Clasificación de las Máquinas de Turing

A continuación se presentan los diversos tipos de Máquinas de Turing, que surgen de la necesidad de flexibilidad para la solución de problemas, y que tienen su modelo general en el definido en los párrafos anteriores.

- Máquina de Turing con Directiva de Permanecer

Recuérdese que la máquina de Turing sencilla sitúa la cabeza de lectura/escritura sobre el primer B que haya a la izquierda de la posición actual. Para hacerlo, busca fuera de la celda actual y retrocede. Esto es debido a la definición original que requiere que por cada transición se mueva la cabeza de la cinta.

La función de transición estaba definida como: d: Q x G ® Q x G x {R, L} y puede ser modificada como: d: Q x G ® Q x G x {R, L, S} donde S significa "permanecer", es decir no mover la cabeza de lectura/escritura.

Por tanto d (q, s)= (p, s ’, S) significa que se pasa del estado q al p, se escribe s’ en la celda actual y la cabeza se queda sobre la celda actual.


- Máquina de Turing Multipista

Es aquella mediante la cual cada celda de la cinta se divide en subceldas. Cada subcelda es capaz de contener símbolos de la cinta. La cinta tiene cada celda subdividida en tres subceldas. Se dice que esta cinta tiene múltiples pistas. Puesto que cada celda de esta máquina de Turing contiene múltiples caracteres, el contenido de las celdas de la cinta puede ser representado mediante n-tuplas ordenadas. En el ejemplo anterior, las celdas de la cinta contienen (B, a, a), (b, a, a) y (b, b, B). Por tanto, los movimientos que realice está máquina dependerán de su estado actual y de la n-tupla que represente el contenido de la celda actual.

Una máquina de Turing multipista no tiene más potencia que la máquina de Turing original. Sin embargo, hace que sea más fácil la construcción de máquinas de Turing que resuelvan ciertos problemas.

Ejemplo: Para una máquina de Turing que sume dos números binarios. Primero se construye una máquina de Turing de tres pistas. La entrada serán dos números binarios que ocupen las dos pistas superiores de la cinta. Suponiendo que sus dígitos se alinean por la derecha, que sus representaciones binarias son de la misma longitud (lo que se puede conseguir rellenándolas con tantos ceros como sea necesario) y que la cabeza de lectura/escritura se sitúa sobre la celda del extremo izquierdo de la cadena. Por tanto, si tuvieran que sumar 101 y 10, la cinta debería contener

La máquina de Turing realizará la suma en la tercera pista. Por tanto, el alfabeto de cinta estará formado por las ternas:

(B, B, B) (1, 1, B) (1, 1, 0) (1, 1, 1)

(0, 0, B) (0, 0, 0) (0, 0, 1) (B, B, 1)

(0, 1, B) (0, 1, 0) (0, 1, 1)

(1, 0, B) (1, 0, 0) (1, 0, 1)

Esta máquina de Turing buscará primero hacia la derecha el extremo derecho de los números que van a ser sumados. Entonces sumará pares de dígitos, desde la derecha hacia la izquierda, llevando la cuenta de los resultados que se obtengan y sumando a quienes corresponda.

Por tanto, se obtiene (suponiendo que q1 es el estado inicial):

d (q1, s ) = (q1, s , R), si s ¹ (B, B, B) ó (q2, s , L), si s =(B, B, B)

d (q2, (0, 0, B)) = (q2, (0, 0, 0), L) d (q3, (0, 0, B)) = (q2, (0, 0, 1), L)

d (q2, (0, 1, B)) = (q2, (0, 1, 1), L) d (q3, (0, 1, B)) = (q3, (0, 1, 0), L)

d (q2, (1, 0, B)) = (q2, (1, 0, 1), L) d (q3, (1, 0, B)) = (q3, (1, 0, 0), L)

d (q2, (1, 1, B)) = (q3, (1, 1, 0), L) d (q3, (1, 1, B)) = (q3, (1, 1, 1), L)

d (q2, (B, B, B)) = (q4, (B, B, B), S) d (q3, (B, B, B)) = (q4, (B, B, B), S)

Obsérvese que se necesita que esta máquina de Turing tenga la posibilidad de no moverse.


- Máquina de Turing de Cinta infinita en una Dirección

Máquina de Turing que usa una cinta que se extiende infinitamente en una única dirección. Generalmente, se tiene una cinta que se extiende infinitamente hacia la derecha. No está permitido realizar ningún movimiento hacia la izquierda a partir de la celda del extremo izquierdo. Desde luego, cualquier máquina de Turing de esta forma puede ser simulada por una de las que responden a la definición original. Para cada computación, simplemente se marca una de las celdas de la cinta infinita por los dos lados, como la celda que se encuentra en el límite izquierdo.

- Máquina de Turing en Dos Direcciones

Una máquina de Turing con una cinta infinita en un sentido puede simular una máquina de Turing con la cinta infinita en los dos sentidos pero con dos pistas. Sea M una máquina de Turing con una cinta infinita en los dos sentidos. La máquina de Turing M’, que tiene una cinta infinita en un sentido, puede simular a M si tiene una cinta con dos pistas. La cinta superior contiene la información correspondiente a la parte derecha de la cinta M, a partir de un punto de referencia dado. La pista inferior contiene la parte izquierda de la cinta M (en orden inverso).


- Máquina de Turing Multicinta

La máquina de Turing multicinta tiene varias cintas, cada una de las cuales tiene su propia cabeza de lectura/escritura. Las cabezas de lectura/escritura se controlan independientemente (es decir, al mismo tiempo, no tienen que moverse en la misma dirección, ni realizar el mismo número de movimientos, ni incluso, hacer nada a la vez). En un solo movimiento, esta máquina de Turing:

1. Cambia de estado dependiendo del estado actual y del contenido de las celdas de todas las cintas, que están analizando actualmente las cabezas de lectura/escritura.

2. Escriben un nuevo símbolo en cada una de las celdas barridas por sus cabezas de lectura/escritura.

3. Mueve cada una de sus cabezas hacia la izquierda o hacia la derecha (de forma independiente al resto de las cabezas).

Por tanto, la función de transición para una máquina de Turing con n cintas, es de la forma d : Q x G n ® Q x G n x {R, L} n donde una transición de la forma d (q, (s 1, s 2,…, s n)) = (p,(t 1, t 2, …, t n), (X1, X2, …, Xn)) significa que cambia del estado q a p, reemplaza s i por t i en la cinta i y mueve la cabeza de la cinta i en la dirección Xi.


- Máquina de Turing Muldimensional.

La máquina de Turing multidimensional es aquella que permite que la cinta tenga muchas dimensiones. Por ejemplo, una cinta de dos dimensiones que se extienda hacia abajo y hacia arriba, al igual que hacia la derecha y hacia la izquierda. Dependiendo del estado actual de la máquina de Turing y del símbolo analizado, cambia de estado, escribe un símbolo en la celda actual y se mueve a la izquierda, al derecha, hacia arriaba o hacia abajo. Por tanto, la función de transición para esta máquina de Turing será de la forma:

d : Q x G ® Q x G x {R, L, U, D}

Una máquina de Turing multidimensional simula una máquina de Turing estándar. Simplemente realizando todas sus computaciones en una única dimensión. Una máquina de Turing estándar también puede simular una máquina de Turing multidimensional y, por tanto, la complejidad y la flexibilidad adicional que se debe a la múltiple dimensión, no es una capacidad real. Para simular una máquina de Turing de dos dimensiones mediante una máquina de Turing estándar, primero se asociara una dirección a todas las celdas de la cinta. Una forma de hacerlo es fijar, de forma arbitraria, un lugar en la cinta a partir del cual se asignarán las coordenadas a las celdas de la misma forma que se realiza en un plano de coordenadas.

Entonces, se usara una cinta de dos pistas para simular la máquina de Turing. Una pista se encargará de almacenar el contenido de las celdas y la otra las coordenadas, utilizando un símbolo (*) para separar los valores de las coordenadas. Para simular un movimiento de una máquina de Turing de dos dimensiones, está máquina calcula la dirección de la celda a la que se moverá la máquina de Turing dos dimensiones. Entonces, localiza la pista inferior la celda con dicha dirección y cambia el contenido de la celda en la pista superior.


Máquina de Turing No determinista.

La máquina de Turing No determinista es aquella que para un estado actual y el símbolo actual de la cinta, puede haber un número finito de movimientos a elegir. Por lo tanto, la regla de transición d de dicha máquina, satisface

d (q, s ) Í Q x G x {R, L}

Por ejemplo, si la máquina de Turing tiene una transición

d (q1, a) = {(q1, b, R), (q2, a, L)} entonces los movimientos

abbq1ab abbbq1b y abbq1ab abq2bab son posibles.

Ya que cualquier máquina de Turing determinista es también no determinista, es lógico que una máquina de Turing determinista se pueda simular mediante una no determinista. También una máquina de Turing determinista puede simular una no determinista. Por tanto, no se gana ninguna potencia adicional a causa del no determinismo.

4. Representación gráfica de una MT

En forma similar a las demás máquinas abstractas, una Máquina de Turing puede representarse gráficamente a través de los llamados Diagramas finitos o de transición. Un diagrama de transición está formado por un conjunto de nodos que corresponden a los estados de la MT. La transición δ(q,a)=(p,b,D)se representa así:



Según esto, tenemos para un diagrama de transición los siguientes elementos:


 
  • Estados, representados por vértices: q, p
  • El estado inicial de la máquina es aquel representado por una arista sin origen. El estado final o de aceptación está representado por una doble arista. 
  • Transición entre estados, representada por una arista dirigida: (a/b, D): el primer término (a) indica el símbolo leído en el cabezal; el segundo término (b) indica el símbolo que el cabezal va a escribir. El último término es la indicación del siguiente movimiento del cabezal: derecha (D o R, por la palabra inglesa Right) o izquierda (I o L, de Left).

 
Para explicar el reconocimiento de la cadena por una MT se presenta el siguiente ejemplo. Sea M una MT con la siguiente descripción M=(Q,Σ,Γ,q_0,q_1,B,δ), donde Q={q_0,q_1 }, Σ={a,b}, y B indica el espacio en blanco.

 
Sus transiciones están dadas por:

 

 

 Esta MT reconoce a* sobre el alfabeto Σ. Sea la cadena w = aaa.
 
(1) El cabezal, representado con una flecha roja, lee el primer símbolo “a”. La transición dice que al estar en q0 y leer una “a”, se sobrescribe “a” y el cabezal se mueve a la derecha:

(2) A continuación, el estado sigue siendo q0, y el cabezal lee el segundo símbolo “a”. Nuevamente, queda en q0, sobrescribe una “a”, y el cabezal se mueve a la derecha.

(3) El proceso se repite para el último símbolo “a”

(4) En este instante, el cabezal lee un espacio en blanco, B. Según las transiciones de la MT, en el estado q0 un espacio B cambia el estado de la máquina a q1, mantiene B y mueve el cabezal a la derecha. El estado q1 es final de aceptación, por lo que la cadena es aceptada.

 

 

 

 

 

3. Qué es una Máquina de Turing y cómo funciona.

Una máquina de Turing es un dispositivo que transforma un INPUT en un OUTPUT después de algunos pasos. Tanto el INPUT como el OUPUT constan de números en código binario (ceros y unos). En su versión original la máquina de Turing consiste en una cinta infinitamente larga con unos y ceros que pasa a través de una caja. La caja es tan fina que solo el trozo de cinta que ocupa un bit (0 ó 1) está en su interior. La máquina tiene una serie de estados internos finitos que también se pueden numerar en binario. Para llevar a cabo algún algoritmo, la máquina se inicializa en algún estado interno arbitrario. A continuación, se pone en marcha y la máquina lee el bit que se encuentra en ese momento en su interior y ejecuta alguna operación con ese bit (lo cambia o no, dependiendo de su estado interno). Después se mueve hacia la derecha o hacia la izquierda, y vuelve a procesar el siguiente bit de la misma manera. Al final se para, dejando el resultado al lado izquierdo por ejemplo.



Definición formal

Una máquina de Turing con una sola cinta puede ser definida como una 7-tupla M={Q,Σ,Γ,s,b,F,δ}, donde:

• Q es un conjunto finito de estados.

• Σ es un conjunto finito de símbolos distinto del espacio en blanco, denominado alfabeto de máquina o de entrada.

• Γ es un conjunto finito de símbolos de cinta, denominado alfabeto de cinta. Σ⊆Γ

• s ∈ Q es el estado inicial.

• b ∈ Γ es un símbolo denominado blanco, y es el único símbolo que se puede repetir un número infinito de veces.

• F⊆Q es el conjunto de estados finales de aceptación.

• δ:Q x Γ → Q x Γ x{L,R} es una función parcial denominada función de transición, donde L es un movimiento a la izquierda y R es el movimiento a la derecha.

Existen en la literatura un abundante número de definiciones alternativas, pero todas ellas tienen el mismo poder computacional, por ejemplo se puede añadir el símbolo S como símbolo de "no movimiento" en un paso de cómputo.


Funcionamiento

La máquina de Turing consta de un cabezal lector/escritor y una cinta infinita en la que el cabezal lee el contenido, borra el contenido anterior y escribe un nuevo valor. Las operaciones que se pueden realizar en esta máquina se limitan a:

• Avanzar el cabezal lector/escritor hacia la derecha.

• Avanzar el cabezal lector/escritor hacia la izquierda.


El cómputo es determinado a partir de una tabla de estados de la forma:


(estado, valor) (nuevo estado, nuevo valor, dirección)

Esta tabla toma como parámetros el estado actual de la máquina y el carácter leído de la cinta, dando la dirección para mover el cabezal, el nuevo estado de la máquina y el valor a ser escrito en la cinta.

Escritura en una MT

La memoria será la cinta la cual se divide en espacios de trabajo denominados celdas, donde se pueden escribir y leer símbolos. Inicialmente todas las celdas contienen un símbolo especial denominado “blanco”. Las instrucciones que determinan el funcionamiento de la máquina tienen la forma, “si estamos en el estado x leyendo la posición y, donde hay escrito el símbolo z, entonces este símbolo debe ser reemplazado por este otro símbolo, y pasar a leer la celda siguiente, bien a la izquierda o bien a la derecha”. La máquina de Turing puede considerarse como un autómata capaz de reconocer lenguajes formales. En ese sentido es capaz de reconocer los lenguajes recursivamente enumerables, de acuerdo a la jerarquía de Chomsky. Su potencia es, por tanto, superior a otros tipos de autómatas, como el autómata finito, o el autómata con pila, o igual a otros modelos con la misma potencia computacional.

Borrado en una MT

Por definición, al iniciar la operación de la MT, la cabeza lectora está posicionada en el carácter blanco a la izquierda de la palabra de entrada, el cual es el cuadro más a la izquierda de la cinta.

Decimos que en la MT se llega al “final de un cálculo” cuando se alcanza un estado especial llamado halt en el control finito, como resultado de una transición. Representaremos al halt por “h”. 1 Al llegar al halt, se detiene la operación de la MT, y se acepta la palabra de entrada. Ası, en la MT no hay estados finales. En cierto sentido el halt serıa entonces el único estado final, solo que además detiene la ejecución. Cuando queremos que una palabra no sea aceptada, desde luego debemos evitar que la MT llegue al halt. Podemos asegurarnos de ello haciendo que la MT caiga en un ciclo infinito (ver ejemplos adelante).

El lenguaje aceptado por una MT es simplemente el conjunto de palabras aceptadas por ella.

Para más información de las MT se pueden consultar: Definiciones y ejemplos de funcionamiento