170 likes | 1.23k Views
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.
E N D
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 Universal.
5.1 Esquemas de representación de Máquinas de Turing • M. T. Aceptora que se detiene para todas las entradas: Máquina de Turing Aceptora que puede no deternerse para alguna entrada: Máquina de Turing Generadora Máquina de Turing que utiliza a otra Máquinas de Turing como subrutina:
5.2 Propiedades de cierre 1. La clase de los Lenguajes Recursivamente Enumerables es cerrada bajo UNIÓN. L1 L0 M1: L(M1) = L1 L2 L0 M2: L(M1) = L2 L(M) = L1 L2 2. La clase de los Lenguajes Recursivos es cerrada bajo la operación UNIÓN. L1 LR M1: L(M1) = L1 L2 LR M2: L(M2) = L2 L(M) = L1 L2
3. La clase de los Lenguajes Recursivos es cerrada bajo la COMPLEMENTACIÓN L LR M: L(M) = L L(M) = L 4. Un Lenguaje es Recursivo si y solo si él y su complementario son Recursivamente Enumerables. a) L LR L L0 L LR M1: L(M1) = L L(M) = L(M1) = L L L0 b) L LR L L0
b) L, L L0 L LR L L0 M1: L(M1) = L L L0 M1: L(M1) = L L(M) = L(M1) = L y Mse detiene siempre L LR Ejercicio b) L1, L2 LR L1 L2 LR
A partir de 4, dado cualquier par L, L siempre se dará una de las tres posibilidades L, L L0 L, L L, L LR Una forma de demostrar que un lenguaje no es recursivamente enumerable es demostrar que su complementario es r.e. no recursivo.
5. La clase de los Lenguajes Recursivos es cerrada bajo INTERSECCIÓN. L1 LR M1: L(M1) = L1 L2 LR M2: L(M2) = L2 L(M) = L(M1) L(M2) = L1 L2 • 6. La clase de los Lenguajes Recursivamente Enumerables es cerrada bajo la • INTERSECCIÓN. L1 L0 M1: L(M1) = L1 L2 L0 M2: L(M2) = L2 L(M) = L(M1) L(M2) = L1 L2
7. La clase de los Lenguajes Recursivos es cerrada bajo la CONCATENACIÓN. x L1 L2 x = x1 x2, x1 L1, x2 L2 L1 LR M1: L(M1) = L1 L2 LR M2: L(M2) = L2 • Funcionamiento de M: • El módulo A divide x en dos mitades x1y x2 comenzando por x1 = • y x2 = x. • La primera mitad se pasa a M1, la segunda posiblemente a M2. • Cada vez que se vuelve a activar A, | x1 | aumenta una unidad hasta x1 = x • Si ninguna partición devuelve SI, el módulo A activa NO.
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> El par (máquina M, entrada w) lo denominamos < M, w>
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. números que en binario son códigos de M.T. (no todos) 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 . • no recursivamente enumerable • recursivamente enumerable no recursivo Consecuencia Ld es
Reducción de un problema a otro. 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. Si A B entonces A es por lo menos tan duro como B Ejemplo 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 AMB. Instancia: G = (N, , P, S) Cuestión: ¿Es G ambigua? Respuesta: Si/No AMB FIND
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 ..... w es aceptada por M < M, w>es aceptada por M1
2. Veamos que LU es no Recursivo. Sea Ld = {wi : wi L(Mi)} • no recursivamente enumerable • recursivamente enumerable no recursivo Sabemos que Ld es 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 < Mi, wi> LU S wi L(Mi) wi Ld w < Mi, wi> M1 wi L(Mi) wi Ld N conversión < Mi, wi> LU Luego si LU fuese recursivo también lo sería Ld (contradicción)
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 Tipo 1 L. R.