la máquina de Turing (MT)como sustituto formal del
concepto de algoritmo
0 0 r 10 1 l 01 0 h 11 1 0 0
índice de materias• fundamentos matemáticos• introducción histórica•• modelos de cálculomodelos de cálculo• lenguajes WHILE y LOOP• funciones µ-recursivas• teorema de equivalencia• indexaciones y universalidad• problemas no resolubles
MMááquina de quina de TuringTuringURMURM, , RAMRAM,,
basados en lenguajesbasados en lenguajes
el formalismo propuesto por Turingrecibió el nombre de máquina
máquina
funcionamientoautomático
objetividad
creatividad
la máquina de Turing contienelos elementos básicos para el cómputo
condicionales
saltos
almacenamiento
X
programa
el concepto de MT se ilustracon un símil mecánico
... 1 1 0 1 1 0 0 0 1 0 1 0 0 ...
ingredientes básicospara operar con MT’s
estado inicial (cM)
estado de parada
U = {a1, ..., an}
(a0 ≡ símbolo vacío)
expresión de cinta
- paso de computación- instrucción parcial de cálculo- instrucción de cálculo
configuración
cuadrado escrutado (CE)∈[-∞,∞]
cinta infinita de cálculo
conjunto finito deestados
el conjunto de instruccionesestá simplificado
Pasos de computación
ak → permite escribir el símbolo k-ésimo en el CE
r → situar la MT sobre el cuadrado a la derecha del CE
l → situar la MT sobre el cuadrado a la izquierda del CE
h → dar el cómputo por terminado
la configuración define completamente el estado del cómputo
la línea de la configuración k es la líneade la MT de la forma
C B(A) b c'
K=(A, B, C)
- A es el CE actual- B es la expresión de cinta actual- C es el estado actual
la instrucción de cálculoestá representada por una tabla
• la k-ésima instrucción parcial es una subtabla
k es el estado actualsi es el contenido del CEbi es la instrucciónki es el próximo estado
• la instrucción de cálculo es la unión de las instrucciones parciales
k s0 b0 k0
k s1 b1 k1
...
k sn bn kn
terminología relativa a MT’s
dada una MT M, un número A y una función B
• colocar M en la expresión de cinta B sobre el cuadrado A equivale a hacer K0=(A, B, CM)
• M transita en un paso de cómputo de Kn a Kn+1, con Kn+1=F(Kn)
• M cesa de operar en la expresión de cinta Bn y sobre el cuadrado An si tras el n-ésimo paso Kn=(An, Bn, Cn), y la línea de la configuración Kn
contiene la instrucción h
expresiones matemáticas de laconfiguración consecutiva
+≠∧≠
−=
b=rAlbrbA
b=lAA'
si1 si
si1
≠∧≠∧=∨=∧
≠=
lbrbAxblbrbx=AxB
AxxBxB'
= si) ( si)(
si)()(
'' cC =
la simplicidad del modelo contrasta con la complejidad de la computación• función sucesor en decimal
0 * l 0 1 * h 1 2 * 1 1 0 0 1 1 1 0 r 1 2 0 l 2 0 1 2 1 1 1 r 1 2 1 2 1 0 2 3 1 1 2 r 1 2 2 3 1 0 3 4 1 1 3 r 1 2 3 4 1 0 4 5 1 1 4 r 1 2 4 5 1 0 5 6 1 1 5 r 1 2 5 6 1 0 6 7 1 1 6 r 1 2 6 7 1 0 7 8 1 1 7 r 1 2 7 8 1 0 8 9 1 1 8 r 1 2 8 9 1 0 9 0 2
1 9 r 1
2 9 0 2
dos MT’s son equivalentes si siguenla misma secuencia de estados
• M1 equivale a M2 si existe una aplicaciónbiunívoca ϕ de los estados de M1 en los de M2, verificándose que
– toda línea de M1 de la forma
c a b c’se traduce en una línea de M2
ϕ(c) a b ϕ(c’)
– cM2 = ϕ(cM1)
interpretación de la equivalencia
• MT’s equivalentes generan la misma secuencia de pares (Ai, Bi) si se las coloca en la misma expresión de cinta y sobre el mismo cuadrado
• si M1 da lugar a las configuraciones (Ai , Bi , Ci), y M2 equivale a M1 por la aplicación ϕ, y se coloca a M2 en B sobre el cuadrado A, M2 genera las configuraciones (Ai , Bi , ϕ(Ci))
equivalencia en sentido amplio implica la misma transformación de símbolos
• M1 sobre U1 equivale en sentido amplio a M2 sobre U2 si existen aplicaciones biunívocas ϕ y ψtal que– ψ es una aplicación de U1 en U2 que verifica
ψ(r) = r ψ(l) = l ψ(h) = h– ϕ es una aplicación de los estados de M1 en los de M2
de manera que toda línea de M1c a b c’
se traduce en una línea de M2ϕ(c) ψ (a) ψ (b) ϕ(c’)
– cM2 = ϕ(cM1)
otros modelos de cómputomás evolucionados
el modelo URM(Unlimited Registers Machine)
• funcionamiento: un programa de i líneas se
ejecuta con unos datos de entrada que se sitúan en
los registros 1 a k; comenzando por la línea 1, si
la instrucción es de salto se continúa en la línea
especificada, en caso contrario se continúa en la
línea 2 y así sucesivamente hasta alcanzar la línea
i+1; el contenido del registro 1 es el resultado del
cómputo
el conjunto de instrucciones de URMes más cercano a los lenguajes actuales
• instrucciones (<n> → contenido del registro n)
P(n) <n> = <n> + 1
D(n) <n> = <n> − 1 (<n> ≠ 0)
O(n) <n> = 0
C(m, n) <n> = <m>
J[i] salto a línea i
J(m)[i] salto a línea i si <m> = 0
ejemplo de programa en URM
1 J(3)[4]
2 D(3)
3 J(1)
1 ≡ si el registro 3 contiene 0 terminar el cómputo
2 ≡ restar una unidad al contenido del registro 3
3 ≡ seguir computando por la línea 1
(este programa realiza el mismo cómputo que O(3))
modelo RAM(Random Access Machine)
• conjunto de instrucciones
LOAD READ
STORE WRITE
ADD JUMP
SUB JGTZ
MULT JZERO
DIV HALT
modelos basado enlenguajes no estructurados
Variables de entrada: Xi
Variables locales: Zi
Variable de salida: Y
Etiquetas: [ A | B | C | D | ... ]
Instrucciones: V ← V + 1
V ← V − 1
IF V ≠ 0 GOTO L
Ejemplo:
[A] X1←X1 − 1
Y←Y + 1
IF X1≠0 GOTO A
función ‘suma de dos números’
X3 ← X3 + 1IF X1 ≠ 0 GOTO AIF X3 ≠ 0 GOTO B
[A] X1 ← X1 − 1Y ← Y + 1IF X1 ≠ 0 GOTO A
[B] IF X2 ≠ 0 GOTO CIF X3 ≠ 0 GOTO D
[C] X2 ← X2 − 1Y←Y + 1IF X2 ≠ 0 GOTO C
[D] X3←X3 − 1
modelos basados enlenguajes estructurados
• lenguaje imperativo con notación tipo Pascal o Módula-2
• maneja como tipo de datos sólo naturales
• los identificadores de variables se forman con X seguido de un número mayor que cero
• las instrucciones básicas son la asignación, el sucesor, el predecesor y la inicialización
• para formar una secuencia con estas instrucciones se usa el separador 'punto y coma'
• la única estructura de control es un bucle indefinido con control al principio (tipo while)
modelos basados enlenguajes estructurados
• un código es una secuencia entre un principio (begin) y un fin (end)
• un programa Q es una terna (n, p, C), donde: n es el número de variables de entrada (con identificadores X1, X2, …, Xn), p es el número de variables que usa y C es el código
• semántica similar a la de Pascal o Modula-2, con diferencias:
− no hay instrucciones de entrada ni de salida
− las variables que no son de entrada son inicializadas a cero
• un programa en este lenguaje expresa una relación funcional entre entradas y una salida; una única función de Nn en N se puede asociar a cada programa Q en este lenguaje