Apuntes de Teoría de Computación

Anuncio
Apuntes de Teoría de Computación
StopK no es computable............................................................................................................................2
DeltaPrima no es computable.....................................................................................................................3
EqId no es computable...............................................................................................................................4
TOT no es recursivamente enumerable (r.e)..............................................................................................5
Índice (I) que Respeta Funciones no es decidible......................................................................................6
1
StopK no es computable
StopK ( p)=1 si I x ( p) es un programa cte y < I x ( p) , m>↓∀ m
StopK ( p)=0 en caso contrario
(1) Supongamos que StopK es computable entonces existe la macro MSK que la computa
.< MSK , p>→1 ⇔ I x ( p) es constante ∧ ∀ m < I x ( p),m>↓
.< MSK , p>→0 ⇔ I x ( p) es constante ∧ ∃ n < I x ( p) ,n>↑
(2) Sea g la función transformadora que, a partir de un índice de programa q y una entrada n,
retorna el índice del programa constante q'. Sabemos que g es computable y que GM es la
macro que la computa.
.<GM ,<q , n≫→q ' ⇔ Φq (n)=Φ q ' (m)∀ m∈ℕ
(3) Sea Q la siguiente macro de expresión
EXPR Q (Y0,Y1) MACRO
Y2:= GM(Y0,Y1)
Y2:= MSK(Y2)
RESULT(Y2)
(4) Se demuestra a continuación que Q computa Stop
.<Q ,<q ,n≫→1 ⇔ < MSK , q ' >→1 ⇔ .<GM ,< q , n≫→q ' ⇔ .< I x (q), n>↓ ⇔ stop(q ,n)=1
(3)
(2)
(1,2 )
(stop )
.<Q ,<q ,n≫→0 ⇔ < MSK , q ' >→0 ⇔ .<GM ,<q , n≫→q ' ⇔ .< I x (q), n>↑ ⇔ stop(q , n)=0
(3)
(2 )
(1,2)
(stop)
(5) Dado que Stop no es computable, entonces Q no es computable. Como consecuencia, la
suposición sobre la computabilidad de MSK se cae. Finalmente, StopK no es computable.
2
DeltaPrima no es computable
DeltaPrima (p ,n , m)=1 si ejecSentNum( p , n , m) es verdadero
DeltaPrima( p ,n , m)=0 si ejecSentNum ( p , n , m) es falso
(1) Supongamos que DeltaPrima es computable entonces existe la macro MDELTA que la computa
.< MDELTA ,< p , n , m≫→1 ⇔ ejecSentNum( p , n , m)
.< MDELTA ,< p , n , m≫→0 ⇔ not ejecSentNum ( p , n ,m)
(2) Sea pe la función transformadora que, a partir de un índice de programa q, retorna el índice de
programa p junto con el número m de su última línea. El programa de índice p es copia del
programa de índice q, pero agrega como última sentencia una asignación a la variable MAX+1
del valor 0. Sabemos que pe es computable y PM la macro que la computa. Se verifica la
siguiente propiedad del programa transformado
.< PM ,< q , n≫→< p , m> : : < I x (q ), n>↓ ⇔ ejecSecNum( p , n , m) .
.< PM ,< q , n≫→< p , m> : : < I x (q ), n>↑ ⇔ not ejecSecNum (p ,n , m)
(3) Sea D el siguiente programa
PROGRAM(<X0,X1>)
-- recibe <q,n>
X2 := PM(X0,X1); --devuelve <p,m>
X3 := FST(X2);
--p
X4 := SND(X2);
--m
X5 := MDELTA(X3,X1,X4)
RESULT(X5)
(4) Se demuestra que D computa Stop
.< D ,<q ,n≫→1 ⇔ . ejecSentNum (p ,n , m) ⇔ < I x ( q),n>↓ ⇔ stop( q , n)→1
(1)
(2)
(stop)
.< D ,<q ,n≫→0 ⇔
not ejecSecNum( p , n , m) ⇔
< I x ( q), n>↑ (stop)
⇔ stop(q ,n)→0
(1)
(2)
(5) Dado que Stop no es computable, entonces MDELTA no computa DeltaPrima y finalmente
DeltaPrima no es computable.
3
EqId no es computable
Eqid (x)=1 si Φ x =id (la función identidad )
Eqid (x)=0 en caso contrario
(1) Supongamos que EqId es computable, entonces existe la macro MEQ que la computa
.< MEQ , x >→1 ⇔ Φ x =id
.< MEQ , x >→0 ⇔ Φ x ≠id
(2) Sea id la función identidad. Sabemos que id es computable. Sea ID el siguiente programa que, a
partir de un índice de programa q y un número n, computa la función identidad.
PROGRAM(X0)
X1 := EVAL-PROG(q,n)
RESULT(X0)
(3) Sea MID la macro que calcula el índice del programa ID.
.< MID ,< q , n≫→i ⇔ Φ i=id ⇔ .< I x (q), n>↓
.< MID ,< q , n≫→ j ⇔ Φ j≠id ⇔ .< I x ( q), n>↑
(4) Sea I el siguiente programa
PROGRAM(<X0,X1>)
X2 := MID(X0,X1)
X3 := MEQ(X2)
RESULT(X3)
--<q,n>
(5) Se demuestra que I computa Stop
.< I ,< q , n≫⇒1 ⇔
< MEQ , i>→1 ⇔
< MID ,< q , n≫→i ⇔
< I x (q), n>↓ (stop)
⇔ stop(q , n)=1
(1)
(3)
(3)
.< I ,< q , n≫⇒0 ⇔ < MEQ , j>→0 ⇔ < MID ,<q , n≫→ j ⇔ < I x (q),n>↑ ⇔ stop(q , n)=0
(1)
(3 )
(3)
(stop )
(6) Dado que Stop no es computable, entonces MEQ no computa EqId y finalmente, EqId no es
computable.
4
TOT no es recursivamente enumerable (r.e)
TOT ={i ∈ℕ, φ i es total }
(1) Supongamos que TOT es r.e, como TOT no es vacío, existe una función de enumeración
efTot :ℕ→TOT total, sobreyectiva y computable. Sea EFTOT el programa que computa
efTot, por lo tanto, EFTOT es el programa que devuelve el índice de todas las funciones totales,
aquellas que siempre terminan.
(2) Sea g una función total, sobreyectiva y computable definida de la siguiente manera:
g( x)=Φ efTot (x) (x)+1 . Aplicando la técnica de la diagonalización se muestra, por reducción al
absurdo, que g no aparece enumerada por efTot porque difiere de cada función enumerada por
efTot en 1. Pero esto se puede verificar también a nivel de los programas que implementan estas
funciones.
(3) Sea G un programa para computar g, con índice x de acuerdo a EFTOT.
PROGRAM (X0)
X1 := EFTOT (X0);
X2 := EVAL-PROG(X1,X0);
X2 := SUC(X2);
RETURN (X2)
(4) G es el programa que implementa una función total. Se puede ver que si existe EFTOT, la
misma termina (por definición de r.e), del mismo modo sabemos que EVAL-PROG es
computable. Sin embargo hay una contradicción con el valor computado por G, la que se
origina por suponer que EFTOT existe.
.<G , x >⇒(n+1)⇔< EVAL−PROG (efTot( x), x )> ⇒n ⇔ Φ efTot (x) (x )=n ⇔ <G , x>⇒ n
(5) Si EFTOT no existe entonces no existe una función de enumeración. De lo anterior, TOT no es
recursivamente enumerable.
5
Índice (I) que Respeta Funciones no es decidible
I ≠ℕ∧I ≠∅ , I respeta funciones :(i∈I ∧ φ i=φ j ) → j∈I
(1) Supongamos que I es decidible, entonces existe la macro MI que computa su función
característica C I . Sin perder generalidad asumimos que la función vacía no está en I (si
estuviera basta considerar el conjunto complemento de I).
(2) Sea q el índice (de una función) que está en I, ya que I no es vacío . Sea H(n) el programa de
índice h(n) (que computa una función “muy relacionada” con la función indexada por q) .
PROGRAM(X0)
X1 := EVAL-PROG(n,n)
X1 := EVAL-PROG(q,X0)
RESULT(X1)
(3) Se verifica la siguiente propiedad : h(n)∈ I ⇔ .< I x (n), n>↓ . Sea MH la macro que calcula
el índice del programa H(n).
(4) Sea J el siguiente programa
PROGRAM(X0)
X1 := MH(X0)
X1 := MI(X1)
RESULT(X1)
(5) Se demuestra que J computa Θ(n)
.<J , n>↓ ⇔
(.< MI ,h (n)> ⇒1) ⇔
h(n)∈ I ⇔
.< I x (n), n>↓
(2)
(1)
(3)
.< J , n>↑ ⇔ (.< MI , h(n)>⇒0) ⇔ h(n)∈ I ⇔ .< I x (n), n>↑
(2)
(1 )
(3)
(6) Dado que Θ(n) no es computable, entonces MI no computa la función característica C I
finalmente I no es decidible.
(7) Fin.
6
y
Descargar