4 votos

Demostrar que una función no es computable.

se demostró que la siguiente función no es computable:

$h(x) = \begin{cases} \mu n.\Phi_x(n) \downarrow & \mbox{if } \exists n \Phi_x(n) \downarrow \\ \uparrow & \mbox{otherwise} \end{cases}$

utilizando la siguiente función auxiliar:

$f(x,y) = \begin{cases} 0 & \mbox{if } y > 0 \mbox{ or } \Phi_x(x) \downarrow \\ \uparrow & \mbox{otherwise} \end{cases}$

Mi pregunta ahora es: ¿cuál es la razón para elegir esta función auxiliar en particular? No estoy muy seguro de la función del $y > 0$ .

Gracias.

2voto

5xum Puntos 158

Permítanme primero demostrar que $h$ no es computable y luego tratar de motivar la elección de $f$ .

En primer lugar, hay que tener en cuenta que la función $f$ es computable (Intuición: si $y > 0$ , entonces la salida $0$ ; en caso contrario, empezar a computar $\Phi_x(x)$ Si eso no termina nunca, entonces el cálculo de $f$ tampoco termina; si el cálculo de $\Phi_x(x)$ termina, entonces la salida $0$ .)

Como en el comentario del OP, dejemos $i$ sea un índice de $f$ es decir, $f = \Phi_i$ ; Por el teorema s-m-n, $f(x,y) = \Phi_i(x,y) = \Phi_{s(i,x)}(y)$ para todos $x, y$ .

Supongamos ahora que $h$ es computable. Entonces también lo sería la función $\lambda x.h(s(i,x))$ . Sin embargo, $$\begin{align*} h(s(i,x)) & = \begin{cases} \mu y.\Phi_{s(i,x)}(y) \downarrow & \text{if such a $ y $ exists} \\ \uparrow & \text{otherwise} \end{cases} \\ & = \mu y. f(x,y)\downarrow \qquad \text{(note that such a $ y $ always exists)} \\ & = \begin{cases} 0 & \text{if } \Phi_x(x) \downarrow \\ 1 & \text{if } \Phi_x(x)\uparrow. \end{cases} \end{align*}$$ Así, esto le permitiría decidir si $\Phi_x(x)\downarrow$ , dando lugar a una contradicción.

Para motivar la elección de $f$ , tenga en cuenta que aunque la función $g$ definido por $$g(x) = \begin{cases} 0 & \text{if $\exists n. \Phi_x (n) \downarrow$} \\ \uparrow & \text{otherwise} \end{cases}$$ es computable, encontrar el menor $n$ para lo cual $\Phi_x(n) \downarrow$ no es computable.

(Intuición: se puede calcular $g$ intercalando los cálculos de $\Phi_x(0)$ , $\Phi_x(1)$ , $\dots$ . Si uno de ellos termina, entonces la salida $0$ Si todos ellos no terminan nunca, tampoco lo hace el cálculo de $g$ . Para $h$ este truco no funciona, porque incluso si, digamos, el cálculo de $\Phi_x(100)$ termina, nunca sabrá si debe emitir $100$ o esperar hasta que uno de los cálculos de $\Phi_x(0)$ , $\dots$ , $\Phi_x(99)$ termina).

Entonces, ¿qué $f$ es asegurarse de que el cálculo de $f(x,1)$ siempre termina. Sin embargo, no se puede asegurar que $1$ es el más pequeño $y$ para el que el cómputo $f(x,y)$ termina, porque la terminación del cómputo de $f(x,0)$ equivale a la finalización del cómputo de $\Phi_x(x)$ que es indecidible.

2voto

frabala Puntos 1709

Teoría

Esta es una variación de Teorema de Rice que dice que si $C$ es un no vacío y adecuado subclase de la clase de todas las funciones recursivas, entonces el conjunto $\{x : \phi_x\in C\}$ no es decidible. Por lo tanto, la función $$g(x)= \begin{cases} 1,\text{ if }\phi_x\in C\\ 0, \text{ else} \end{cases}$$ no es computable.

Una breve aplicación

Ponemos $C$ para ser la subclase de todas las funciones $\phi_x$ tal, que $h(x)\downarrow\Rightarrow \exists n.\phi_x(n)\downarrow$ . Toma $$k(x)= \begin{cases} 0,\text{ if } x>0\\ \uparrow,\text{ else } \end{cases}$$ Observamos que $k\in C$ porque $k(1)\downarrow$ Así que $C$ no está vacía. Además, es una subclase propia, ya que existe una función recursiva parcial que no pertenece a $C$ , es decir, la función no definida en ninguna parte $\Omega(x)=\uparrow$ .

Puede definir $$ g(x)= \begin{cases} 1,\text{ if }h(x)\downarrow\\ 0,\text{ else } \end{cases} = \begin{cases} 1,\text{ if }\phi_x\in C\\ 0,\text{ else } \end{cases} $$ Entonces, por el teorema de Rice, $g(x)$ no es computable. Entonces $h(x)$ tampoco es computable, porque si lo fuera, entonces $g$ también sería computable. Pero no lo es porque el teorema de Rice lo dice.

Una variante

Si no quieres usar el teorema de Rice, puedes usar una variación de su demostración. Aquí ponemos $C$ para ser la subclase de todas las funciones recursivas parciales para las que $\exists n.\phi_x(n)\downarrow$ . Así que en realidad $C$ es el mismo que el anterior y ya hemos encontrado un $k\in C$ .

Así que ahora, observamos que $$h(x)= \begin{cases} \mu y.\phi_x(y)\downarrow,\text{ if }\exists n.\phi_x(n)\downarrow\\ \uparrow, \text{ else} \end{cases} = \begin{cases} \mu y.\phi_x(y)\downarrow,\text{ if }\phi_x\in C\\ \uparrow, \text{ else} \end{cases}$$ es bastante similar a $g$ definida anteriormente. Suponemos que es computable. La prueba del teorema de Rice utiliza una función computable $f(x,y)$ definidos con la ayuda de algunos computables $k\in C$ . A continuación, realiza algunas manipulaciones (que implican el teorema S-n-m) y concluye que $g$ compuesta con otra función decidible decide el problema de detención. Esto es una contradicción ya que el problema de detención no es decidible, por lo tanto $g$ no es computable. Utilizaremos un método similar para $h$ en lugar de $g$ .

Por lo tanto, dejemos que $$f(x,y)= \begin{cases} k(y), \text{ if }\phi_x(x)\downarrow\\ \uparrow,\text{ else} \end{cases} = \begin{cases} 0, \text{ if }y>0\text{ or }\phi_x(x)\downarrow\\ \uparrow,\text{ else} \end{cases}$$ Tenga en cuenta que esta es la función en su puesto y es computable. La función de $y>0$ es que necesitamos utilizar alguna función de la subclase $C$ . Y encontramos tal función $k\in C$ que utiliza el caso $y>0$ . Por el teorema S-n-m existe una función recursiva primitiva (es decir, computable) $l(x)$ tal, que $f(x,y)=\phi_{l(x)}(y)$ . Veamos qué ocurre al intentar calcular $h(l(x))$ que se supone que es computable. $$ h(l(x))= \begin{cases} \mu y.\phi_{l(x)}(y)\downarrow,\text{ if }\exists n.\phi_{l(x)}(n)\downarrow\\ \uparrow, \text{ else} \end{cases} = \begin{cases} \mu y.f(x,y)\downarrow,\text{ if }\exists n.f(x,n)\downarrow\\ \uparrow, \text{ else} \end{cases} =\\= \begin{cases} \mu y.f(x,y)\downarrow,\text{ if }\exists n.(f(x,n)=k(n))\\ \uparrow, \text{ else} \end{cases} = \begin{cases} \mu y.f(x,y)\downarrow,\text{ if }\phi_x(x)\downarrow\\ \uparrow, \text{ else} \end{cases} =\text{HP} $$ Así que tienes en tus manos una función que decide el problema de detención, a saber $h\circ l$ . Esto es una contradicción. Así que, $h\circ l$ no es computable. Pero usted sabe que $l$ es, por lo que la suposición errónea que te llevó a la contradicción fue que $h$ es computable.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X