Máquinas de Turing o máquinas con cola





We can only see a short distance ahead, but we can see plenty there that needs to be done.— Alan Turing



Ivan Meza

Jerarquía de Chomsky

Lenguaje Gramática Máquina Ejemplo
Dependiente del contexto Tipo 1
($\alpha V \beta \rightarrow \alpha \gamma \beta$)
Autómata lineal con fronteras $ww, a^nb^nc^n$
Independiente del contexto Tipo 2
($V\rightarrow \alpha$)
Autómata de pila $ww^r, a^nb^n$
Regular Tipo 3
($V \rightarrow aA|\epsilon$)
Autómata finito $w, a^*$

Máquinas de Turing

Es una tupla $(Q,\Sigma,\Gamma,q_0,B,A,\delta)$

  • $Q$ conjunto finito de estados
  • $\Sigma$ alfabeto de cadenas reconocidas
  • $\Gamma $ alfabeto de cinta, $\Sigma \subset \Gamma$
  • $q_0$ estado inicial
  • $B$ Símbolo de espacio en blanco $B \in \Gamma$ pero $B \not\in \Sigma$
  • $A$ estados finales
  • $\delta$ función de transición $Q \times \Gamma \rightarrow Q\times\Gamma\times\{der,izq\}$

La cinta

  • Infinita
  • Todo lo que no es entrada tiene un símbolo $B$
  • $[\ldots,B,B,a,a,b,b,B,B,\ldots]$
  • El principio de la cinta es la posición $0$

Autómata lineal con frontera

Es una tupla $(Q,\Sigma,\Gamma,q_0,B,A,\delta)$

  • $Q$ conjunto finito de estados
  • $\Sigma$ alfabeto de cadenas reconocidas
  • $\Gamma $ alfabeto de cinta, $\Sigma \subset \Gamma$
  • $q_0$ estado inicial
  • $B$ Símbolo de espacio en blanco $B \in \Gamma$ pero $B \not\in \Sigma$
  • $A$ estados finales
  • $\delta$ función de transición $Q \times \Gamma\cup \{\lt,\gt\} \rightarrow Q\times\Gamma\cup \{\lt,\gt\}\times\{der,izq\}$

MT con cinta finita

Algoritmos interesantes cuyo requerimiento de memoria crece linearlmente con la entrada

Ejemplo

$a$ $b$ $X$ $Y$ $B$
$q_0$ $(q_1,X,R)$ $(q_3,Y,R)$
$q_1$ $(q_1,a,R)$ $(q_2,Y,L)$ $(q_1,Y,R)$
$q_2$ $(q_2,a,l)$ $(q_0,X,R)$ $(q_2,Y,L)$
$q_3$ $(q_3,Y,R)$ $(q_4,B,R)$
$q_4$

¿Problema, cómo especificar la configuración?

  • AF Estado y símbolo de cadena
  • AP Estado, símbolo de cadena, símbolo pila
  • APDo Estado, símbolo de cadena, símbolo pila uno y símbolo pila dos

¡Cinta!

Recordando

$a$ $b$ $X$ $Y$ $B$
$q_0$ $(q_1,X,R)$ $(q_3,Y,R)$
$q_1$ $(q_1,a,R)$ $(q_2,Y,L)$ $(q_1,Y,R)$
$q_2$ $(q_2,a,l)$ $(q_0,X,R)$ $(q_2,Y,L)$
$q_3$ $(q_3,Y,R)$ $(q_4,B,R)$
$q_4$

Descripción instantáneas

$\delta(q,X_i)=(p,Y,L)$

  • $X_1X_2\ldots X_{i-1}qX_iX_{i+1}\ldots X_n \vdash X_1X_2\ldots X_{i-2}pX_{i-1}YX_{i+1}\ldots X_n $
  • excepción

  • $i=1$,$qX_1X_2\ldots X_n \vdash pBYX_2\ldots X_n $
  • $i=n, Y=B$,$X_1X_2\ldots X_{n-1}qX_n \vdash BX_1X_2\ldots pX_{n-1}$

Descripción instantáneas

$\delta(q,X_i)=(p,Y,R)$

  • $X_1X_2\ldots X_{i-1}qX_iX_{i+1}\ldots X_n \vdash X_1X_2\ldots X_{i-1}YpX_{i+1}\ldots X_n $
  • excepción

  • $i=n$,$X_1X_2\ldots qX_n \vdash X_1X_2\ldots YpB $
  • $i=1, Y=B$,$qX_1X_2\ldots X_n \vdash pX_2\ldots X_{n-1}$
  • $q_0aabb$
  • $\vdash Xq_1abb$
  • $\vdash Xaq_1bb$
  • $\vdash Xq_2aYb$
  • $\vdash q_2XaYb$
  • $\vdash Xq_0aYb$
  • $\vdash XXq_0Yb$
  • $\vdash XXYq_1b$
  • $\vdash XXq_2YY$
  • $\vdash Xq_2XYY$
  • $\vdash XXq_0YY$
  • $\vdash XXYq_3Y$
  • $\vdash XXYYq_3$
  • $\vdash XXYYBq_4B$

El lenguaje aceptado por una máquina de Turing

$L(T)=\{ w\in \Sigma^* | q_0w \vdash^* \alpha p\beta, p\in A \}$

A los lenguajes aceptados por las MT se les conoce como Lenguajes Recursivos Enumerables

$1110$

$1101110$

Relación entre máquinas

  • Sabemos qué es más poderosa que ALF, la cinta no tiene límite
  • Sabemos qué es diferente a AP* y AF*
  • Esta sesión y la siguiente definiremos el poder de la MT

APD para un MT

  • Simular un MT con un APD
  • Simular un APD con una MT

Una APD para una MT

  • Usamos la pila para presentar lo que está a la izquierda o derecha de la descripción instantánea
  • $X_1\ldots X_nqX_{n+1}\ldots X_k $ produce las cintas $ X_n\ldots X_1]\ [X_k\ldots X_{n+1}$
  • Movimientos son equivalentes a un pop en una pila y un push en la otra, en el proceso se re-escribe

Una MT para un APD

  • Se define un marcador para una pila a la izquiera de la cienta, y un segunda a la derecha
  • Se definen funciones que permitan posicionar en los marcadores y hacer push y pops sobre la pila

Autómata de doble pila*

Es una tupla $(Q,\Sigma,\Gamma,q_0,Z_0,A,\delta)$

  • $Q$ conjunto finito de estados
  • $\Sigma$ alfabeto de cadenas reconocidas
  • $\Gamma$ alfabeto de pila
  • $q_0$ estado inicial
  • $Z_0$ símbolo inicial de la pila
  • $A$ estados finales
  • $\delta$ función de transición $Q \times (\Sigma \cup \{\epsilon\}) \times \Gamma \times \Gamma \rightarrow Q\times\Gamma^*\times\Gamma^*$

Un AFND-$\epsilon$ + dos pilas

A partir de ahora, todo lo que definamos para MT se aplica a $APD$

MT varias cintas

Una $M_T$ con varias cintas $M_{kT}$

Para toda $L(M_{kT})$ existe una equivalente $L(M_T)$

Construir una $M_T$ que simule a $M_{kT}$

MT no determinístico

La función de transición $\delta$ regresa un conjunto

Para toda $L(MND_T)$ existe una equivalente $L(M_T)$

Construir una $M_T$ que simule a $MND_{T}$

MT semi-infinitas

La cinta sólo existe hacia al lado derecho

$[a,a,b,b,B,B,\ldots]$

Construir una $M_T$ que simule a $M_{T}$ semi-finita

Autómata con cola

Es una tupla $(Q,\Sigma,\Gamma,q_0,Z_0,A,\delta)$

  • $Q$ conjunto finito de estados
  • $\Sigma$ alfabeto de cadenas reconocidas
  • $\Gamma$ alfabeto de pila
  • $q_0$ estado inicial
  • $Z_0$ símbolo inicial de la cola
  • $A$ estados finales
  • $\delta$ función de transición $Q \times (\Sigma \cup \{\epsilon\}) \times \Gamma \rightarrow Q\times\Gamma^*$

Un AFND-$\epsilon$ + una cola

Simulando una MT

Procesador: automáta finito

Memoria y disco: cinta

Simulando una computadora

Multiples cintas: Memoria, contador de instrucción, dirección de memoria, dispositivo de entrada, auxiliar

Automáta: para ejecutar instruccion, por instruacción

Gramáticas de frase

Son una tupla $G=(V,\Sigma,P,S)$, donde:
  • $V$ es otro alfabeto que denominamos símbolos no terminales (generalmente en mayúsculas)
  • $\Sigma$ es un alfabeto que denominamos símbolos terminales
  • $P$ es conjunto de reglas con la forma $\alpha \rightarrow \beta$ donde $\alpha,\beta \in (\Sigma\cup V)^*$
  • $S\in V$ que denominamos símbolo inicial

A partir de ahora, todo lo que definamos para MT se aplica a $APD$, MT varias cintas, MT no deterministicos, $AC$, computadoras, $GF$

Revisando la MT

o cómo aprendí a amar el determinismo

Lenguajes aceptados

Dada $w$, ¿cúando un AF* acepta a $w$?

  • En el último símbolo de la cadena,
  • Estado final un estado aceptor

¿Cúando no?

  • En el último símbolo de la cadena, ninguno de los estados es aceptor
  • En cualquier símbolo de la cadena, no hay transición

Un pequeño problema

¿En qué situación no podríamos llegar a sí o no?

  • Que se quede trabado, ciclo infinito
  • Transiciones $\epsilon$ al mismo estado, AFND y AFND-$\epsilon$
  • No es problema, lo pasamos a AF o quitamos ciclos

Ufff, nos salvamos de romper nuestra maquinaria: sí o no

Dada $w$, ¿cuándo un AP* acepta a $w$?

  • En el último símbolo de la cadena,
  • Estado final un estado aceptor

¿Cuándo no?

  • En el último símbolo de la cadena, ninguno de los estados es aceptor
  • En cualquier símbolo de la cadena, no hay transición

Mismo problema

  • Que se quede trabado, ciclo infinito
  • Transiciones $\epsilon$ al mismo estado, AP
  • No todos los $L$ tienen un APD, pero podemos quitar ciclos infinitos

Ufff, nos volvimos a salvar de romper nuestra maquinaria: sí o no

Dada $w$, ¿cuándo un ALF acepta a $w$?

  • En el algún símbolo de la cadena... pasamos por un estado aceptor

¿Cuándo no?

  • En cualquier símbolo de la cadena, no hay transición

Un problema mucho más grande!!!!

  • Que se quede trabado, ciclo infinito
  • No solo con transiciones $\epsilon$, sino en la cinta

Uchales, no sé ve por donde!!!!! ¿se rompe la maquinaria?

Que no cunda el pánico!

Dada $w$, ¿cuándo un ALF acepta a $w$?

  • En el algún símbolo de la cadena... pasamos por un estado aceptor

¿Cuándo no?

  • En cualquier símbolo de la cadena, no hay transición
  • Y no se queda en un ciclo infinito ;-)

Eso es trampa....

Hacer un aditamento, que lleve la cuenta de los pasos

... hay un límite máximo de cuando ver a un estado aceptor

  • Ya sucedieron todas las re-escrituras posibles ($k^n$)
  • Ya visité todos estados en todas las posiciones ($n*q$)

Si la cuenta de pasos es mayor a $k^nnq$ parar

Ufff, por poquito de romper nuestra maquinaria: sí o no

Dada $w$, ¿cuándo una MT acepta a $w$?

  • En el algún símbolo de la cadena...
  • aparece un estado final un estado aceptor

¿Cuándo no?

  • En cualquier símbolo de la cadena, no hay transición

Un problemon

  • Que se quede trabado, ciclo infinito
  • No solo con transiciones $\epsilon$, sino en la cinta
  • La cinta no está limitada, no se puede definir un límite

Nuestra maquinaría está rota

¿Tenemos esperanza?

  • ¿Habrá algo diferente a un límite?
  • ¿Podremos poner una máquina que vea a la otra máquina y detecte un ciclo?
  • ¿Podremos analizar nuestra máquina?

La respuesta desafortunada, la siguiente sesión

Lenguaje decidibles

Existe una máquina que lo acepte

Para cualquier $w\in L$ que tienen la secuencia máxima de pasos es finita

El mapa

  • AF*: decidibles
  • AP*: decidibles
  • ALF*: decidibles (exepción $L=\epsilon$)
  • MT: no siempre

El mapa

  • MT: decidibles definen lenguajes recursivos ($L_{Rec}$)
  • MT: aceptables definen lenguajes recursivamente enumerables ($L_{RE}$)
    Hasta ahora pareciera que es un problema de la máquina, en la siguiente sesión demostraremos que un problema de los lenguajes

Jerarquía de Chomsky

Lenguaje Gramática Máquina Ejemplo
$L_{RE}/L_{Rec}$/ Tipo 0
($\alpha \rightarrow \beta$)
Máquina de Turing, APDo, AC ??
$L_{DC}$ Tipo 1
($\alpha V \beta \rightarrow \alpha \gamma \beta$)
Autómata lineal con fronteras $ww, a^nb^nc^n$
$L_{LC}$ Tipo 2
($V\rightarrow \alpha$)
Autómata de pila $ww^r, a^nb^n$
$L_{reg}$ Tipo 3
($V \rightarrow aA|\epsilon$)
Autómata finito $w, a^*$
Licencia de Creative Commons
Máquinas de Turing o máquinas con cola by Ivan V. Meza Ruiz is licensed under a Creative Commons Reconocimiento 4.0 Internacional License.
Creado a partir de la obra en http://turing.iimas.unam.mx/~ivanvladimir/slides/lfya/mt.html.