Teorıa de la Complejidad ComputacionalTema II: Modelos de Computacion
Mario de J. Perez Jimenez
Grupo de Investigacion en Computacion NaturalDpto. Ciencias de la Computacion e Inteligencia Artificial
Universidad de Sevilla
http://www.cs.us.es/~marper/
Master Universitario en MatematicasCurso 2016-2017
Indice del tema I
I Modelo de computacion de las maquinas de Turing.
• Sintaxis.
• Semantica.
• Maquinas de Turing con k cintas.
• Maquinas de Turing no deterministas.
I Modelo de computacion GOTO.
• Programas GOTO.
• Funciones computables en el modelo GOTO:
2 / 29
Modelos de Computacion
Formalizacion matematica del concepto de procedimiento mecanico:
I Sintaxis.
I Semantica.
Modelos de computacion orientado a:
I Programas (Ej: modelo GOTO).
I Funciones (Ej: funciones recursivas).
I Maquinas (Ej: maquinas de Turing).
Modos de computacion:
I Determinista.
I No-determinista.
I Secuencial.
I Paralelo.
3 / 29
Maquinas de Turing: Sintaxis (I)
Es una tupla, M = (Q, q0,F ,Σ,B, ., δ) tal que:
• Q es un alfabeto (estados).
• q0 ∈ Q (estado inicial).
• F = {qh, qy , qn} ⊆ Q (estados finales, todos ellos distintos entre sı).
• Σ es un alfabeto (de la maquina) tal que Q ∩ Σ = ∅ (sımbolos).
• B ∈ Σ (sımbolo blanco).
• . ∈ Σ (primer sımbolo), . 6= B.
• δ es una aplicacion de (Q − F )× Σ en Q × Σ× {0, 1,−1} (funcion detransicion) tal que:
? Si δ(q, .) = (q′, s′, x) entonces s′ = . ∧ x = 1.
? Si s 6= . y δ(q, s) = (q′, s′, x) entonces s′ 6= ..
4 / 29
Maquinas de Turing: Sintaxis (II)
Una maquina de Turing M consta de:
I Una cinta infinita a la derecha con primera casilla.
I Una cabeza de trabajo lectora/escritora que se puede desplazar a lo largode la cinta.
Si δ(q, s) = (q′, s ′, x), diremos que M pasa de q a q′, sustituye s por s ′ y semueve segun el valor de x ∈ {0, 1,−1}.
s s s s s s s s s ss BB B B B B B B BB1 2 3 4 5 6 7 8 9 10 11
Unidad de Control
q
5 / 29
Maquinas de Turing: Semantica (I)
Configuracion (descripcion instantanea) de una maquina de Turing M:
∗ Una terna (q,w , u) tal que q ∈ Q,w ∈ Σ∗ y u ∈ Σ∗.
Una configuracion (q,w , u) puede ser interpretada como sigue:
? q es el estado actual en que se encuentra M.
? .w u es la palabra escrita en la cinta de M.
? Si w no es la cadena vacıa, M analiza el ultimo sımbolo de w . Casocontrario, analiza el sımbolo . de la primera casilla.
s s s s s s s s s ss BB B B B B B B BB1 2 3 4 5 6 7 8 9 10 11
Unidad de Control
q
w u
6 / 29
Maquinas de Turing: Semantica (II)Sea C = (q,w , u) una configuracion de M.
∗ Si q = q0, w es la cadena vacıa λ y u ∈ (Σ− {B})∗: C es la configuracion inicial con dato de entrada u
y notaremos C = Iu .
∗ Si q ∈ F : C es una configuracion de parada.
∗ Si q = qy : C es una configuracion de aceptacion.
∗ Si q = qn : C es una configuracion de rechazo.
Configuracion siguiente: Sea (q,w1 . . .wr−1wr , u1u2 . . . us ) una configuracion de M.
∗ Si δ(q,wr ) = (q′,w′r ,−1), diremos que la configuracion siguiente de (q,w1 . . .wr−1↓
wr︸ ︷︷ ︸,︷ ︸︸ ︷u1u2 . . . us )
es (q′,w1 · · ·↓
wr−1︸ ︷︷ ︸,︷ ︸︸ ︷w′r u1u2 . . . us ).
∗ Si δ(q,wr ) = (q′,w′r ,+1), diremos que la configuracion siguiente de (q,w1 . . .wr−1↓
wr︸ ︷︷ ︸,︷ ︸︸ ︷u1u2 . . . us )
es (q′,w1 . . .wr−1w′r↓u1︸ ︷︷ ︸,
︷ ︸︸ ︷u2 . . . us ).
∗ Si δ(q,wr ) = (q′,w′r , 0), diremos que la configuracion siguiente de (q,w1 . . .wr−1↓
wr︸ ︷︷ ︸,︷ ︸︸ ︷u1u2 . . . us ) es
(q,w1 . . .wr−1
↓w′r︸ ︷︷ ︸,
︷ ︸︸ ︷u1u2 . . . us ).
7 / 29
Maquinas de Turing: Semantica (III)
Una computacion C de una MT es una sucesion (finita o infinita) de configuraciones(C0,C1, . . . ,Cr ), r ∈ N ∪ {∞}, tal que
I C0 es una configuracion inicial (asociada a un dato de entrada u ∈ (Σ−{B})∗).
I Para cada i < r , la configuracion Ci+1 es la configuracion siguiente de Ci .
I La computacion C es de parada si
? r ∈ N y la ultima configuracion Cr es (q, λ, u′), siendo q ∈ {qy , qn, qh) y u′ ∈ (Σ− {B})∗.
∗ Si q = qy : M acepta el dato u. Escribiremos M(u) = Y .
∗ Si q = qn : M rechaza el dato u. Escribiremos M(u) = N.
∗ Si q = qh : el resultado de la computacion es u′ ∈ (Σ−{B})∗. Escribiremos M(u) = u′.
I Si la computacion C es de parada, escribiremos M(u) ↓
I Si la computacion C no es de parada, escribiremos M(u) ↑
8 / 29
Decision y aceptacion de un lenguaje en una MT
Sea M una MT cuyo alfabeto de trabajo es Σ.
Sea L un lenguaje sobre Σ \ {B}.
I M decide el lenguaje L sii para cada u ∈ (Σ− {B})∗:
? Si u ∈ L, entonces M(u) = Y .
? Si u /∈ L, entonces M(u) = N.
I M acepta el lenguaje L sii para cada u ∈ (Σ− {B})∗:
? Si u ∈ L, entonces M(u) = Y .
? Si u /∈ L, entonces M(u) ↑.
9 / 29
Lenguajes recursivos y recursivamente enumerables
I L ⊆ (Σ− {B})∗ es recursivo sii existe una MT que decide L.
I L ⊆ (Σ− {B})∗ es recursivamente enumerable sii existe una MT queacepta L.
Proposicion 1: Todo lenguaje recursivo es r.e.
Proposicion 2: Existen lenguajes r.e. que no son recursivos.
10 / 29
Ejemplo de una MT de decision
Q = {q0, q1, q2, q′1, q′2, q3, qh, qy , qn}; Σ = {0, 1,B, .}
(Q − F )× Σ Q × Σ× {0, 1,−1}(q0, 0) (q1, ., 1)(q0, 1) (q2, ., 1)(q0, B) (qy , B, 0)(q0, .) (q0, ., 1)(q1, 0) (q1, 0, 1)(q1, 1) (q1, 1, 1)
(q1, B) (q′1, B,−1)(q2, 0) (q2, 0, 1)(q2, 1) (q2, 1, 1)
(q2, B) (q′2, B,−1)
(q′1, 0) (q3, B,−1)
(q′1, 1) (qn, 1, 0)
(q′1, .) (qy , B, 1)
(q′2, 0) (qn, 1, 0)
(q′2, 1) (q3, B,−1)
(q′2, .) (qy , ., 1)(q3, 0) (q3, 0,−1)(q3, 1) (q3, 1,−1)(q3, .) (q0, ., 1)
11 / 29
Funciones computables por maquinas de Turing
I Una MT, M, calcula f : (Σ− {B})∗ → Σ∗ sii para cada u ∈ (Σ− {B})∗se tiene que M(u) = f (u).
I Una funcion f es recursiva sii existe una MT que calcula f .
Un ejemplo: Q = {q0, q1, qh, qy , qn}; Σ = {0, 1,B, .}(Q − F )× Σ Q × Σ× {0, 1,−1}
(q0, 0) (q0, 0, 1)(q0, 1) (q0, 1, 1)(q0, B) (q1, B,−1)(q0, .) (q0, ., 1)(q1, 0) (qh, 1, 0)(q1, 1) (q1, 0,−1)(q1, B) (q1, B, 0)(q1, .) (qh, ., 1)
Hallemos M(01)
1.q0. 0 1 B. 5. . 0
q1
1 B.
2. .q0
0 1 B. 6. .q1
0 0 B.
3. . 0q0
1 B. 7. .qh
1 0 B.
4. . 0 1q0
B.
12 / 29
Maquinas de Turing que resuelven problemas
¿Como resolver un problema X ?
I Si X es un problema de decision,
? Una MT resuelve X si decide el lenguaje LX asociado a X .
I Si X es un problema identificado por una aplicacion fX : LX → Σ∗,
? Una MT resuelve X si calcula la funcion fX .
13 / 29
Maquinas de Turing con k cintas
I En cada instante la maquina se encuentra en un estado.
I Consta de k cintas, infinitas a la derecha con primera casilla.
I Cada cinta tiene una cabeza que en cada instante:
? Analiza una casilla.
? Puede reescribir sobre la casilla.
? Puede cambiar de estado (el mismo en todas las casillas).
? Se puede desplazar: 0, 1,−1.
14 / 29
Maquinas de Turing con k cintas
I Para realizar una computacion con entrada u ∈ Σ∗:
? Se registra la entrada en la primera cinta.
? Las restantes cintas estan en blanco.
? Todas las cabezas apuntan a la primera casilla.
? La maquina se encuentra en el estado inicial.
? La funcion de transicion actua sobre cada cinta.
• Si termina en qh, la salida es el contenido de la cinta k–esima.
Teorema : Para cada MT, M, con k cintas existe una MT, M ′, con una cintatal que M(u) = M ′(u), para cada entrada u.
¿Que peaje se ha de pagar para “pasar” de una MT con k cintas a una MT
con una cinta que sea equivalente a ella?
15 / 29
Maquinas de Turing no deterministasEs una tupla, M = (Q, q0,F ,Σ,B, ., δ) tal que:
• Q es un alfabeto (estados).
• q0 ∈ Q (estado inicial).
• F = {qh, qy , qn} ⊆ Q (estados finales, todos ellos distintos entre sı).
• Σ es un alfabeto (de la maquina) tal que Q ∩ Σ = ∅ (sımbolos).
• B ∈ Σ (sımbolo blanco).
• . ∈ Σ (primer sımbolo), . 6= B.
• δ es una aplicacion de (Q − F )× Σ en P(Q × Σ× {0, 1,−1}) (funcion de
transicion) tal que
? Si (q′, s′, x) ∈ δ(q, .) entonces s′ = . ∧ x = 1.
? Si (q′, s′, x) ∈ δ(q, s) y s 6= . entonces s′ 6= ..
Toda MT determinista es una MT no determinista.
Teorema : Si una MT no determinista decide L, entonces existe otra MT deterministacon tres cintas que decide L.
¿Que peaje se ha de pagar para “pasar” de una MTND que decide L a una MTD quetambien decide L?
16 / 29
Modelo de computacion GOTO: SintaxisModelo secuencial y determinista (conjunto de datos: N).El lenguaje de programacion GOTO
1. Variables:
De entrada: X1(= X ), X2, X3, ...De salida: YAuxiliares: Z1(= Z), Z2, Z3, ...
VAR: conjunto de todas las variables de GOTO.
2. Etiquetas: A1, B1, C1,D1, E1, A2, B2, C2,D2, E2, . . .
• Notacion: A = A1, B = B1, C = C1, D = D1, E = E1.
3. Instrucciones basicas: Para cada variable V y cada etiqueta L:
• Incremento: V ←− V + 1
• Decremento: V ←− V − 1
• Condicional: IF V 6= 0 GOTO L
• Skip: V ←− V
• Instrucciones etiquetadas: [K ] V ←− V + 1; [K ] V ←− V − 1; [K ] IF V 6= 0 GOTO L;[K ] V ←− V , siendo K una etiqueta distinta de E .
Programa GOTO: Sucesion finita de instrucciones basicas (etiquetadas o no)cuya ultima instruccion NO es Y ←− Y .
• Si P = I1, . . . , In es un programa GOTO, la longitud de P es n (se notara por |P|).
• El Programa Vacıo: consta de 0 instrucciones.
• GOTOP: conjunto de todos los programas GOTO.
17 / 29
Modelo de computacion GOTO: Semantica (I)Sea P = I1, . . . , In un programa GOTO.
• var(P): conjunto de todas las variables que aparecen en P.
• Un estado de P es una aplicacion s de VAR en N: si s(V ) = m, notaremos V = m.
• Una configuracion de P, es un par σ = (i, s) donde 1 ≤ i ≤ |P| + 1 y s es un estado de P.
∗ Configuracion inicial: i = 1, s(V ) 6= 0 para un numero finito de variables de entrada y s(V ) = 0
para cada variable que no sea de entrada.
∗ Configuracion de parada: i = |P| + 1.Si σ = (j , s) una configuracion de P que no es de parada, la configuracionsiguiente σ′ = (j ′, s ′) de σ (σ `p σ
′) se define como sigue:
. Si Ij ≡ V ←− V + 1 y s(V ) = m, entonces j′ = j + 1 y s′ se obtiene de s sustituyendo el valor V = m
por el valor V = m + 1.
. Si Ij ≡ V ←− V − 1 y s(V ) = m, entonces j′ = j + 1 y si m > 0, entonces s′ se obtiene de s
sustituyendo el valor V = m por el valor V = m − 1 (si m = 0, entoncess′ = s).
. Si Ij es de tipo SKIP, entonces j′ = j + 1 y s′ = s.
. Si Ij ≡ IF V 6= 0 GOTO L, entonces σ′ = σ. Ademas,
∗ Si s(V ) = 0, entonces j′ = j + 1 (ir a la siguiente instruccion o terminar si j = n).
∗ Si s(V ) 6= 0 y existe k tal que Ik es la primera instruccion etiquetada con L, entonces j′ = k (ir a
la primera instruccion etiquetada con L).
∗ Si s(V ) 6= 0 y no existe tal k, j′ = |P| + 1 (terminar).
18 / 29
Modelo de computacion GOTO: Semantica (II)
Ejecucion de un programa GOTO P = I1, . . . , In.
I Una computacion (o ejecucion) C de P es una sucesion (finita o infinita)
de configuraciones σ1, . . . , σi , . . . tal que:
? σ1 = (1, s1) es una configuracion inicial;? Si σi no es de parada, entonces σi `P σi+1.
I P(a1, . . . , ak ): computacion de P con dato de entrada (a1, . . . , ak ) es laque corresponde a la configuracion inicial σ1 = (1, s1), siendo
s1(X1) = a1, s1(X2) = a2, . . . , s1(Xk ) = ak y s1(V ) = 0, para las restantes variables V
I Si C = s1, . . . , si0 es una sucesion finita, diremos que
? C es de parada: P(a1, . . . , ak ) ↓
? La configuracion si0es de parada.
? P(a1, . . . , ak ) = b, siendo b el valor de Y en la configuracion de parada si0
(resultado de ejecutar el programa P con dato de dentrada (a1, . . . , ak )).
I Si C es una sucesion infinita, diremos que C no es de parada: P(a1, . . . , ak ) ↑
I Solo las computaciones de parada proporcionan resultados.
19 / 29
Un ejemplo
P ≡
[A] IF X 6= 0GOTO BZ ←− Z + 1IF Z 6= 0GOTO E
[B] X ←− X − 1Y ←− Y + 1IF X 6= 0GOTO A
Hallemos P(3):
σ1 = (1, {X = 3, Y = 0, Z = 0})σ2 = (4, {X = 3, Y = 0, Z = 0})σ3 = (5, {X = 2, Y = 0, Z = 0})σ4 = (6, {X = 2, Y = 1, Z = 0})σ5 = (1, {X = 2, Y = 1, Z = 0})σ6 = (4, {X = 2, Y = 1, Z = 0})σ7 = (5, {X = 1, Y = 1, Z = 0})σ8 = (6, {X = 1, Y = 2, Z = 0})σ9 = (1, {X = 1, Y = 2, Z = 0})σ10 = (4, {X = 1, Y = 2, Z = 0})σ11 = (5, {X = 0, Y = 2, Z = 0})σ12 = (6, {X = 0, Y = 3, Z = 0})σ13 = (7, {X = 0, Y = 3, Z = 0})
20 / 29
Funciones GOTO–computables
Sean P un programa GOTO y k ≥ 1.
I Funcion de aridad k calculada por P:
Es la funcion [[P]](k) : Nk − → N, definida por
[[P]](k)(a1, . . . , ak ) = P(a1, . . . , ak ) = resultado de ejecutar P con dato de entrada (a1, . . . , ak )
Una funcion f de aridad k ≥ 1 es GOTO–computable si existe un programaGOTO, P, tal que f = [[P]](k).
I G-COMP: conjunto de todas las funciones GOTO computables.
I G-COMP(k): conjunto de todas las funciones GOTO computables de aridad k.
21 / 29
Ejemplos de funciones GOTO–computables
I La funcion identidad IdN : N→ N definida por IdN (x) = x , ∀x ∈ N.
IF X 6= 0 GOTO BZ ←− Z + 1IF Z 6= 0 GOTO E
[B] X ←− X − 1Y ←− Y + 1IF X 6= 0 GOTO B
I La funcion vacıa f(k)∅ , k ≥ 1: f
(k)∅ (x1, . . . , xk ) ↑, ∀(x1, . . . , xk ) ∈ Nk .
[A] Z ←− Z + 1IF Z 6= 0 GOTO A
I La funcion nula O(k), k ≥ 1: O(k)(x1, . . . , xk ) = 0, ∀(x1, . . . , xk ) ∈ Nk .
Es calculada por cualquier programa que pare siempre y en el que
no aparezca la variable de salida Y .
22 / 29
Codificacion de programas GOTO
Cada programa GOTO se codifica por un numero natural: #(P)
? Todo numero natural codifica un unico programa GOTO.
Para ello, se codifican las instrucciones GOTO: #(I )
? Todo numero natural codifica un unica instruccion GOTO.
Para ello, se codifican:
I Las variables.
I Las etiquetas.
I Los formatos de las instrucciones (skip, incremento, decremento y condicional).
Si P = (I1, I2, . . . , In) es un programa GOTO, se define el codigo de P ası:
#(P) = [#(I1),#(I2), . . . ,#(In)]− 1
23 / 29
Programas universales (I)
Cuestion:
Para cada n ≥ 1, ¿es computable la funcion de aridad (n + 1)que asigna a cada n-tupla (x1, . . . , xn) y cada programa GOTO P elresultado de la computacion P(x1, . . . , xn)?
Responderemos afirmativamente a esta cuestion.
I Un programa Un que calcule esa funcion de aridad (n + 1) se denominaprograma universal.
I La funcion de aridad (n + 1) que calcula Un se notara por Un.
[[Un]](n+1)(x1, . . . , xn,#(P)) = [[P]](n)(x1, . . . , xn) = Un(x1, . . . , xn,#(P))
Teorema. Para cada n ≥ 1, existe un programa GOTO, Un, tal que para todo~x ∈ Nn y todo programa GOTO, P, se tiene:
[[Un]](n+1)(~x ,#(P)) = [[P]](n)(~x)
Basicamente, un programa universal es un interprete de GOTO.
24 / 29
El programa universal UnZ ←− Xn+1 + 1S ←−
∏ni=1(p2i )
Xi
K ←− 1
(1) inicializacion
[C ] IF K = Long(Z) + 1 GOTO F}
(2) test de parada
U ←− r((Z)k )P ←− pr(U)+1
IF l(U) = 0 GOTO NIF l(U) = 1 GOTO AIF P - S GOTO NIF l(U) = 2 GOTO MK ←− µi ≤ Long(Z)[l((Z)i ) + 2 = l(U)]GOTO C
(3) paso de computacion de Xn+1
[M] S ←− qt(S ,P)GOTO N
[A] S ←− S ·P[N] K ←− K + 1
GOTO C[F ] Y ←− (S)1
(4) salida
25 / 29
Funciones ındice
I Para n ≥ 1 y e ∈ N, se define la funcion GOTO–computable n-ariade ındice e, ası: ϕ
(n)e (x1, . . . , xn) = Un(x1, . . . , xn, e).
• Observese que: ϕ(n)#(P) = [[P]](n).
P0 P1 P2 . . . . . . Pn . . . . . .
ϕ(1)0 ϕ
(1)1 ϕ
(1)2 . . . . . . ϕ
(1)n . . . . . .
ϕ(2)0 ϕ
(2)1 ϕ
(2)2 . . . . . . ϕ
(2)n . . . . . .
ϕ(3)0 ϕ
(3)1 ϕ
(3)2 . . . . . . ϕ
(3)n . . . . . .
......
......
......
ϕ(k)0 ϕ
(k)1 ϕ
(k)2 . . . . . . ϕ
(k)n . . . . . .
......
......
......
En donde #(Pi ) = i .
26 / 29
Conjuntos recursivos y recursivamente enumerables
La funcion caracterıstica de un conjunto A ⊆ Nk , es la funcion total:
CA(~x) =
{1 si ~x ∈ A0 si ~x ∈ Nk − A
La funcion caracterıstica parcial de un conjunto A ⊆ Nk , es la funcion parcial:
C∗A (~x) =
{1 si ~x ∈ A↑ si ~x ∈ Nk − A
Definicion. Un conjunto A ⊆ Nk es recursivo si la funcion caracterıstica CA esGOTO–computable.
Definicion. Un conjunto A ⊆ Nk es recursivamente enumerable (r.e.) si lafuncion caracterıstica parcial C∗A es GOTO–computable.
Resultados:
I Si un conjunto es recursivo, entonces tambien es r.e.
I Existen conjuntos r.e. que no son recursivos.
I Un conjunto A ⊆ Nk es recursivo si y solo si los conjuntos A y A son r.e.
27 / 29
Decidibilidad de problemas de decision
Un problema de decision X = (EX , θX ) es:
I decidible (o resoluble algorıtmicamente) si el conjunto LX asociado alproblema es recursivo.
I indecidible (o irresoluble algorıtmicamente) si el conjunto LX asociado alproblema no es recursivo.
I semidecidible (o parcialmente decidible) si el conjunto LX asociado alproblema es recursivamente enumerable.
28 / 29
El problema de la parada
Enunciado informal. Dado un programa GOTO, P, y un dato de entrada ~x ,determinar si P para sobre ~x .
Cuestion informal. ¿Es resoluble algorıtmicamente el problema de la parada?
Cuestion formal: Determinar si el conjunto K0 = {(x , y) ∈ N2 : ϕ(1)x (y) ↓} es
recursivo.
Resultado: El conjunto K0 es r.e. pero no es recursivo.
Es decir:
I El problema de la parada es indecidible pero, en cambio, es semidecidible.
29 / 29