Universidad Simón Bolívar Departamento de Computación y Tecnología de la Información Curso de Traductores e Interpretadores ci3725 Profesor Luis Astorga Enero - Marzo 2006 Un trio de ejemplos Primer ejemplo Conciba una máquina de Turing para calcular 2n en sistema binario. Solucion : Una maquina de Turing que calcula 2n en el sistema binario es; M TB = (fq0 ; : : : ; q17 g ; f&; $; 0; 1g ; f&; $; 0; 1; X; Y; ?g ; q0 ; ?; fq17 g ; ) La entrada de la maquina se da en la forma &bin(n)r $y la salida de la maquina es &bin(2n )r $, donde r signi…ca el inverso de la palabra. El procedimiento consiste en descomponer el número binario de entrada bin(n) en suma de potencias de base 2, resolver para cada una de ellas la conversión a sistema unario, esto es , tantos ceros como índica el mismo número en sistema decimal, y …nalmente agruparlos en secuencia. Así por ejemplo, 21 = 10101 de descompone en 10000 = 24 = 16 100 = 22 = 4 1 = 20 = 1 10101 = 21 La tabla de transiciones es entonces; Qn q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 q16 q17 & $ (q0 ; &; !) (q0 ; &; !) (q2 ; $; !) (q2 ; $; ) (q3 ; $; ) (q4 ; $; !) (q6 ; $; ) (q8 ; $; !) 0 (q4 ; X; !) (q1 ; 0; !) (q2 ; 0; ) (q3 ; 0; ) (q4 ; 0; !) 1 (q1 ; 0; !) (q1 ; 1; !) (q2 ; 1; ) (q3 ; 1; ) (q4 ; 1; !) (q6 ; 0; ) (q8 ; X; !) (q8 ; 0; !) (q6 ; 1; ) (q12 ; 0; !) (q8 ; 1; !) (q6 ; $; ) (q14 ; $; ) (q13 ; $; !) (q11 ; 0; ) (q13 ; 0; !) (q13 ; 0; !) (q15 ; ?; !) (q14 ; 0; ) (q16 ; &; !) (q15 ; ?; !) (q16 ; 0; !) Ejemplo; Entrada: &10101$ Salida: &0000000000000000000001$ 2 X (q2 ; 0; ? Y ) (q3 ; 0; ) (q5 ; Y; !) (q6 ; Y; ) (q7 ; X; !) (q6 ; Y; ) (q8 ; X; !) (q9 ; 1; !) (q11 ; ?; ) (q9 ; X; !) (q9 ; Y; !) (q10 ; X; ) (q8 ; 1; !) (q10 ; X; ) (q10 ; Y; ) (q11 ; Y; ) (q11 ; Y; ) (q13 ; 1; !) (q13 ; 1; !) (q13 ; 0; !) (q2 ; ?; ) (q14 ; X; ) (q15 ; ?; !) (q16 ; 0; !) (q17 ; 1; !) (q17 ; $; ) & 1 0101$ ` &0 0 101$ ` &00101 $ ` &00101$? ` &00101 $ 0 ` "0 "1 "2 "1 "3 &00101$0 ` & 0 0101$0 ` &X 0 101$0 ` &X0101$0? ` &X0101$0Y ? ` "3 "0 "4 "4 ` &X 0101$0Y Y ` &X 0 101$0Y Y ` &XX 1 01$0Y Y ` &X0101$0Y Y "6 "6 "7 "5 "8 ` &XX101$01Y ` &XX101$01Y ? ` &XX101$01 Y X ` &XX101$0Y Y "8 "9 "9 "10 &XX101$0 1 Y X ` &XX101$01Y Y X ` &XX101$011X ` &XX101$011X? ` "10 "8 "9 "9 &XX101$011X X ` &XX101$01 1 XX ` &XX101$011X X ` &XX101$011XX? ` "10 "10 "8 "8 &XX101$011X X ` &XX101$011X Y ` &XX101$01 1 Y Y ` &XX101$0 1 Y Y Y ` "11 "11 "11 "11 ` &XX10 1 $0Y Y Y Y ` &XX 101$0Y Y Y Y ` &XX 1 01$0Y Y Y Y ` &XX101 $ 0Y Y Y Y "6 "11 "6 "7 ` &XX001$0 Y Y Y Y ` &XX001$00 Y Y Y ` &XX001$000 Y Y ` &XX0 0 1$0Y Y Y Y "12 "13 "13 ` &XX001$00000 ? ` &XX001$0000 0 ` &XX 001$00000 ` &XX001$0000 Y "13 "13 &X 0001$00000 ` &00001$00000 ` & 0 0001$00000 ` "2 "2 "2 "0 ` XXXX 1 $00000Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y ` "7 ` XXXX0 $ 00000Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y ` "12 ` XXXX 0 $00000Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y ` "14 ` & XXXX0$00000Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y ` "14 ` X XXX0$00000Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y ` ` "13 "15 $ XXX0$00000Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y ` "15 ` & 0 0000Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y ` "16 ` &000000000000000000000 ? ` "16 ` &000000000000000000001 ? ` "17 ` &000000000000000000000 1 $ ` "17 3 "2 Segundo ejemplo ¿Existe una maquina de Turing para calcular el n-ésimo decimal de ? Solucion : Existe una técnica francesa para obtener los primeros 31 términos de la mantisa de , y es de carácter literario, pues tiene en cuenta el número de letras en cada palabra. Se detiene obviamente con la aparición del primer cero; j0 1 Car 3; des 3 aime 4 soins patients; 5 8 probleme grec : 8 4 est 3 a 1 un 2 f aire 5 longtemps 9 carrer 6 apprecier 9 ce 2 nombre; 6 objet 5 ce 2 dur 3 nom 3 habituel 8 repetes; engendres par 7 9 3 le 2 symbole (perimetre) 7 9 cercle: 6 M e^me 4 utile 5 ::: 0 son 3 Por otra parte, muchas fórmulas aproximan el cálculo de , generalmente en forma de series. Entre ellas; 6 1 1 1 3 1 3 5 + + + + 2 (2) 3 23 (2 4) 5 25 (2 4 6) 7 27 p 2 3 1 2 1+ 1 3 3 + 1 5 32 1 1 + 7 33 9 34 1 1 2 1 2 3 1 2 3 4 + + + + 3 3 5 3 5 7 3 5 7 9 o 4 1 1 1 + 3 5 1 1 + 7 9 También el producto de Wallis; 2 2 2 1 3 4 4 3 5 6 6 5 7 4 8 8 7 9 ; ; ; Teóricamente, el uso sistemático de estas fórmulas aproxima al valor de con la precisión de términos decimales que se quiera. Las fracciones de enteros que constituyen las fórmulas son números racionales, y por ello, de mantisa periódica. Por lo tanto cada división hasta un número …nito de períodos es una operación …nita. Para un n dado, es posible …jar un número m de términos de la serie y un número k de decimales (por ejemplo, el mínimo común múltiplo entre los períodos de los términos de la serie considerados) su…cientemente grandes de manera que el calculo de mediante la fórmula estabilice los primeros n dígitos de la mantisa, es decir, que el error al término n sea cero. Por lo tanto, existe una maquina de Turing para calcular el n término decimal de : Tercer ejemplo Probar o desmentir por contraejemplo las siguientes a…rmaciones; (a) Sea L recursivamente numerable. Sea L0 tal que L0 L. Entonces L0 es recursivamente numerable. (b) Si L1 [ L2 es recursivo, necesariamente L1 y L2 son recursivamente numerable. (c) Si L1 y L2 son recursivamente numerables entonces L1 [ L2 es recursivamente numerable. Solucion : Sabemos que Ld no es recursivamente numerable, y por construcción, Ld : Sabemos también que es un lenguaje recursivo (porque puede ser generado en orden canónico), y es por lo tanto, recursivamente numerable. (a) Sea L = y L0 = Ld : Tenemos un ejemplo que contradice la inclusión estricta del enunciado. La única manera de que este último sea cierto es que L0 = L: es recursivo y L1 no es (b) Sea L1 = Ld y L2 = Ld : Entonces, L1 [ L2 = recursivamente numerable. El enunciado es falso. (c) Sean T1 y T2 las máquinas de Turing que aceptan a L1 y L2 respectivamente. Se construye una máquina de Turing M que simula simultáneamente a T1 y a T2 en cintas separadas. Si alguno acepta w entonces T acepta a w. Así, w 2 L1 [ L2 cuya máquina de Turing es T; y es por tanto, recursivamente numerable. 5