5. Propiedades de los Lenguajes Recursivamente
Enumerables y de los Lenguajes Recursivos.
5.1 Esquemas de representación de Máquinas de Turing.
5.2 Propiedades de cierre.
5.3 Codificación de Máquinas de Turing.
5.4 Un lenguaje no recursivamente enumerable: Lenguaje diagonal.
5.5 Un lenguaje rcursivamente enumerable no recursivo: Lenguaje
x SI NO
M
M. T. Aceptora que se detiene para todas las entradas:
Máquina de Turing Generadora x
M
Máquina de Turing que utiliza a otra Máquinas de Turing como subrutina:
x SI NO START M x SI M
5.2 Propiedades de cierre
1. La clase de los Lenguajes Recursivamente Enumerables es cerrada bajo UNIÓN.
M1 M2 x x x SI SI SI M
2. La clase de los Lenguajes Recursivos es cerrada bajo la operación UNIÓN
.
3. La clase de los Lenguajes Recursivos es cerrada bajo la COMPLEMENTACIÓN M x x SI SI NO NO M
A partir de 4, dado cualquier par L, L siempre se dará una de las tres posibilidades LR L0 L, L L, L L, L
5. La clase de los Lenguajes Recursivos es cerrada bajo INTERSECCIÓN
.
M1 M2 x x x SI SI SI NO NO NO START M7. La clase de los Lenguajes Recursivos es cerrada bajo la CONCATENACIÓN. M1 M2 x1 x x SI SI SI START M NO A x2 NO NO Σ* NO x x x SI START L1 ∈ LR⇒ ∃M1: L(M1) = L1 L2 ∈ LR⇒ ∃M2: L(M2) = L2 x ∈ L1 L2 ⇔ x = x1 x2, x1 ∈ L1, x2 ∈ L2 Funcionamiento de M:
• El módulo A divide x en dos mitades x1 y x2 comenzando por x1 = λ y x2 = x.
• La primera mitad se pasa a M1, la segunda posiblemente a M2.
5.3 Codificación de Máquinas de Turing.
Objetivo: Codificar una M.T. con {0,1}.
Sup L ⊆ (0+1)* rec. enumerable ⇒ ∃ M con Γ = {0, 1, B} tal que L = L(M). Sea M = ({q1, q2,..., qn}, {0, 1}, {0, 1, B}, δ, q1, B, {q2}) Codificación de un movimiento Sea δ(qi, Xj) = (qk, Xl, Dm) con 1 ≤ i, k ≤ n 1 ≤ j, l ≤ 3 1 ≤ m ≤ 2 X1 = 0 X2 = 1 X3= B D1 = L D2 = R Se codifica de forma unívoca como 0i10j10k10l10m
Una M.T. se codifica como
111código111código211...11códigor111
Una M.T. puede tener varios códigos, pero la decodificación es única. A una codificación de una M.T M le llamamos <M>
5.4 Un lenguaje no recursivamente enumerable: Lenguaje diagonal.
Se emplea el mismo argumento que para demostrar que el conjunto de las funciones f : N {0,1} no es numerable.Si lo fuera, se tendría A = {f1, f2, f3, ...}. Construimos f: f (i) = fi (i) + 1(mod 2). Si f ∈ A se tendría f = fj y sin embargo f (j) ≠ fj (j).
Supongamos una tabla infinita en la que:
• En la primera columna se colocan las palabras de (0 + 1)* en orden canónico. • En la primera fila índices de M.T.
• (i, j) = 1 si la palabra i es aceptada por la máquina que se codifica en binario como j. • (i, j) = 0 si la palabra i no es aceptada por la máq. que se codifica en binario como j.
1 2 3 4 5 6 ... 1 2 3 4 palabras de (0 + 1)* en orden canónico
Consideramos la diagonal de la tabla anterior y construimos Ld = {wi : wi ∉ L(Mi)} - Si (i, i) = 0 wi ∈ Ld - Si (i, i) = 1 wi ∉ Ld Ld no es recursivamente enumerable: -Supongamos que sí lo es ⇒ ∃ M : L(M) = Ld .
-En las columnas están todas las M.T. ⇒ ∃ j : Mj = M. Entonces • Si xj ∈ Ld = L(Mj) ⇒ (j, j) = 0 ⇒ xj ∉ L(Mj) (contradicción) • Si xj ∉ Ld = L(Mj) ⇒ (j, j) = 1 ⇒ xj ∈ L(Mj)
Luego no existe M.T. capaz de reconocer Ld . Consecuencia Ld es • no recursivamente enumerable
Dados los problemas A y B, decimos que A se reduce a B (A α B) si, conocido un algoritmo que resuelve B, se puede resolver A.
Reducción de un problema a otro.
Si A α B entonces A es por lo menos tan duro como B
Ejemplo
AMB. Instancia: G = (N, Σ, P, S)
Cuestión: ¿Es G ambigua? Respuesta: Si/No
FIND. Instancia: G = (N, Σ, P, S)
Cuestión: Encontrar w ∈ L(G): w posee
más de un árbol de derivación.
Respuesta: w /No
5.5 Un lenguaje reursivamente enumerable no recursivo: Lenguaje
Universal.
Veamos que LU = {< M, w> : w ∈ L(M)} es: 1. Recursivamente enumerable. 2. No Recursivo.
1. Sea M1 la máquina con tres pistas:
La 1ª es la cinta de entrada (contiene < M, w> ). La 2ª simula la cinta de M.
La 3ª guarde el estado de M. inicialmente están en blanco Operaciones que tiene que realizar:
- Comprobar que la entrada es correcta. - Inicializar la 2ª cinta con w.
- Inicializar la 3ª cinta con 0. (código de q1= estado inicial) Comportamiento de M1
- Si en la 3ª cinta aparece “00” (cód. de q2= estado final) M1 para y acepta < M, w> . - Si en la 3ª cinta hay 0i y en la segunda 0j, se busca en la 1ª un fragmento 0i10j1...
- Si no se encuentra ese fragmento, M1 para y rechaza < M, w> . - Si se encuentra ...
2. Veamos que LU es no Recursivo.
Sabemos que Ld es • no recursivamente enumerable
• recursivamente enumerable no recursivo Sea Ld = {wi : wi ∈ L(Mi)}
Veamos que Ld se puede reducir a LU. (si reconocemos LU, tambien Ld ) Supongamos que M1 : L(M1) = LU y M1 para ante todas las entradas
M1 < Mi, wi> S N ⇒ wi ∈ L(Mi) ⇒ wi ∈ Ld ⇒ wi ∉ L(Mi) ⇒ wi ∉ Ld < Mi, wi> ∉ LU < Mi, wi> ∈ LU
Luego si LU fuese recursivo también lo sería Ld (contradicción)
w
• L es un lenguaje de tipo 0 ⇔ L es recursivamente enumerable
Autómata de memoria acotada linealmente (AMLL):
- M.T. no determinista con la entrada enmarcada entre dos símbolos ($ y # por ejemplo).
- Los movimientos que hace la cabeza no pueden salirse de los límites. - Las marcas no pueden ser sustituidas.
• L es un lenguaje de tipo 1 ⇔ L es aceptado por un AMLL
L. R. E. = Tipo 0