Tema 7: Indecidibilidad Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Computación Curso 2007–08 Comp., 2007–08 Indecidibilidad 7.1 Problemas de decisión Sea A un conjunto arbitrario y θ un predicado sobre A. Diremos que el problema siguiente: Dado x ∈ A determinar si se verifica θ(x) es un problema de decisión. Lo denotaremos por (A, θ). Un problema de decisión diremos que es I Decidible (o resoluble algorı́tmicamente) si existe un procedimiento mecánico que lo resuelve (es decir, que para cada x devuelve 1 si se verifica θ(x) y 0 si no se verifica). I Indecidible o irresoluble algorı́tmicamente si no es decidible. I Semidecidible. Si existe un procedimiento mecánico que, para cada x tal que se verifica θ(x), devuelve 1. Nota: Obsérvese que en un problema de decisión (A, θ): I Si θ es recursivo, el problema es decidible. I Si θ no es recursivo, el problema es indecidible. I Si θ es parcialmente decidible, el problema es semidecidible. Comp., 2007–08 Indecidibilidad 7.2 El problema de la parada (I) Enunciado informal. Dado un algoritmo A (por ejemplo, un programa GOTO) y un dato de entrada cualquiera ~x de dicho algoritmo, determinar si A para sobre ~x . Cuestión informal. ¿Es resoluble algorı́tmicamente el problema de la parada? Enunciado formal. Dados e, x ∈ N determinar si ϕe (x) ↓. Cuestión formal. ¿Es recursivo el conjunto: K0 = {(e, x) ∈ N2 : ϕe (x) ↓}? ————————————– * Si escribimos HALT (x, e) = ϕe (x) ↓, el problema de la parada se expresa como el par (N2 , HALT ) * Como veremos, la respuesta a la cuestión formal es negativa. Comp., 2007–08 Indecidibilidad 7.3 El problema de la parada (II) Sea HALT el predicado: HALT (x, y ) ⇐⇒ ϕy (x) ↓ Proposición. HALT (x, y ) es r.e. pero no recursivo. I En efecto, como HALT (x, y ) ⇐⇒ ∃z STEP (1) (x, y , z) luego, por el teorema de la proyección es r.e. Veamos que no es recursivo, utilizando el método diagonal. ↑ si HALT (x, x) Si fuese recursivo, la función: f (x) = 0 e.c.o.c. serı́a computable por el siguiente programa P: [A] IF HALT (x, x) GOTO A Si e = #(P), entonces, para todo x ∈ N: (1) HALT (x, e) ⇐⇒ ϕe (x) ↓⇐⇒ [[P]](1) (x) ↓ ⇐⇒ f (x) ↓⇐⇒ ¬HALT (x, x) y tomando x = e se llega a una contradicción. Comp., 2007–08 Indecidibilidad 7.4 El conjunto de la parada I Hemos probado implı́citamente que el conjunto de la parada: K = {x : ϕx (x) ↓} I es r.e. pero no recursivo (y, por tanto, N − K no es r.e.) Podemos, pues, afirmar que no existe un programa P que resuelva el siguiente problema: ∗ Entrada: Q ∈ GOTO, x ∈ N. 1, si [[Q]](x) ↓; ∗ Salida: 0, en caso contrario Comp., 2007–08 Indecidibilidad 7.5 El problema TOT (I) Enunciado informal. Dado un algoritmo A (por ejemplo, un programa GOTO) determinar si A para sobre cualquier dato de entrada. Cuestión informal. ¿Es resoluble algorı́tmicamente el problema TOT? Enunciado formal. Dado y ∈ N determinar si ∀x(ϕy (x) ↓). Cuestión formal. ¿Es recursivo el conjunto: TOT = {y ∈ N : ∀x(ϕy (x) ↓)}? ————————————– * Si escribimos Tot(y ) = ∀x(ϕy (x) ↓), el problema TOT se expresa como el par (N, Tot) * Como veremos, la respuesta a la cuestión formal no sólo es negativa sino que TOT ni siquiera es recursivamente enumerable. Comp., 2007–08 Indecidibilidad 7.6 El problema TOT (II) Proposición. El conjunto TOT = {y ∈ N : ∀x(ϕy (x) ↓) no es recursivamente enumerable. I Procedemos por R.A. Si TOT fuese recursivamente enumerable, existirı́a f ∈ R tal que rang (f ) = TOT . I Definamos entonces g : N −→ N ası́: g (x) = ϕf (x) (x) + 1 I I I g será total pues ϕf (x) ∈ TOT g será recursiva pues g (x) = U1 (x, f (x)) + 1 Por tanto, existirá n ∈ N tal que: g = ϕf (n) . Resultarı́a entonces que: g (n) = ϕf (n) (n) + 1 = g (n) + 1 I lo que es una contradicción. En consecuencia, TOT no es recursivamente enumerable. Comp., 2007–08 Indecidibilidad 7.7 El teorema de Rice Sea F ⊆ P (n) . Denotaremos por IF al conjunto: IF = {e ∈ N : (n) ϕe ∈ F} ≡ {#(P) : [[P]](n) ∈ F} Teorema. (Teorema de Rice) Si F ⊆ P (1) es tal que F 6= ∅, P (1) entonces IF NO es recursivo. Ejemplo. Sea f : N → N la función f (x) = x 2 , y sea A = {#(P) : [[P]](1) = f } Entonces, si F = {f } se tiene que IF = A. Obviamente, I F no es vacı́a ya que f ∈ F. I F 6= P, ya que existen funciones recursivas que no pertenecen a F (por ejemplo, la función nula O). Por el teorema de Rice, A no es recursivo. Comp., 2007–08 Indecidibilidad 7.8 El teorema de Rice (Demostración) Sean f ∈ F, g ∈ / F y h∅ la función vacı́a. Caso 1: h∅ ∈ / F: X2 ←− a Z ←− U(X2 , X2 ) Para cada a ∈ N, sea Qa el programa: Y ←− f (X1 ) Entonces la función G : N → N, G (a) = #(Qa ) es recursiva y se tiene: a ∈ K ⇒ U(a, a) ↓⇒ ∀x ([[Qa ]](x) = f (x)) ⇒ ϕG (a) = f ⇒ G (a) ∈ IF a∈ / K ⇒ U(a, a) ↑⇒ ∀x ([[Qa ]](x) ↑) ⇒ ϕG (a) = h∅ ⇒ G (a) ∈ / IF Es decir: a ∈ K ⇐⇒ G (a) ∈ IF y, por tanto, CK (a) = CIF (G (a)). Luego IF no es recursivo (en caso contrario, K serı́a recursivo). Caso 2: h∅ ∈ F Como el caso anterior, tomando g y P \ F en lugar de f y F. Comp., 2007–08 Indecidibilidad 7.9