Máquina de Turing


Máquina de Turing
Para otros usos de este término, véase Turing (desambiguación).

Una máquina de Turing (MT) es un modelo computacional que realiza una lectura/escritura de manera automática sobre una entrada llamada cinta, generando una salida en esta misma.

Este modelo está formado por un alfabeto de entrada y uno de salida, un símbolo especial llamado blanco (normalmente b, Δ o 0), un conjunto de estados finitos y un conjunto de transiciones entre dichos estados. Su funcionamiento se basa en una función de transición, que recibe un estado inicial y una cadena de caracteres (la cinta, la cual puede ser infinita) pertenecientes al alfabeto de entrada. La máquina va leyendo una celda de la cinta en cada paso, borrando el símbolo en el que se encuentra posicionado su cabezal y escribiendo un nuevo símbolo perteneciente al alfabeto de salida, para luego desplazar el cabezal a la izquierda o a la derecha (solo una celda a la vez). Esto se repite según se indique en la función de transición, para finalmente detenerse en un estado final o de aceptación, representando así la salida.

Contenido

Historia

Representación artística de una máquina de Turing.

Alan Turing introdujo el concepto de máquina de Turing en el trabajo On computable numbers, with an application to the Entscheidungsproblem, publicado por la Sociedad Matemática de Londres en 1936, en el que se estudiaba la cuestión planteada por David Hilbert sobre si las matemáticas son decidibles, es decir, si hay un método definido que pueda aplicarse a cualquier sentencia matemática y que nos diga si esa sentencia es cierta o no. Turing ideó un modelo formal de computador, la máquina de Turing, y demostró que existían problemas que una máquina no podía resolver.

Con este aparato extremadamente sencillo es posible realizar cualquier cómputo que un computador digital sea capaz de realizar.

Mediante este modelo teórico y el análisis de la complejidad de los algoritmos, fue posible la categorización de problemas computacionales de acuerdo a su comportamiento, apareciendo así, el conjunto de problemas denominados P y NP, cuyas soluciones pueden encontrarse en tiempo polinómico por máquinas de Turing deterministas y no deterministas, respectivamente.

Precisamente, la tesis de Church-Turing formulada por Alan Turing y Alonzo Church, de forma independiente a mediados del siglo XX caracteriza la noción informal de computabilidad con la computación mediante una máquina de Turing.[1]

La idea subyacente es el concepto de que una máquina de Turing puede verse como un autómata ejecutando un procedimiento efectivo definido formalmente, donde el espacio de memoria de trabajo es ilimitado, pero en un momento determinado sólo una parte finita es accesible.

Definición formal

Una máquina de Turing con una sola cinta puede definirse como una 7-tupla

M=(Q, \Sigma, \Gamma, s, b, F, \delta),\!

donde:[2]

  • Q\! es un conjunto finito de estados.
  • \Sigma\! es un conjunto finito de símbolos distinto del espacio en blanco, denominado alfabeto de máquina o de entrada.
  • \Gamma\! es un conjunto finito de símbolos de cinta, denominado alfabeto de cinta (\Sigma \subseteq\Gamma).
  • s \in Q es el estado inicial.
  • b \in \Gamma es un símbolo denominado blanco, y es el único símbolo que se puede repetir un número infinito de veces.
  • F \subseteq Q es el conjunto de estados finales de aceptación.
  • \delta: Q \times \Gamma \rightarrow Q \times \Gamma \times \{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.
    Visualización de una máquina de Turing, en la que se ve el cabezal y la cinta que se lee.
  • 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) \rightarrow (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 escribir en la cinta.

La memoria es la cinta de la máquina que 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.

Representación como diagrama de estados

Las maquinas de Turing pueden representarse mediante grafos particulares, también llamados diagramas de estados finitos, de la siguiente manera:

Esta máquina de Turing está definida sobre el alfabeto Σ = {a,b,c}, posee el conjunto de estados Q = {qo,q1,q2,q3,q4,q5,q6}, con las transiciones que se pueden ver. Su estado inicial es q0 y el estado final es q2, el lenguaje de salida
Γ = {X,Y,Z,B} siendo B el símbolo denominado "blanco". Esta máquina reconoce la expresión regular de la forma anbncn con n > = 0.
  • Los estados se representan como vértices, etiquetados con su nombre en el interior.
  • Una transición desde un estado a otro, se representa mediante una arista dirigida que une a estos vértices, y esta rotulada por símbolo que lee el cabezal/símbolo que escribirá el cabezal, movimiento del cabezal.
  • El estado inicial se caracteriza por tener una arista que llega a él y que no proviene de ningún otro vértice.
  • El o los estados finales se representan mediante vértices que están encerrados a su vez por otra circunferencia.

Descripción instantánea

Es una secuencia de la forma \alpha_1q\alpha_2\! donde \alpha_1,\alpha_2 \in \Gamma^* y q \in Q que escribe el estado de una MT. La cinta contiene la cadena \alpha_1\alpha_2\! seguida de infinitos blancos. El cabezal señala el primer símbolo de \alpha_2\!.

Por ejemplo, para la máquina de Turing

MT=(\{p,q\},\{0,1\},\{0,1,x\}, \delta,p,\Delta,\{q\}),\!

con las transiciones


\begin{align}
\delta(p,1) &= (p,x,D),\\
\delta(p,0) &= (p,0,D) \text{ y}\\
\delta(p,\Delta) &= (q,\Delta,D).
\end{align}

La descripción instantánea para la cinta 1011 es:

p1011\Delta\Delta\ldots
xp011\Delta\Delta\ldots
x0p11\Delta\Delta\ldots
x0xp1\Delta\Delta\ldots
x0xxp\Delta\Delta\ldots
x0xxq\Delta\Delta\ldots

Ejemplo

Definimos una máquina de Turing sobre el alfabeto {0,1}, donde 0 representa el símbolo blanco. La máquina comenzará su proceso situada sobre un símbolo "1" de una serie. La máquina de Turing copiará el número de símbolos "1" que encuentre hasta el primer blanco detrás de dicho símbolo blanco. Es decir, posicionad el cabezal sobre el 1 situado en el extremo izquierdo, doblará el número de símbolos 1, con un 0 en medio. Así, si tenemos la entrada "111" devolverá "1110111", con "1111" devolverá "111101111", y sucesivamente.

El conjunto de estados es \{s_1, s_2, s_3, s_4, s_5\}\! y el estado inicial es s_1\!. La tabla que describe la función de transición es la siguiente:

Estado Símbolo leído Símbolo escrito Mov. Estado sig.
s_1 \,\! 1 0 R \,\! s_2 \,\!
s_2 \,\! 1 1 R \,\! s_2 \,\!
s_2 \,\! 0 0 R \,\! s_3 \,\!
s_3 \,\! 0 1 L \,\! s_4 \,\!
s_3 \,\! 1 1 R \,\! s_3 \,\!
s_4 \,\! 1 1 L \,\! s_4 \,\!
s_4 \,\! 0 0 L \,\! s_5 \,\!
s_5 \,\! 1 1 L \,\! s_5 \,\!
s_5 \,\! 0 1 R \,\! s_1 \,\!

El funcionamiento de una computación de esta máquina puede mostrarse con el siguiente ejemplo (en negrita se resalta la posición de la cabeza lectora/escritora):

Paso Estado Cinta
1 s_1 \,\! 11
2 s_2 \,\! 01
3 s_2 \,\! 010
4 s_3 \,\! 0100
5 s_4 \,\! 0101
6 s_5 \,\! 0101
7 s_5 \,\! 0101
8 s_1 \,\! 1101
9 s_2 \,\! 1001
10 s_3 \,\! 1001
11 s_3 \,\! 10010
12 s_4 \,\! 10011
13 s_4 \,\! 10011
14 s_5 \,\! 10011
15 s_1 \,\! 11011
Parada

La máquina realiza su proceso por medio de un bucle, en el estado inicial s_1\!, reemplaza el primer 1 con un 0, y pasa al estado s_2\!, con el que avanza hacia la derecha, saltando los símbolos 1 hasta un 0 (que debe existir), cuando lo encuentra pasa al estado s_3\!, con este estado avanza saltando los 1 hasta encontrar otro 0 (la primera vez no habrá ningún 1). Una vez en el extremo derecho, añade un 1. Después comienza el proceso de retorno; con s_4\! vuelve a la izquierda saltando los 1, cuando encuentra un 0 (en el medio de la secuencia), pasa a s_5\! que continúa a la izquierda saltando los 1 hasta el 0 que se escribió al principio. Se reemplaza de nuevo este 0 por 1, y pasa al símbolo siguiente, si es un 1, se pasa a otra iteración del bucle, pasando al estado s1 de nuevo. Si es un símbolo 0, será el símbolo central, con lo que la máquina se detiene al haber finalizado el cómputo.

Modificaciones equivalentes

Una razón para aceptar la máquina de Turing como un modelo general de cómputo es que el modelo que hemos definido anteriormente es equivalente a muchas versiones modificadas que en principio pareciera incrementar el poder computacional.

Máquina de Turing con movimiento stay o "esperar"

La función de transición de la MT sencilla esta definida por

\delta: Q \times \Gamma \rightarrow Q \times \Gamma \times  \{L, R\},

la cual puede ser modificada como

\delta: Q \times \Gamma \rightarrow Q \times \Gamma \times \{L, R, S\}.

Donde S\! significa "permanecer" o "esperar", es decir no mover el cabezal de lectura/escritura. Por lo tanto, \delta(q, \sigma) = (p, \sigma', S)\! significa que se pasa del estado q al p, se escribe σ' en la celda actual y la cabeza se queda sobre la celda actual.

Máquina de Turing con cinta infinita a ambos lados

Máquina de Turing con cinta infinita a ambos lados

Esta modificación se denota al igual que una MT sencilla, lo que la hace diferente es que la cinta es infinita tanto por la derecha como por la izquierda, lo cual permite realizar transiciones iniciales como \delta(q_0, x) = (q_1, y, L)\!.

Máquina de Turing con cinta multipista

Subdivisión de una celda de la cinta.

Es aquella que mediante la cual cada celda de la cinta de una máquina sencilla se divide en subceldas. Cada celda es así capaz de contener varios símbolos de la cinta. Por ejemplo, la cinta de la figura 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. 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. Cabe mencionar que posee un solo cabezal al igual que una MT sencilla.

Máquina de Turing multicinta

Diagrama de una máquina de Turing multicinta, las flechas indican los cabezales de lectura/escritura.

Una MT con más de una cinta consiste de un control finito con k cabezales lectores/escritores y k cintas. Cada cinta es infinita en ambos sentidos. La MT define su movimiento dependiendo del símbolo que está leyendo cada uno de sus cabezales, da reglas de sustitución para cada uno de los símbolos y dirección de movimiento para cada uno de los cabezales. Inicialmente la MT empieza con la entrada en la primera cinta y el resto de las cintas en blanco.

Máquina de Turing multidimensional

Diagrama de una máquina de Turing bidimensional.

Una MT multidimensional es aquella cuya cinta puede verse como extendiéndose infinitamente en más de una dirección, el ejemplo más básico sería el de una máquina bidimensional cuya cinta se extendería infinitamente hacia arriba, abajo, derecha e izquierda.

En la modificación bidimensional de MT que se muestra en la figura también se agregan dos nuevos movimientos del cabezal {U,D} (es decir arriba y abajo). De esta forma la definición de los movimientos que realiza el cabezal será {L,R,U,D}.

Máquina de Turing determinista y no determinista

Véase también: Complejidad computacional

La entrada de una máquina de Turing viene determinada por el estado actual y el símbolo leído, un par (estado, símbolo), siendo el cambio de estado, la escritura de un nuevo símbolo y el movimiento del cabezal, las acciones a tomar en función de una entrada. En el caso de que para cada par (estado, símbolo) posible exista a lo sumo una posibilidad de ejecución, se dirá que es una máquina de Turing determinista, mientras que en el caso de que exista al menos un par (estado, símbolo) con más de una posible combinación de actuaciones se dirá que se trata de una máquina de Turing no determinista.

La función de transición δ en el caso no determinista, queda definida como sigue:

\delta: Q \times \Gamma \rightarrow 	\mathcal{P}(Q \times \Gamma \times \{L,R\})

¿Cómo sabe una máquina no determinista qué acción tomar de las varias posibles? Hay dos formas de verlo: una es decir que la máquina es "el mejor adivino posible", esto es, que siempre elige la transición que finalmente la llevará a un estado final de aceptación. La otra es imaginarse que la máquina se "clona", bifurcándose en varias copias, cada una de las cuales sigue una de las posibles transiciones. Mientras que una máquina determinista sigue un único "camino computacional", una máquina no determinista tiene un "árbol computacional". Si cualquiera de las ramas del árbol finaliza en un estado de aceptación, se dice que la máquina acepta la entrada.

La capacidad de cómputo de ambas versiones es equivalente; se puede demostrar que dada una máquina de Turing no determinista existe otra máquina de Turing determinista equivalente, en el sentido de que reconoce el mismo lenguaje, y viceversa. No obstante, la velocidad de ejecución de ambos formalismos no es la misma, pues si una máquina no determinista M reconoce una cierta palabra de tamaño n en un tiempo O(t(n))\!, la máquina determinista equivalente reconocerá la palabra en un tiempo  O(2 ^{t(n)})\!. Es decir, el no determinismo permitirá reducir la complejidad de la solución de los problemas, permitiendo resolver, por ejemplo, problemas de complejidad exponencial en un tiempo polinómico.

Problema de la parada (halting problem)

Véase también: Problema de la parada

El problema de la parada o problema de la detención (halting problem en inglés) para máquinas de Turing consiste en: dada una MT M y una palabra w, determinar si M terminará en un número finito de pasos cuando se ejecuta usando w como entrada.

Alan Turing, en su famoso artículo "On computable numbers, with an application to the Entscheidungsproblem" (1936), demostró que el problema de la parada de la máquina de Turing es indecidible, en el sentido de que ninguna máquina de Turing lo puede resolver.

Codificación de una máquina de Turing

Toda máquina de Turing puede codificarse como una secuencia binaria finita, es decir una secuencia finita de ceros y unos. Para simplificar la codificación, suponemos que toda MT tiene un único estado inicial denotado por q_1\!, y un único estado final denotado q_2\!. Tendremos que para una MT M de la forma

  • \Gamma=\{s_1,s_2,\ldots,s_m,\ldots,s_p\}\! donde s1 representa el símbolo blanco 0, Δ o b (según se desee denotar),
  • \Sigma=\{s_2, \ldots, s_m\}\! es alfabeto de entrada y
  • \{s_{m+1}, \ldots, s_p\}\! son los símbolos auxiliares utilizados por M (cada MT utiliza su propia colección finito de símbolos auxiliares).

Todos estos símbolos se codifican como secuencias de unos:

Símbolo Codificación
s1 1
s2 11
s3 111
.
.
.
.
.
.
sm 1m
sp 1p

Los estados de una MT q_1,q_2,q_3,\ldots,q_n\! se codifican también con secuencias de unos:

Símbolo Codificación
q1(inicial) 1
q2(final) 11
.
.
.
.
.
.
qn 1n

Las directrices de desplazamiento R\!, L\! y S\! se codifican con 1, 11, 111, respectivamente. Una transición \delta(q, a) = (p, c, R)\! se codifica usando ceros como separadores entre los estados, los símbolos del alfabeto de cinta y la directriz de desplazamiento R\!. Así, la transición \delta(q_3, s_2) = (q_5,s_3, R)\! se codifica como

01110110111110111010.\!

En general, la codificación de una transición cualquiera \delta(q_i, s_k) = (q_j,s_t, R)\! es

01^{i}01^{k}01^{j}01^{l}01^{t},\!

donde t\in\{1,2,3\}\!, según la dirección sea derecha(R),\ izquierda(L),\ esperar(S).

Una MT se codifica escribiendo consecutivamente las secuencias de las modificaciones de todas sus transiciones. Más precisamente, la codificación de una MT M es de la forma C_1C_2\ldots C_i\!, donde C_i\! es la codificación de la i-ésima transición de M. Puesto que el orden en que se representen las transiciones de una MT no es relevante, una misma MT tiene varias codificaciones diferentes. Esto no representa ninguna desventaja práctica o conceptual ya que no se pretende que las codificaciones sean únicas.

Máquina universal de Turing

Una máquina de Turing computa una determinada función parcial de carácter definido y unívoca, definida sobre las secuencias de posibles cadenas de símbolos de su alfabeto. En este sentido se puede considerar como equivalente a un programa de ordenador, o a un algoritmo. Sin embargo es posible realizar una codificación de la tabla que representa a una máquina de Turing, a su vez, como una secuencia de símbolos en un determinado alfabeto; por ello, podemos construir una máquina de Turing que acepte como entrada la tabla que representa a otra máquina de Turing, y, de esta manera, simule su comportamiento.

En 1947, Turing indicó:

Se puede demostrar que es posible construir una máquina especial de este tipo que pueda realizar el trabajo de todas las demás. Esta máquina especial puede ser denominada máquina universal.

Esta fue, posiblemente, la idea germinal del concepto de sistema operativo, un programa que puede, a su vez, ejecutar, en el sentido de controlar otros programas, demostrando su existencia, y abriendo camino para su construcción real.[cita requerida]

Con esta codificación de tablas como cadenas, se abre la posibilidad de que unas máquinas de Turing se comporten como otras máquinas de Turing. Sin embargo, muchas de sus posibilidades son indecidibles, pues no admiten una solución algorítmica. Por ejemplo, un problema interesante es determinar si una máquina de Turing cualquiera se parará en un tiempo finito sobre una determinada entrada; problema conocido como problema de la parada, y que Turing demostró que era indecidible. En general, se puede demostrar que cualquier cuestión no trivial sobre el comportamiento o la salida de una máquina de Turing es un problema indecidible.

Máquina de Turing cuántica

Ilustración de una máquina de Turing cuántica.

En 1985, Deutsch presentó el diseño de la primera Máquina cuántica basada en una máquina de Turing. Con este fin enunció una nueva variante la tesis de Church-Turing dando lugar al denominado "principio de Church-Turing-Deutsch".

La estructura de una máquina de Turing cuántica es muy similar a la de una máquina de Turing clásica. Está compuesta por los tres elementos clásicos:

  • una cinta de memoria infinita en donde cada elemento es un qubit,
  • un procesador finito y
  • un cabezal.

El procesador contiene el juego de instrucciones que se aplica sobre el elemento de la cinta señalado por el cabezal. El resultado dependerá del qubit de la cinta y del estado del procesador. El procesador ejecuta una instrucción por unidad de tiempo.

La cinta de memoria es similar a la de una máquina de Turing tradicional. La única diferencia es que cada elemento de la cinta de la máquina cuántica es un qubit. El alfabeto de esta nueva máquina está formado por el espacio de valores del qubit. La posición del cabezal se representa con una variable entera.

Véase también

Enlaces externos

Referencias

Notas al pie

  1. Gómez de Silva Garza, Gómez de Silva Garza (2008) (en español). Introducción a la computación.  pp. 522. 
  2. Pérez, Iván (2005) (en español). Lenguaje y Compiladores.  pp. 137. 

Bibliografía


Wikimedia foundation. 2010.

Mira otros diccionarios:

  • Máquina de Turing — La máquina de Turing es un modelo computacional creado por Alan Turing con el cual él afirmaba que se podía realizar cualquier cómputo. La máquina de Turing, como modelo matemático, consta de un cabezal lector/escritor y una cinta infinita en la… …   Enciclopedia Universal

  • Máquina de Turing probabilística — En Teoría de la complejidad computacional, se utilizan Máquinas de Turing probabilísticas para definir diferentes clases de complejidad. Una Máquina de Turing probabilística es una Máquina de Turing, en concreto de la forma no determinista, que… …   Wikipedia Español

  • Máquina de Turing probabilística — En Teoría de la complejidad computacional, se utilizan Máquinas de Turing probabilísticas para definir diferentes clases de complejidad. Una Máquina de Turing probabilística es una Máquina de Turing no determinista que selecciona aleatoriamente… …   Enciclopedia Universal

  • Turing (desambiguación) — Turing puede referirse a: Alan Turing. Fue un matemático, informático teórico, criptógrafo y filósofo inglés. Es considerado uno de los padres de la Ciencia de la computación siendo el precursor de la informática moderna. Test de Turing. Es una… …   Wikipedia Español

  • Máquina de registro — En lógica matemática y en ciencias de la computación teórica, una máquina de registro es una clase genérica de máquinas abstractas usadas en una manera similar a una máquina de Turing. Todos los modelos son Turing equivalente. Contenido 1… …   Wikipedia Español

  • Máquina oracle — Este artículo o sección necesita referencias que aparezcan en una publicación acreditada, como revistas especializadas, monografías, prensa diaria o páginas de Internet fidedignas. Puedes añadirlas así o avisar …   Wikipedia Español

  • Máquina de pila — Una máquina de pila es un modelo computacional en el cual la memoria de la computadora toma la forma de una o más pilas. El término también se refiere a un computador real implementando o simulando una máquina de pila idealizada. Adicionalmente,… …   Wikipedia Español

  • Máquina — (Del lat. machina < gr. dórico makhana , invención ingeniosa.) ► sustantivo femenino 1 MECÁNICA, TECNOLOGÍA Conjunto de piezas o de aparatos que se mueven de modo coordinado para transformar una energía en otra o en un trabajo determinado.… …   Enciclopedia Universal

  • Turing — (as used in expressions) Turing, Alan (Mathison) Turing, máquina de Turing, test de …   Enciclopedia Universal

  • Turing, Alan (Mathison) — (23 jun. 1912, Londres, Inglaterra–7 jun. 1954, Wilmslow, Cheshire). Matemático y dialéctico inglés. Estudió en la Universidad de Cambridge y en el Instituto para estudios avanzados de Princeton. En su artículo elemental de 1936 On Computable… …   Enciclopedia Universal


Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.