Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Facultad de Ingenierı́a
Lenguajes y Autómatas
Capı́tulo III: Máquinas de Turing y computabilidad
2018-II
1
Máquinas de Turing
Máquinas de Turing universales
Computabilidad y Complejidad
Index
Máquinas de Turing
Máquina de Turing
Máquina de Turing en notación modular
Variaciones de máquinas de Turing
Computabilidad y Complejidad
Tesis de Church-Turing
NP-completitud basada en Máquinas de Turing
2
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Historia de la lógica
3
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Historia de la lógica
4
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Historia de la lógica
5
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Historia de la lógica
6
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Jerarquı́a de Chomsky
7
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Introducción
9
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
10
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
11
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Ejemplo
a, #
Inicio q0 q1
#, ←
#, #
12
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
¡Gracias!
13
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Máquina de Turing
14
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Ejemplo
15
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Configuraciones
16
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Configuraciones
CM = (Q ∪ {h}) × Σ∗ × Σ × Σ∗
17
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Configuraciones
18
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Ejemplo
δ q0 q1
a q1 , # q1 , a
# h, # q0 , ←
19
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Funciones Turing-computables
20
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Ejemplo
a, b
b, a
#, ←
Inicio q0 q1 q2
a, ←
#, →
b, ←
a, → #, #
q3 h
b, →
21
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Ejemplo
Veamos una TM que calcula f (w ) = ww R
a, ←
#, → #, a #, a
q2 q3 q4 q5
a, # a, → a, ←
#, ← b, → b, ←
Inicio q0 q1
a, → a, ←
b, # b, → b, ←
q6 q7 q8 q9
#, → #, b #, b
#, →
b, ←
a, → #, #
q10 h
b, →
22
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Ejemplo
Esta TM calcula f (n) = n + 1
#, I I,→
Inicio q0 q1 h
23
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
I,←
#, ← I,# #, ←
Inicio q0 q1 q2 q3
#, # #, I
#, #
h q4
I,→
24
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Ejercicios
26
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
MTs mecánicas
27
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
¡Gracias!
28
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Notación modular
Una TM se puede representar más compactamente en notación modular:
I Un grafo cuyos nodos son las acciones y las aristas las condiciones.
I En cada nodo se puede escribir una secuencia de acciones, que se
ejecutan al llegar al nodo.
I Luego de ejecutarlas, se consideran las aristas que salen del nodo.
En principio, son flechas rotuladas con sı́mbolos de Σ.
I Si la flecha que sale del nodo está rotulada con la letra que está
bajo el cabezal luego de ejecutar el nodo, entonces se sigue la flecha
y se llega a otro nodo.
I Nunca debe haber más de una flecha aplicable a cada nodo
(determinismo).
I Hay un nodo inicial donde la máquina comienza a operar.
I La máquina se detiene cuando de un nodo no hay otro adonde ir.
29
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Notación modular
30
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Notación modular
Las máquinas CA , BA y B se definen según el siguiente diagrama:
A A
#
CA = → C BA = → B B= → C #
σ #
SC = → C# B Cσ B
SC : #w # −→ w #
Ejercicio
Esquematizar SB : #w # −→ ##w #
31
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Ejemplo
TM que calcula f (w ) = ww R
σ 6= #
→C # B# σ C# σ
#
B#
Ejercicio
Esquematizar la copiadora C : #w # −→ #w #w #.
Con esta máquina podemos componer fácilmente una TM que
calcule f (w ) = ww , como: C SC .
32
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Ejemplo
TM que implementa la función diferencia entre números naturales
(resultando 0 si es negativa)
I I
→C # C# C # B B# SC
#
B B# B
Ejercicio
Implemente la máquina M, que multiplica dos números naturales
n y m:
M : #I n #I m # −→ #I n·m #
33
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Ejemplo
TM que decide el lenguaje {an b n c n | n ≥ 0}, el cual no es libre del
contexto.
c b a #
→C # Cc # Cb # Ca B# B# B# SC SC
a, # c, # b, c
# a, b
B# B B# B# B B B# B# B# B B B
BSB
BNB
34
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
¡Gracias!
35
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Variaciones de TMs
36
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
M = (Q, Σ, δ, s)
37
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Multicintas
δ : Q × Γm → Q × Γm × {I , D}
38
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Multi-cabezales
δ : Q × Γm → Q × Γm × {I , D}m
39
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Cinta bidimensional
δ : Q × Γ → Q × Γ × {J, I, N, H}
40
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
No-determinismo
I Una TM no determinista (NTM), se diferencia de la máquina
determinista, en que tiene una función de transición δ tal que
para el estado q y sı́mbolo X , δ(q, X ) es un conjunto de
tuplas:
{(q1 , A1 ), (q2 , A2 ), ..., (qk , Ak )}
donde k es cualquier número finito.
I La NTM puede elegir, en cada paso, cuál de las tuplas será el
siguiente movimiento. Sin embargo, no puede elegir un estado
de una y una acción de otra.
I La NTM M acepta una entrada w si existe cualquier secuencia
de movimientos que lleva desde la configuración inicial con w
como entrada hasta una configuración con el estado h.
I La NTM no acepta ningún lenguaje que no sea aceptado por
una TM.
41
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
No-determinismo
42
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Ejemplo
Implementemos una TM que acepte el lenguaje de los números
compuestos {I n : ∃p, q ≥ 2 , n = p q}. Lo que se harı́a con una
TM determinı́stica, serı́a generar uno a uno, todos los posibles
√
divisores de n, desde 2 hasta n y probarlos. Si se encuentra un
divisor entonces n es compuesto, sino es primo. Con una NTM es
más sencillo. Comencemos con la siguiente NTM que genera, no
determinı́sticamente, una cantidad de I ’s mayor o igual que 2
G= → B I B I
43
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Ejemplo (cont.)
44
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
Ejercicio
45
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing Máquina de Turing
Máquinas de Turing universales Máquina de Turing en notación modular
Computabilidad y Complejidad Variaciones de máquinas de Turing
¡Gracias!
46
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing
Máquinas de Turing universales Máquina de Turing universal
Computabilidad y Complejidad
MT universal
Una máquina de Turing universal (UTM) es una máquina de
Turing que puede simular el comportamiento de cualquier otra
máquina de Turing para una entrada arbitraria.
I Una UTM recibe como entrada (input) una máquina de
Turing TM y un input w para dicha TM.
I Una UTM genera como salida (output) el output que
generarı́a dicha TM para dicho input w .
47
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing
Máquinas de Turing universales Máquina de Turing universal
Computabilidad y Complejidad
MT universal
48
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing
Máquinas de Turing universales Máquina de Turing universal
Computabilidad y Complejidad
MT universales compactas
49
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing
Máquinas de Turing universales Máquina de Turing universal
Computabilidad y Complejidad
¡Gracias!
50
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing
Tesis de Church-Turing
Máquinas de Turing universales
NP-completitud basada en Máquinas de Turing
Computabilidad y Complejidad
Tesis de Church-Turing
Todo algoritmo es equivalente a una máquina de Turing o sistema
equivalente.
51
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing
Tesis de Church-Turing
Máquinas de Turing universales
NP-completitud basada en Máquinas de Turing
Computabilidad y Complejidad
52
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing
Tesis de Church-Turing
Máquinas de Turing universales
NP-completitud basada en Máquinas de Turing
Computabilidad y Complejidad
Problema decidible
53
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing
Tesis de Church-Turing
Máquinas de Turing universales
NP-completitud basada en Máquinas de Turing
Computabilidad y Complejidad
Problema indecidible
Halting problem o problema de la parada
Dado un programa P y una entrada x válida para ese programa,
determinar si P se detendrá para x.
54
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing
Tesis de Church-Turing
Máquinas de Turing universales
NP-completitud basada en Máquinas de Turing
Computabilidad y Complejidad
55
Fabián Riquelme Csori Lenguajes y Autómatas
Máquinas de Turing
Tesis de Church-Turing
Máquinas de Turing universales
NP-completitud basada en Máquinas de Turing
Computabilidad y Complejidad
Referencias
56
Fabián Riquelme Csori Lenguajes y Autómatas