¿No podemos generar la complejidad de Kolmogorov?


28

Arreglemos una codificación sin prefijo de máquinas de Turing y una máquina universal de Turing que en la entrada (codificada como el código sin prefijo de seguido de ) emite salidas de en la entrada (posiblemente ambos corriendo para siempre). Defina la complejidad de Kolmogorov de , , como la longitud del programa más corto tal que .U ( T , x ) T x T x x K ( x ) p U ( p ) = xU(T,x)TxTxxK(x)pU(p)=x

¿Existe una máquina Turing tal que por cada entrada produzca un número enteroeso es diferente de la complejidad de Kolmogorov de , es decir, pero ?T x T ( x ) | x | x T ( x ) K ( x ) lim inf | x | T ( x ) = TxT(x)|x|xT(x)K(x)lim inf|x|T(x)=

Las condiciones son necesarias porque

(a) si, entonces sería fácil generar un número que es trivialmente diferente de K (x) porque es mayor que | x | + c_U ,T ( x ) | x | K ( x ) | x | + c UT(x)|x|K(x)|x|+cU

(b) si lim inf | x | T ( x ) < Clim inf|x|T(x)<C está permitido, entonces podemos generar 0 00 (o alguna otra constante) para casi todos los números, adivinando "afortunadamente" el máximo (finitamente muchos números) que evalúan a 0 00 (a alguna otra constante) y generan algo más. Incluso podemos garantizar lim sup | x | T ( x ) = lim sup|x|T(x)= generando algo como 2 log n2logn para x = 2 nx=2n .

También tenga en cuenta que nuestro trabajo sería fácil si sabemos que T ( x )T(x) no es sobreyectivo, pero se sabe poco sobre esto, por lo que la respuesta podría depender de UU , aunque dudo que lo sea.

Sé que las relaciones se estudian mucho en general, pero

¿Alguien ha hecho alguna vez una pregunta similar donde nuestro objetivo es dar un algoritmo que no genera algún parámetro?

Mi motivación es este problema http://arxiv.org/abs/1302.1109 .


55
Depende de su codificación, ya que, como se menciona en el tema sobre la surjectividad de que se vincula, podría ser el caso de que solo los programas de longitud par sean válidos. Entonces, para que su pregunta no sea trivial, necesita tener más hipótesis sobre la codificación. K pKpags
Denis

2
A su segunda pregunta: sí. Dado un entero , dejemos que denote la -ésima máquina de Turing. Una función diagonalmente no recursiva (o DNR) es una función tal que para todos los enteros , . (Es decir, si detiene en , entonces , y de lo contrario puede ser arbitrario.) Estos se han estudiado bastante recientemente en la computabilidad / computable aleatoriedad de la comunidad. Google "diagonalmente no recursivo" para encontrar documentos sobre esto. M [ M ] M f : NN M [ M ] ( M ) f ( M ) [ M ] M f ( M ) [ M ] ( M ) f ( M )METRO[M]Mf:NNM[M](M)f(M)[M]Mf(M)[M](M)f(M)
Joshua Grochow

1
@ Denis: Creo que te equivocas. De acuerdo con mi definición de máquinas Turing universales dada en el primer párrafo, todas las longitudes pueden ser programas válidos.
domotorp

3
Hace algunas veces pensé (en vano) en una versión aparentemente más simple: (dis) probar que para lo suficientemente grande x 0 , K ( x ) | x | / 2 para todos x x 0 . x0K(x)|x|/2xx0
Marzio De Biasi

1
@Ricky: Está bien, no tengo restricciones en las codificaciones de las máquinas de Turing, solo en los programas, que puedes leer en el primer párrafo.
domotorp

Respuestas:


7

La pregunta puede reformularse como si lim inf | x | | T ( x ) - K ( x ) | = 0 , y como Denis señala en los comentarios, esto es falso para algunas codificaciones. Aquí hay una declaración más débil y un intento de prueba que no depende de ningún detalle de la codificación, pero supondré un lenguaje binario por simplicidad:liminf|x||T(x)K(x)|=0

Sea T : { 0 , 1 } N una función computable que satisfaga 0 T ( x ) | x | y lim inf | x | T ( x ) = . Entonces lim inf | x | | T ( x ) - K ( x ) | < T:{0,1}N0T(x)|x|liminf|x|T(x)=liminf|x||T(x)K(x)|<. Informalmente, si hay un objetivo alrededor de la complejidad de Kolmogorov de cada cadena que crece sin límites, ninguna función computable puede evitar golpearlo.

Para ver esto, dejar que n ser un aleatorio b número bits, es decir, 0 n < 2 b y K ( n ) b . Para todo b existe una n aleatoria de este tipo También tenga en cuenta que hay un número infinito de valores de b para los cuales | { T ( x ) = b } | 2 b , esto se desprende de las condiciones impuestas en T . Ahora vamos x ser el n ºnb0n<2bK(n)bbnb|{T(x)=b}|2bTxnthcadena más pequeña tal que T ( x ) = b . Es evidente que hay una constante c 1 tal que K ( x ) > b - c 1 , porque K ( n ) b y n puede calcularse a partir x . Y hay una constante c 2 tal que K ( x ) < b + c 2 , porque K ( n )T(x)=bc1K(x)>bc1K(n)bnxc2K(x)<b+c2K(n)también está limitado desde arriba solo por una constante más que b , y x puede calcularse a partir de n . Entonces | K ( x ) - T ( x ) | < c 1 + c 2 , y tenemos un número infinito de opciones para b (aquellas con una preimagen de cardinalidad de al menos 2 b ), produciendo un número infinito de valores para x , así que hemos terminado.bxn|K(x)T(x)|<c1+c2b2bx

Una implicación es que para algunos c Z , T ( x ) = K ( x ) + c infinitamente a menudo. ¡Entonces se podría decir que no podemos no generar algo que no sea la complejidad de Kolmogorov!cZT(x)=K(x)+c


1
Bien, creo que esto debería funcionar. Por supuesto, puede que no haya cadenas con f ( x ) = b , por lo que tal vez desee requerir f ( x ) b , ¿verdad? f(x)=bf(x)b
domotorp

1
Tiene que ser f ( x ) = b para que n sea ​​computable a partir de x b , n . Entonces, supongo que uno debe elegir b para que 2 b + 1 o más cadenas se asignen a él. Presumiblemente, las suposiciones deberían implicar que hay infinitamente tales b (aunque no lo veo por el momento). (Por lo que puedo decir, las suposiciones no se han utilizado de ninguna otra manera.)f(x)=bnxb,n b2b+1b
Emil Jeřábek apoya a Monica

1
Sí, de hecho esto es necesario. Pero la prueba es fácil por contradicción: si siempre es < 2 b si b > b 0 , al observar cualquier rango b 0 < b B , podemos concluir que al menos las cadenas B - b 0 se asignan a b 0 , así infinitamente muchos, lo que contradice lim inf = . <2bb>b0b0<bBBb0b0lim inf=
domotorp

Lo que habla Denis no se aplica a la forma en que he definido la universalidad en la primera línea de mi pregunta. Su comentario también es trivial, no tengo idea de por qué tanta gente ha votado por su comentario. Pero, por desgracia, también la respuesta incorrecta de Peter recibieron tantos upvotes, estoy perdiendo la fe en este sitio ...
domotorp

No importa cómo se codifican las TM, siempre y cuando se cumplan mis criterios sobre la TM universal, por lo que el comentario de Denis es incorrecto. Si se mencionara como un comentario sobre otro modelo, sería una cosa diferente. De todos modos, en lugar de abatido sobre esto, vamos a tratar de ver si podemos reforzar su idea ...
domotorp

3

Creo que lo siguiente funciona. Usaré C ( x ) para la complejidad de KolmogorovC(x)

  • Dé a U un límite de tiempo t (digamos, alguna función exponencial de la longitud del programa de entrada), y llame al resultado U t . Si un programa excede el límite de tiempo, U t entra en un bucle infinito.UtUtUt
  • Sea C t ( x ) el programa más corto para x en t . Tenga en cuenta que C t es computable.Ct(x)xtCt
  • Deje que T ( x ) devuelva C t ( x ) + 1 , a menos que este valor sea igual a | x | en cuyo caso devuelve 0. A menos que x sea ​​la salida del programa vacío, en cuyo caso devuelve 1.T(x)Ct(x)+1
  • Como C ( x ) C t ( x ) , T ( x ) siempre será diferente de C ( x ) . La lógica en el paso anterior se ocupa de los casos extremos.
  • U t funciona como un código para todas las cadenas, por lo que tiene un límite inferior infinito.

un par de comentarios, la teoría KC en una interpretación alternativa (pero equivalente) establece lo siguiente: casi todas las cadenas ya están en su representación óptima ( wrt para un modelo dado), excepto muchas cadenas que pueden transformarse en una representación óptima (mínimo) wrt a un modelo de cálculo dado (o TM). En este sentido, casi todos los programas generan representaciones de cadena óptimas, pero no se conocen (ni se pueden calcular) a priori
Nikos M.

¿Por qué tendrás T ( x ) | x | ?
domotorp

@domotorp Técnicamente tenemos T ( x ) | x | + c donde c es la longitud del programa de impresión más corto. Por supuesto, esta constante también está ahí para C ( x ) (y de hecho, a menos que el programa de impresión sea realmente lento, es la misma constante).
Peter

¡Pero esto es lo que hace que toda la pregunta sea interesante! Podría haber pedido cualquier función en lugar de | x | por ejemplo | x | / 2 + 99 , mi único objetivo era eliminar soluciones similares a las suyas.
domotorp

@domotrop Ya veo, así que quieres forzar a T ( x ) a que no sea un límite superior a C ( x ) . Eso es más interesante ...
Peter
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.