Nos dieron el siguiente ejercicio.
Dejar
Demuestre que es computable.
¿Cómo es esto posible? Hasta donde yo sé, no sabemos si we contiene cada secuencia de dígitos (o cuáles) y un algoritmo ciertamente no puede decidir que alguna secuencia no está ocurriendo. Por lo tanto, creo que no es computable, porque el problema subyacente es solo semi-decidible.f
computability
undecidability
Rafael
fuente
fuente
Respuestas:
Solo hay dos posibilidades a considerar.
Para cada entero positivo , la cadena aparece en la representación decimal de . En este caso, el algoritmo que siempre devuelve 1 siempre es correcto.n 0n π
Hay un número entero mayor tal que aparece en la representación decimal de . En este caso, el siguiente algoritmo (con el valor codificado) siempre es correcto:N 0N π N
Tenemos ninguna idea de cuál de estas posibilidades es la correcta, o qué valor de es el más adecuado en el segundo caso. Sin embargo, uno de estos algoritmos está garantizado para ser correcto. Por lo tanto, hay un algoritmo para decidir si una cadena de ceros aparece en ; El problema es decidible.N n π
Tenga en cuenta la sutil diferencia con el siguiente bosquejo de prueba propuesto por gallais :
Alex ten Brink explica:
sepp2k agrega:
fuente
Solo publico una pequeña explicación sobre la respuesta de JeffE.
Sabemos que existen dos funciones / casos que pueden calcular la función f (n):
Una y solo una de estas funciones puede ser correcta. No sabemos cuál, pero sabemos con certeza que existe una respuesta. La computabilidad requiere que exista una función que pueda determinar la respuesta dentro de una cantidad finita de pasos.
El número de pasos en el caso 1 está trivialmente ligado a solo devolver 1.
En el caso 2, el número de pasos también es finito. Para cada número entero , podemos construir una máquina Turing que acepte si y de lo contrario rechaza en tiempo finito. Por lo tanto, no saber un límite superior en no importa. Para cada existe una máquina de Turing, es decir, , que calcula correctamente si (no sabemos cuáles de estos son correctos, pero no importa, existe uno).T N ( n ) n < N N N T N ( n ) n < NN TN(n) n<N N N TN(n) n<N
Si bien puede que no sea posible elegir entre los dos casos (aunque uno parece más probable que otro), sabemos que exactamente uno de ellos debe ser correcto.
Como nota al margen: nuestra solución supone que, si bien no podemos determinar qué función generará un valor correcto, la esencia de la computabilidad no depende de la capacidad de construcción de la prueba. La pura existencia es suficiente.
fuente
El paso 5 del siguiente intento de prueba no está justificado y, de hecho, es incorrecto : aquí se puede encontrar un contraejemplo . (gracias, Yuval; parecía la parte más esquemática del boceto). He dejado la respuesta aquí porque creo que el error es instructivo.
Primero: el par de respuestas de JeffE es suficiente; f es computable de cualquier manera.
Sin embargo, un breve desvío hacia un intento de esbozar una prueba por inducción: laπ
π
π
π comenzaría a repetirse en 1 's o en 0 ' s. Del mismo modo, no puede dejar de encontrar 11 o 00 , porque de lo contrario comienza a repetirse en 1010101 ... π
premisa R : no se repite. 1. Mire en la base 2. Esto es principalmente para reducir el número de casos. 2. No importa lo lejos abajo de la línea que vaya, siempre encontrará otro 1 en alguna parte: la alternativa es todo ceros, lo que significaría empieza a repetir, lo que va en contra de R . 3. Lo mismo va para ir por la línea y encontrar 0 . 4. Expanda a secuencias de dos dígitos: no puede dejar de encontrar 01 o 10 (es decir, lugares donde cambia), porque de lo contrarioπ π π π
5. El paso inductivo: cada secuencia finita tiene que aparecer un número infinito de veces, porque la alternativa es que comienza a repetirse en una de las secuencias más cortas, lo que contradice R .
fuente