7 - Dpto. Ciencias de la Computación e Inteligencia Artificial

Anuncio
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
Descargar