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^*$ |