Algoritmos y Estructuras de Datos Compiladores e Intérpretes Herramientas Lenguaje de programación
!Prog C/C++
Linux Matemáticas
Mates Discretas
Programación Orientada a Objetos Redes y Computación Distribuida Sistemas Operativos

Máquinas de Turing

[date: 13-01-2025] [last modification: 14-01-2025]
[words: 2326] [reading time: 11min] [size: 18931 bytes]

Definición de una máquina de Turing y algunas de sus variaciones. Demostración de que dichas variaciones son equivalentes a la máquina de Turing estándar. Máquina de Turing Universal. Computación de funciones y la tesis de Church-Turing. Autómatas Linealmente Acotados.

Máquina de Turing (MT)

Máquina de Turing

Una Máquina de Turing (MT) es un autómata que cuenta con un dispositivo de almacenamiento denominado cinta.

Asociada con la cinta, existe una cabeza de lectura/escritura capaz de interpretar y manipular los símbolos de la cinta.

En una Máquina de Turing:

$$ M = (Q, \Sigma, \Gamma, \delta, q_0, B, F) $$

==> $\Sigma \subseteq \Gamma - \set{B}$ el alfabeto de entrada es un subconjunto del alfabeto de la cinta sin el espacio en blanco.

Más concretamente, la función de transición $\delta$:

$$ \delta : Q \times \Gamma \to Q \times \Gamma \times \set{L, R} \\ \delta(q, a) = (p, b, R) $$

La máquina de Turing puede realizar las siguientes acciones:

Por tanto, la representación de las transiciones sobre el diagrama tiene este formato:

simbolo_cinta : escritura_cinta, L/R

La máquina terminará el procesamiento cuando llega a un estado de parada.

==> No es necesario leer todo el contenido para aceptar. En cambio, los AF y los AP sí requieren de leer toda la entrada.

Nótese que la máquina de Turing no solo está limitada a aceptar cadenas de un lenguaje, sino que también puede realizar computaciones y dejar el resultado sobre la cinta.

Descripción instantánea

Para mostrar el estado de un determinado momento de una MT, es necesario:

Entonces, para $M = (Q, \Sigma, \Gamma, \delta, q_0, B, F)$ una descripción instantánea:

$$ a_1 \ldots a_{k-1} q_1 a_k \ldots a_n $$

Con los $a_i$ representando la cinta ($a_i \in \Gamma$) y $q_1$ siendo el estado actual y denotando la posición de la cabeza ($q_1 \in Q$). El símbolo sobre el que se encuentra la cabeza, se representa justo a la derecha de dicho estado $q_1$.

Entonces, volviendo a lo que se comentó en el apartado anterior, $M$ termina su ejecución partiendo de $x_1 q_i x_2$, si para algún $\delta(q_j, a)$ no definido:

$$ x_1 q_i x_2 \vdash^{*} y_1 q_j a y_2 $$

Máquina de Turing y Lenguajes

$$ L(M) = \set{w \in \Sigma^+ / q_0 w \vdash^* x_1 q_f x_2, \enspace q_f \in F, x_1,x_2 \in \Gamma^*} $$

Una máquina de Turing acepta las cadenas en las que su ejecución termina en un estado final: este conjunto de cadenas determina un lenguaje. Pero si se le proporciona una cadena que no reconoce, esto es $w \notin L(M)$:

Computación de funciones

Turing-Computable

Una función $f$ con dominio $D$ es Turing-computable o computable sin más, si existe una MT $M$ de forma que:

$$ q_0 w \vdash^* q_f f(w) $$

Siendo $q_f$ un estado final ($q_f \in F$) para cualquiera $w$ del dominio ($\forall w \in D$).

Teorema
Todas las funciones matemáticas comunes, no importa lo complejas que sean, son Turing-computables.

Ejemplos:

Combinación de máquinas de Turing

Si podemos computar una función $f(x)$, nada impide computar $f(g(x))$, y muchas otras combinaciones más complicadas.

Ejemplo:

$$ f(x, y) = \begin{cases} x + y & \text{ si } x \ge y \\ 0 & \text{ si } x < y \\ \end{cases} $$

Tesis de Church-Turing

Tesis de Church-Turing
Hipótesis: cualquier problema de decisión resoluble puede ser transformado en un problema equivalente para una MT.

Argumentos:

Con estos argumentos, lo más probable es que la tesis sea cierta, aún así no ha sido probada. Usando esta tesis, podemos sustituir en la defición “MT” por “programa en C”, “programa en Java”, etc.

Definición de algoritmo

Un algoritmo para cualquier función $f: D \to R$ es una MT, la cual dada cualquier entrada $d \in D$ en su cinta, finalmente se para con la respuesta correcta $f(d) \in R$ en la cinta:

$$ q_0 d \vdash^* q_f f(d)$$

Siendo $q_f$ un estado final de la MT ($q_f \in F$) y para cualquier valor del dominio ($\forall d \in D$).

Otros modelos de máquinas de Turing

Se han propuesto otros modelos de máquinas de Turing con pequeñas variaciones:

Modelos con almacenamiento más complejo:

Otras variaciones:

Se puede demostrar que todas ellas pueden ser simuladas en una MT estándar y por tanto son todas equivalentes.

MT con opción de no-movimiento

$$ \delta: Q \times \Gamma \to Q \times \Gamma \times \set{L, S, R} $$

Esencialmente, además de moverse a la derecha o a la izquierda, se añade la posibilidad de mantener la cabeza en la posición actual.

Teorema
La clase de MT con opción de no-movimiento es equivalente a la clase MT estándar.

Simulación de una MT con opción de no-movimiento ($\delta$) con una MT ($\delta’$):

MT con cinta semi-infinita

Se trata de una MT cuya cinta está limitada en un extremo.

Para simular una MT estándar $M$ por medio de una MT con cinta semi-infinita $P$, se considera una cinta $P$ con dos pistas. La idea es utilizar una de ellas cuando la máquina se mueve hacia $+\infty$ y la otra hacia $-\infty$:

Los estados de $P$ se dividen en dos conjuntos: un conjunto trabaja con la pista superior y otro con la inferior. Unos marcadores especiales (como #) en el extremo izquierdo permiten detectar el final de cada pista y cambiar a la otra.

MT con cinta de entrada

La entrada está escrita en una cinta aparte de sólo lectura.

Sin embargo, nos interesa simular la MT con cinta de entrada ($M_1$) en una MT estándar ($M_2$):

MT multicinta

$$ \delta: Q \times \Gamma^n \to Q \times \Gamma^n \times \set{L, R}^n $$

Básicamente tenemos $n$ cintas independientes (no pistas) sobre las que la máquina puede operar.

Para simular el comportamiento de una MT multicinta $M_1$ su comportamiento en una MT estándar $M_2$, se utiliza una técnica similar a la del apartado anterior: $M_2$ tiene $2n$ pistas:

MT multidimensional

En este tipo de MT, se considera que la cinta es infinita en más de una dirección, por lo que los movimientos permitidos son izquierda ($L$), derecha ($R$), arriba ($U$), abajo ($D$) y otros (dependiendo del número de dimensiones). Por ejemplo, para una MT bidimensional:

$$ \delta: Q \times \Gamma \to Q \Gamma \times \set{L, R, U, D} $$

Simulación de una MT bidimensional con una MT estándar: una cinta con dos pistas:

Este método se puede expandir fácilmente a cualquier número de dimensiones.

MT no determinista

$$ \delta: Q \times \Gamma \to 2^{Q \times \Gamma \times \set{L, R}} \\ \delta(q, a) = \set{(p_1, b, R), (p_2, c, L)} $$

Una MT no determinista puede verse como una MT que puede replicarse a sí misma cuando sea necesario: por cada posible transición se crea una réplica.

Simulación de una MT no determinista con una MT estándar:

MT universal (MTU)

Descripción de una MT:

Codificación de una MT:

==> Cualquier MT puede ser codificada por 0s y 1s. Por ejemplo, la transición $\delta(q_1, a_2) = (q_2, a_3, L)$ se codifica como:

$$ 10110110111010 $$

Funcionamiento de una MTU:

Una MT, dado cualquier programa, puede realizar las computaciones especificadas y es, por tanto, un modelo adecuado de una computadora de propósito general.

Autómatas Linealmente Acotados (ATA)

Autómata Linealmente Acotado (ATA)

Un ALA es un MT determinista $M$ con la restricción de que su alfabeto de entrada $\Sigma$ debe contener dos símbolos especiales:

  • ]: marcador izquierdo, con transiciones del tipo $\delta(q_i, ]) = (q_j, ], R)$
  • [: marcador derecho, con transiciones del tipo $\delta(q_i, [) = (q_j, [, L)$
$$ L(M) = \set{w \in \Sigma^+ | \enspace q_0[w] \vdash^* [x_1 q_f x_2], \enspace q_f \in F, \; x_1, x_2 \in \Gamma^* } $$

Restricciones en el uso de la cinta:

Los ALA son más potentes que los AP pero menos que las MT.

Anterior: Autómatas de Pila Volver a Compiladores e Intérpretes Siguiente: Decidibilidad y Complejidad