8.2. MÁQUINA DE TURING UNIVERSAL 137Se construye un lenguaje L D usando la diagonal <strong>de</strong> la tabla, para <strong>de</strong>terminar si un string pertenece a L Do no. Para garantizar que ninguna MT acepte L D , se <strong>de</strong>fine que w i ∈ L D si y sólo si la entrada (i, i) <strong>de</strong> latabla es 0, esto es, si M i no acepta w i .Suponga que alguna MT, M j , acepta L D , se produce la siguiente contradicción. Si w j ∈ L D , entoncesla entrada (j, j) es 0 (por <strong>de</strong>finición <strong>de</strong> L D , implicando que w j ∉ L(M j ) y contradiciendo L D = L(M j ).Si por el contrario, w j ∉ L D , entonces la entrada (j, j) es 1, implicando que w j ∈ L(M j ), lo que <strong>de</strong> nuevocontradice L D = L(M j ). Como w j está o no en L D , se concluye que la suposición L D = L(M j ) es falsa. Porlo tanto, ninguna MT en la lista acepta L D ; es <strong>de</strong>cir ninguna MT acepta L D .Lema 13 L D no es enumerable recursivamenteDemostración :Recién enunciada en la discusión anterior✷Se <strong>de</strong>fine L u , el lenguaje universal, como el conjunto{< M, w > /M acepta w}Se le llama “universal”, pues la pregunta <strong>de</strong> si un string w en particular es aceptado por una máquina<strong>de</strong> Turing M en particular, es equivalente a la pregunta si < M ′ , w > pertenece a L u ; don<strong>de</strong> M ′ es la MTequivalente a M construida con una cinta semi-infinita y alfabeto {0, 1, B} que acepte L u .Teorema 45 L u es enumerable recursivamente.Demostración : Se mostrará una MT con 3 cintas, M 1 , que acepta L u . La primera cinta <strong>de</strong> M 1 es la cinta<strong>de</strong> entrada y es usada para buscar movidas <strong>de</strong> M cuando se le da el código < M, w > como input. Lasegunda cinta <strong>de</strong> M 1 simulará la cinta <strong>de</strong> M. La tercera cinta mantiene el estado <strong>de</strong> M, con q i representadopor 0 i . M 1 funciona <strong>de</strong> la siguiente manera:1. Verifica el formato <strong>de</strong> la cinta 1 para ver que tiene un prefijo correspondiente al código <strong>de</strong> alguna MTy que no hay dos movidas codificadas que comiencen con 0 i 10 j para el mismo i y j. También verificaque si 0 i 10 j 10 k 10 l 10 m es un código, 1 ≤ j ≤ 3, 1 ≤ l ≤ 3, 1 ≤ m ≤ 2. La tercera cinta pue<strong>de</strong> usarsecomo “cinta borrador” para facilitar la comparación <strong>de</strong> códigos.2. Inicializa la cinta 2 a contener w, la parte <strong>de</strong>l input que sigue al segundo grupo <strong>de</strong> tres 1 ′ s consecutivos.Inicializa la cinta 3 con un solo 0, que simboliza q 1 . Las tres cabezas se posicionan en el símbolo <strong>de</strong>más a la izquierda. Esos símbolos pue<strong>de</strong>n ser marcados para facilitar la vuelta <strong>de</strong> las cabezas a ellos.3. Si la cinta 3 contiene ∞, el código para el estado final, la máquina se <strong>de</strong>tiene y acepta.4. Sea X j el símbolo bajo la cabeza en la segunda cinta y sea 0 i el contenido <strong>de</strong> la cinta 3. Se recorre lacinta 1 <strong>de</strong>s<strong>de</strong> la izquierda hasta el segundo 111, buscando un substring que comience con 110 i 10 j 1. Sino se encuentra, la máquina se <strong>de</strong>tiene y rechaza; M no tiene próxima movida y no ha aceptado. Sise encuentra ese código, sea 0 i 10 j 10 k 10 l 10 m . Se pone 0 k en la cinta 3, se escribe X l en la celda <strong>de</strong> lasegunda cinta y esa cabeza se mueve en dirección D m . Nótese que ya se ha chequeado que 1 ≤ l ≤ 3 yque 1 ≤ m ≤ 2. Repetir <strong>de</strong>spués el paso (3).Es simple ver que M 1 acepta < M, w > si y sólo si M acepta w. También es cierto que si M no se<strong>de</strong>tiene en w, M 1 no se <strong>de</strong>tiene en < M, w > y que si M se <strong>de</strong>tiene sin aceptar w, M 1 se <strong>de</strong>tiene sin aceptar< M, w >.✷
138 PROPIEDADES DE L. ENUMERABLES RECURSIVAMENTE Y RECURSIVOSLa existencia <strong>de</strong> M 1 es suficiente para probar el teorema. Sin embargo, usando los teoremas <strong>de</strong>l capítulo 7,se pue<strong>de</strong> encontrar una MT con una cinta semi-infinita y alfabeto {0, 1, B} que acepte L u . Esa MT enparticular se <strong>de</strong>nominará M U , la Máquina <strong>de</strong> Turing Universal, ya que ella hace el trabajo <strong>de</strong> cualquier MTcon alfabeto <strong>de</strong> entrada {0, 1}.Según el lema 13, el lenguaje diagonal L D no es enumerable recursivamente y, por lo tanto, no esrecursivo. Por un teorema anterior se concluye que L D no es recursivo. Nótese que L D = {w i /M i aceptaw i }. Se probará que el lenguaje universal L u = {< M, w > /M acepta w} no es recursivo, reduciendo L D aL u . Por lo tanto L u es un lenguaje enumerable recursivamente, pero no recursivo; en realidad, L D es otroejemplo <strong>de</strong> ese tipo.Teorema 46 L u no es recursivo.Demostración : Supóngase que A fuera un algoritmo que reconoce L u . Entonces se podría reconocer L D<strong>de</strong> la siguiente manera. Dado un string w ∈ (0 + 1) ∗ , se <strong>de</strong>termina (fácilmente) el valor <strong>de</strong> i, tal que w = w i .Ese entero i, en binario, es el código para una MT M i . Se alimenta a A con < M i , w i > y se acepta w si ysólo si M i acepta w i . Es fácil ver que el algoritmo así construido acepta w si y sólo si w = w i y w i ∈ L(M i ).Por lo tanto, se tiene un algoritmo para L D . Como dicho algoritmo no pue<strong>de</strong> existir, se concluye que lasuposición <strong>de</strong> que existe un algoritmo A para L u es falsa. Por lo tanto, L u es enumerable recursivamente,pero no recursivo. (Ver Figura 8.6).w ✲ ✲HIPOTETICO✘✘✿ SICONVERTIDORA para Lu ❳❳3 NOAlgoritmo construido para L u✲✲SINOFigure 8.6: Construcción <strong>de</strong> L D✷