Es una tupla $(Q,\Sigma,\Gamma,q_0,B,A,\delta)$
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^*$ |
Las máquinas que al pasar por un estado final terminan aceptando la cadena, otras que no tienen una transición y rechazan la cadena, pero de vez en cuando se pueden quedar en un ciclo
Si la cadena debe ser aceptada por la MT, eventualmente llegará al estado aceptor; si la cadena debe ser rechazada puede llegué a una transición inexistente o se quede en un ciclo.
Las autómatas finitos, autómatas de pilas, autómatas con frontera lineal, son máquinas aceptoras: verdadero o falso
Entonces las MT contienen máquinas aceptoras
$\delta (q_i ,X_j ) = (q_k,X_l,D_m)$
Con $q_1=1, q_2=2, q_3=3; 0=1, 1=2, B=3; L=1, R=2$
01001000101001100010101001001100010010010100110001000100010010
It is possible to invent a single machine which can be used to compute any computable sequence. If this machine $U$ is supplied with a tape on the beginning of which is written the S.D ["standard description" of an action table] of some computing machine $M$, then $U$ will compute the same sequence as $M$.
Turing, 1936
Es posible inventar una máquina que pueda ser usada para computar cualquier secuencia computable. Si esta máquina $U$ se le provee con una cinta en la que al principio se le escribe la descripción estándar de una tabla de acción de alguna máquina $M$, entonces $U$ computará la misma secuencia que $M$
$M_u$
$L_u=\{ mw | w\in L(M)\}$
El lenguaje máquinas y cadenas dónde la máquina acepta a la cadena
Por el momento, haremos la hipótesis que $M_u$ es recursivo/decidible
Realización, una MT es una cadena
Como cadena se podía presentar a una máquina de Turing universal
Las máquinas de Turing que se aceptan a si mismas
$L_\bar{d}=\{ m | m\in L(M)\}$
Las máquinas en realidad son un número, como número las podemos ordenar
Ordenadas, cada una corresponde a un número entero
Entonces,...
$m_0$ | $m_1$ | $m_2$ | $m_3$ | $m_4$ | $\ldots$ | |
---|---|---|---|---|---|---|
$M_0$ | T | F | F | T | F | $\ldots$ |
$M_1$ | F | F | F | F | F | $\ldots$ |
$M_2$ | T | T | T | T | T | $\ldots$ |
$M_3$ | F | T | F | F | F | $\ldots$ |
$M_4$ | T | F | T | F | F | $\ldots$ |
$\ldots$ | $\ldots$ | $\ldots$ | $\ldots$ | $\ldots$ | $\ldots$ | $\ldots$ |
$m_0$ | $m_1$ | $m_2$ | $m_3$ | $m_4$ | $\ldots$ | |
---|---|---|---|---|---|---|
$M_0$ | T | F | F | T | F | $\ldots$ |
$M_1$ | F | F | F | F | F | $\ldots$ |
$M_2$ | T | T | T | T | T | $\ldots$ |
$M_3$ | F | T | F | F | F | $\ldots$ |
$M_4$ | T | F | T | F | F | $\ldots$ |
$\ldots$ | $\ldots$ | $\ldots$ | $\ldots$ | $\ldots$ | $\ldots$ | $\ldots$ |
$\bar{M_d}$ | $T$ | $F$ | $T$ | $F$ | $F$ | $\ldots$ |
---|
$m_0$ | $m_1$ | $m_2$ | $m_3$ | $m_4$ | $\ldots$ | |
---|---|---|---|---|---|---|
$M_0$ | F | F | F | T | F | $\ldots$ |
$M_1$ | F | T | F | F | F | $\ldots$ |
$M_2$ | T | T | F | T | T | $\ldots$ |
$M_3$ | F | T | F | T | F | $\ldots$ |
$M_4$ | T | F | T | F | T | $\ldots$ |
$\ldots$ | $\ldots$ | $\ldots$ | $\ldots$ | $\ldots$ | $\ldots$ | $\ldots$ |
$M_d$ | $F$ | $T$ | $F$ | $T$ | $T$ | $\ldots$ |
---|
El lenguaje de las máquinas que no se aceptan a si mismas $L_d=\{m | m \not \in L(M)\}$
Si es RE o Rec existe una máquina de Turing, $M_d$, ¿qué pasa con su descripción $m_d$?
Si $m_d \in L_d$, quiere decir que no se acepta a si misma, pero para eso $M_d$ tendría que aceptarla, que la hace una máquina que se acepta a si misma, contradicción
Si $m_d \not \in L_d$, quiere decir que se acepta a si misma, pero para eso $M_d$ no tendría que aceptarla, que la hace una máquina que no se acepta a si misma, contradicción
Lenguaje | Gramática | Máquina | Ejemplo |
---|---|---|---|
No RE | -- | -- | $L_d$ |
$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^*$ |
Lenguajes aceptados por máquinas aceptoras: recusivos o decidibles
¿Las máquinas de Turing son las máquinas aceptoras?
Sabemos que las máquinas Turing tiene un límite
Complemento de todos los recursivos son recursivo
$L_u=\{ mw | w \in L(m)\}$
¿Si pasamos nuestra numeración de $MT_i$?
Si $L_u$ es recursivo, su complemento también...
¿Si pasamos nuestra numeración de $MT_i$?
¡Aceptaría $L_d$! ¡No es posible! por lo tanto $L_u$ tiene algo raro
Lenguaje | Gramática | Máquina | Ejemplo |
---|---|---|---|
No RE | -- | -- | $L_d$ |
$L_{RE}/L_{Rec}$ | Tipo 0 ($\alpha \rightarrow \beta$) | Máquina de Turing, APDo, AC | $L_u$/ |
$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^*$ |
Sabemos que hay MT que son decidibles: verdadero y falso
Sabemos que hay problemas para los cuales no existe MT, $L_d$
Sabemos que hay MT que no son decidibles: verdadero, falso y ciclo
Ante problemas muy, muy difíciles, no sabemos si sigue procesando o está en un loop infinito
De un conjunto de números enteros de tamaño $N$ ¿existe una combinación del subconjuntos de ellos que sume $C$?
¿Cómo se diseña la MT?
Hecho de la computación: los loops son básicos en la computación
Pero nos meten en problemas rápidamente
El lenguaje de las máquinas y cadenas que se aceptan en $n$ pasos
$L_n=\{mw | w\in L(M) \text{ en }n\text{ pasos} \}$
Enumeremos todas las codificaciones de automatas lineales con frontera (MT) decidibles, $\{M_1,M_2,\ldots\}$
Enumeramos todas las cadenas de $\Sigma^*$
$L_\bar{f}=\{x_i | x_i\not\in L(M_i) \}$
Lenguaje | Gramática | Máquina | Ejemplo |
---|---|---|---|
No RE | -- | -- | $L_d$ |
$L_{RE}/L_{Rec}$ | Tipo 0 ($\alpha \rightarrow \beta$) | Máquina de Turing, APDo, AC | $L_u$/$L_n$,$L_\bar{f}$ |
$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^*$ |
Toda computación real puede ser transformada a una máquina de Turing
Toda computación efectiva puede llevarse a cabo por una máquina de Turing
Lenguaje | Gramática | Máquina | Ejemplo |
---|---|---|---|
No RE | -- | -- | $L_d$ |
$L_{RE}/L_{Rec}$ | Tipo 0 ($\alpha \rightarrow \beta$) | Máquina de Turing, APDo, AC | $L_u$/$L_n$,$L_\bar{f}$ |
$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^*$ |
¿Dado dos número en notación unaria, verificar que se puedan sumar?
Los sumamos
Muy fácil, $O(n+m)$
¿Dado tres números en notación unaria, verificar que el último sea la suma de los dos primeros?
Los sumamos y comprobamos que sean el mismo valor
Muy fácil, $O(n+m)$
¿Dado dos número en notación unaria, verificar que se puedan multiplicar?
Los multiplicamos
Más o menos fácil, $O(n*m)$ (naive)
¿Dado tres número en notación unaria, verificar que el último sea producto de los dos primeros?
Los multiplicamos y comprobamos que sean el mismo valor
Más o menos fácil, $O(n*m)$ (naive)
¿Dado un número en notación unaria, es primo?
Dividir número entre factores de $2$ hasta $\sqrt{n}$
¡Más o meno algo de tiempo! $O(\sqrt{n})$
¿Dado un número en notación unaria, identificar si es divisible entre dos factores primos?
Encontrar un par de primos menores a $n$ que produzcan el número n
¡Más dificil! $O(\frac{n*\sqrt(n)}{log(n)^2})$
¿Dado tres número en notación unaria, verificar que el último sea el producto de los dos primeros?
Los multiplicamos y comprobamos que sean el mismo valor
Más o menos fácil, $O(n*m)$ (naive)
Nuestro talón de aquiles comienza con que el complemento de decidibles son decidibles
Existe una máquina de Turing $M_h$ que pueda tomar cualquier máquina $M$ y una entrada $w$ y pueda determinar si el programa para.
La respuesta es NO
$$M_h(M,w) = \begin{cases} 1 & \text{si } M \text{ para con entrada } w \\ 0 & \text{otherwise} \end{cases}$$
$$ M_g(i) = \begin{cases} 0 & \text{si } M(i,i)=0 \\ loop & \text{otherwise} \end{cases}$$
Sabemos que es computable
¿Qué $M$ define a $M_h$?
Si $M(M_g,M_g)=0$ entonces $M_g(M_g)=0$, entonces $M_h(M_g,M_g)=1$
Si $M(M_g,M_g)=1$ entonces $M_g(M_g)$ loops, entonces $M_h(M_g,M_g)=0$
Entonces asumimos mal que $M_h$ era decidible
Uno de los primeros problemas descubiertos ser no decidibles
Es común transformar problemas al problema de paro para demostrar que también son no decidibles
Toda propiedad no trivial de los lenguajes RE es indecidible
Nuestro talón de aquiles continua con que hay problemas para los cuales no hay una MT
Lenguaje | Gramática | Máquina | Ejemplo |
---|---|---|---|
No RE | -- | -- | $L_d,L_{\bar{h}}$ |
$L_{RE}/L_{Rec}$ | Tipo 0 ($\alpha \rightarrow \beta$) | Máquina de Turing, APDo, AC | $L_u$,$L_h$/$L_n$,$L_\bar{f}$ |
$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^*$ |
Un problema $A$ se reduce a $B$, $A \le B$
Considerar $L_D$ y reducir a $0^*1^*$
¿Entonces reducimos $L_D$ a regular?
$f$ tiene que ser computable
Con la entrada $w$
Notación $A\le_M B$, $A$ es reducible a $B$
Informalemente, A no es más difícil que B
Si $A\le_MB$
RE es el conjunto de lenguajes reconocidos por una máquina de Turing
Problemas para los cuales verificamos una respuesta correcta
co-RE es el conjunto de lenguajes cuyos complementso son reconocidos por una máquina de Turing
Problemas para los cuales verificamos una respuesta incorrecta
¿Qué sabemos de este lenguaje?
$REGULAR=\{[M] | L(M)\text{ es regular}\}$
$L_D\le_M REGULAR$
REGULAR es no RE, pero
$\overline{L_D}\le_M REGULAR$
$REGULAR$ y $\overline{REGULAR}$ afuera de los límites de lo computable
¿Otro afuera?
$EQ_{TM}=\{[M_1,M_2] | L(M_1) = L(M_2)\}$
Lenguaje | Gramática | Máquina | Ejemplo |
---|---|---|---|
Más alla/No RE | -- | -- | $REGULAR, \overline{REGULAR}, L_{EQ}$ |
co-RE/No RE | -- | -- | $\overline{L_u},L_D, \overline{ONES}, ONLYONES$ |
$L_{RE}/L_{Rec}$ | Tipo 0 ($\alpha \rightarrow \beta$) | Máquina de Turing, APDo, AC | $L_u,\overline{L_D}, ONES, \overline{ONLYONES}$/$L_n$,$L_\bar{f}$ |
$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^*$ |