¿Por qué hay más funciones no computables que computables?

29

Actualmente estoy leyendo un libro sobre algoritmos y complejidad. En este momento, estoy leyendo sobre funciones computables y no computables, y mi libro dice que hay muchas más funciones que no son computables que computables, de hecho, la mayoría no son computables, dice. En cierto sentido, puedo aceptar eso intuitivamente, pero el libro no proporciona una prueba formal ni elabora mucho sobre el tema.

Solo quería ver una prueba / dejar que alguien aquí lo explique / entienda más estrictamente por qué hay tantas más funciones no computables que computables.

hsalin
fuente
Al comparar dos conjuntos infinitos, la semántica de "más" debe revisarse.
Raphael

Respuestas:

31

El son numerable muchas funciones computables:

Cada función computable tiene al menos un algoritmo. Cada algoritmo tiene una descripción finita usando símbolos de un conjunto finito, por ejemplo, cadenas binarias finitas usando símbolos {0,1} . El número de cadenas binarias finitas denotadas por {0,1} es contable (es decir, el mismo número de números naturales N ).

Por lo tanto, puede haber como máximo muchas funciones computables. Hay al menos muchas funciones computables contables ya que para cada , la función constante f ( x ) = c es computable.c{0,1}f(x)=c

En otras palabras, hay una correspondencia entre:

  • el conjunto de funciones computables
  • el conjunto de algoritmos
  • , el conjunto de cadenas finitas de { 0 , 1 } , y{0,1}{0,1}
  • , el conjunto de números naturales.N

Por otro lado, hay innumerables funciones sobre las cadenas (o números naturales). Una función (o f : { 0 , 1 } { 0 , 1 } ) asigna un valor para cada entrada. Cada uno de estos valores se puede elegir independientemente de los demás. Entonces hay N N = 2 N posible función. El número de funciones sobre números naturales es igual al número de números reales.f:NNf:{0,1}{0,1}NN=2N

Dado que solo muchas funciones son computables, la mayoría de ellas no lo son. De hecho el número de funciones incomputables es también .2N

Si desea visualizar esto intuitivamente, piense en números naturales y números reales, o en cadenas binarias finitas y cadenas binarias infinitas. Hay muchos más números reales y cadenas binarias infinitas que números naturales y cadenas finitas. En otras palabras, (para una prueba de este hecho, ver el argumento diagonal de Cantor y la aritmética cardinal ).N<2N

Kaveh
fuente
¡Buena respuesta! Lo que no entiendo (podría estar perdiendo algo trivial aquí) es cómo obtienes ? NN=2N
hsalin
Es aritmética cardinal. Escribe los números naturales en una secuencia infinita de números naturales en binario, eso debería dar la intuición.
Kaveh
¿Por qué esta suposición es cierta: "Cada algoritmo tiene una descripción finita utilizando símbolos de un conjunto finito"? ¿Por qué un algoritmo no puede tener una descripción infinita?
Roland Pihlakas
@RolandPihlakas que es parte de la definición de un algoritmo (si lo prefiere, un programa de computadora).
Kaveh
9

Aquí hay una construcción "explícita" de innumerables funciones booleanas no computables. Sea una función booleana fija no computable, digamos la función característica del problema de detención. Considere el conjunto de funciones F = { f : N{ 0 , 1 } : x N , f ( 2 x ) = K ( x ) } . Cada f F no es computable y F es incontable.K

F={f:N{0,1}:xN,f(2x)=K(x)}.
fFF

R

G={g:N{0,1}:nNmn,g(m)=R(m).}
gGRGG

Así que hay muchas funciones no computables ya que tenemos "infinitamente" grados de libertad: infinito real en lugar de infinito "potencial" como en el caso computable.

Yuval Filmus
fuente