Articulo de referencia

complejidad de Kolmogorov

Esta imagen ilustra parte del fractal del conjunto de Mandelbrot . Almacenar simplemente el color de 24 bits de cada píxel de esta imagen requeriría 23 millones de bytes , pero ...

Esta imagen ilustra parte del fractal del conjunto de Mandelbrot . Almacenar simplemente el color de 24 bits de cada píxel de esta imagen requeriría 23 millones de bytes , pero un pequeño programa informático puede reproducir estos 23 MB utilizando la definición del conjunto de Mandelbrot, las coordenadas de las esquinas de la imagen y los parámetros del mapeo de color. Por lo tanto, la complejidad de Kolmogorov de esta imagen es mucho menor que 23 MB en cualquier modelo de computación práctico . La compresión de imágenes de propósito general de PNG solo la reduce a 1,6 MB, menor que los datos originales, pero mucho mayor que la complejidad de Kolmogorov.

En la teoría de la información algorítmica (un subcampo de la informática y las matemáticas ), la complejidad de Kolmogorov de un objeto, como un fragmento de texto, es la longitud del programa informático más corto (en un lenguaje de programación predeterminado ) que produce dicho objeto como resultado. Es una medida de los recursos computacionales necesarios para especificar el objeto y también se conoce como complejidad algorítmica , complejidad de Solomonoff-Kolmogorov-Chaitin , complejidad de tamaño de programa , complejidad descriptiva o entropía algorítmica . Recibe su nombre de Andrey Kolmogorov , quien publicó por primera vez sobre el tema en 1963 [ 1 ] [ nota 1 ] y es una generalización de la teoría de la información clásica.

La noción de complejidad de Kolmogorov puede utilizarse para enunciar y demostrar resultados de imposibilidad similares al argumento diagonal de Cantor , el teorema de incompletitud de Gödel y el problema de la parada de Turing . En particular, ningún programa P que calcule una cota inferior para la complejidad de Kolmogorov de cada texto puede devolver un valor esencialmente mayor que la longitud de P (véase la sección § Teorema de incompletitud de Chaitin ); por lo tanto, ningún programa individual puede calcular la complejidad exacta de Kolmogorov para un número infinito de textos. 

Definición

Intuición

Consideremos las siguientes dos cadenas de 32 letras minúsculas y dígitos:

abababababababababababababababab, y
4c1j5b2p0cv4w1x8rx2y39umgw5q85s7

La primera cadena tiene una breve descripción en inglés: "write ab 16 times" (escribe ab 16 veces), que consta de 17 caracteres. La segunda no tiene una descripción simple y obvia (utilizando el mismo conjunto de caracteres), aparte de escribir la cadena en sí: "write 4c1j5b2p0cv4w1x8rx2y39umgw5q85s7" (escribe 4c1j5b2p0cv4w1x8rx2y39umgw5q85s7), que tiene 38 caracteres. Por lo tanto, se puede decir que escribir la primera cadena tiene "menos complejidad" que escribir la segunda.

De forma más formal, la complejidad de una cadena es la longitud de la descripción más corta posible de la cadena en un lenguaje de descripción universal fijo (la sensibilidad de la complejidad con respecto a la elección del lenguaje de descripción se analiza más adelante). Se puede demostrar que la complejidad de Kolmogorov de cualquier cadena no puede ser mayor que unos pocos bytes que la longitud de la cadena misma. Las cadenas como el ejemplo abab anterior, cuya complejidad de Kolmogorov es pequeña en relación con su tamaño, no se consideran complejas.

La complejidad de Kolmogorov se puede definir para cualquier objeto matemático, pero para simplificar, el alcance de este artículo se limita a las cadenas de caracteres. Primero debemos especificar un lenguaje de descripción para las cadenas. Dicho lenguaje de descripción puede basarse en cualquier lenguaje de programación, como Lisp , Pascal o Java . Si P es un programa que produce una cadena x , entonces P es una descripción de x . La longitud de la descripción es simplemente la longitud de P como cadena de caracteres, multiplicada por el número de bits de un carácter (por ejemplo, 7 para ASCII ).

Como alternativa, podríamos elegir una codificación para máquinas de Turing , donde una codificación es una función que asocia a cada máquina de Turing M una cadena de bits <M> . Si M es una máquina de Turing que, con una entrada w , produce la cadena x , entonces la cadena concatenada <M> w describe x . Para el análisis teórico, este enfoque es más adecuado para construir demostraciones formales detalladas y suele ser el preferido en la literatura de investigación. En este artículo, se analiza un enfoque informal.

Cualquier cadena s tiene al menos una descripción. Por ejemplo, la segunda cadena anterior es la salida del pseudocódigo :

def generate_string2 (): return "4c1j5b2p0cv4w1x8rx2y39umgw5q85s7"

mientras que la primera cadena es generada por el pseudocódigo (mucho más corto):

def generate_string1 (): return "ab" × 16

Si una descripción d ( s ) de una cadena s tiene una longitud mínima (es decir, utiliza la menor cantidad de bits), se denomina descripción mínima de s , y la longitud de d ( s ) (es decir, el número de bits en la descripción mínima) es la complejidad de Kolmogorov de s , escrita K ( s ). Simbólicamente,

K ( s ) = | d ( s )|.

La longitud de la descripción más corta dependerá de la elección del lenguaje de descripción; pero el efecto de cambiar de lenguaje está limitado (un resultado llamado teorema de invariancia , véase más abajo ).

Complejidad de Kolmogorov simple C

Hay dos definiciones de complejidad de Kolmogorov: simple y sin prefijos . La complejidad simple es la longitud mínima de descripción de cualquier programa y se denotado(incógnita){\displaystyle C(x)}mientras que la complejidad sin prefijos es la longitud mínima de descripción de cualquier programa codificado en un código sin prefijos , y se denotaK(incógnita){\displaystyle K(x)}La complejidad simple es más intuitiva, pero la complejidad sin prefijos es más fácil de estudiar.

Por defecto, todas las ecuaciones son válidas solo hasta una constante aditiva. Por ejemplo,F(incógnita)=gramo(incógnita){\displaystyle f(x)=g(x)}realmente significa queF(incógnita)=gramo(incógnita)+O(1){\displaystyle f(x)=g(x)+O(1)}, eso es,do,incógnita,|F(incógnita)gramo(incógnita)|do{\displaystyle \exists c,\forall x,|f(x)-g(x)|\leq c}.

DejarU:22{\displaystyle U:2^{*}\a 2^{*}}sea ​​una función computable que mapea cadenas binarias finitas a cadenas binarias. Es una función universal si, y solo si, para cualquier cadena computableF:22{\displaystyle f:2^{*}\to 2^{*}}, podemos codificar la función en un "programa"sF{\displaystyle s_{f}}, de tal manera queincógnita2,U(sFincógnita)=F(incógnita){\displaystyle \forall x\in 2^{*},U(s_{f}x)=f(x)}Podemos pensar enU{\displaystyle U}como un intérprete de programas, que recibe un segmento inicial que describe el programa, seguido de los datos que el programa debe procesar.

Un problema con la complejidad simple es quedo(incógnitay)do(incógnita)+do(y){\displaystyle C(xy)\not <C(x)+C(y)}, porque intuitivamente hablando, no hay una forma general de saber dónde dividir una cadena de salida simplemente mirando la cadena concatenada. Podemos dividirla especificando la longitud deincógnita{\displaystyle x}oy{\displaystyle y}, pero eso tomaríaO(min(lnincógnita,lny)){\displaystyle O(\min(\ln x,\ln y))}símbolos adicionales. De hecho, para cualquierdo>0{\displaystyle c>0}existeincógnita,y{\displaystyle x,y}de tal manera quedo(incógnitay)do(incógnita)+do(y)+do{\displaystyle C(xy)\geq C(x)+C(y)+c}. [ 2 ]

Por lo general, las desigualdades con complejidad simple tienen un término comoO(min(lnincógnita,lny)){\displaystyle O(\min(\ln x,\ln y))}por un lado, mientras que las mismas desigualdades con complejidad sin prefijos solo tienenO(1){\displaystyle O(1)}.

El principal problema de la complejidad simple es que hay algo extra oculto en un programa. Un programa no solo representa algo con su código, sino que también representa su propia longitud. En particular, un programaincógnita{\displaystyle x}puede representar un número binario de hastaregistro2|incógnita|{\displaystyle \log _{2}|x|}, simplemente por su propia longitud. Dicho de otro modo, es como si usáramos un símbolo de terminación para indicar dónde termina una palabra, por lo que no usamos 2 símbolos, sino 3. Para corregir este defecto, introducimos la complejidad de Kolmogorov sin prefijos. [ 3 ]

Complejidad de Kolmogorov sin prefijos K

Una máquina de Turing universal sin prefijos es una función computable parcial universal.U:22{\displaystyle U:2^{*}\rightarrow 2^{*}}cuyo dominio es un conjunto de cadenas binarias sin prefijo. Equivalentemente, ningún programa válido paraU{\displaystyle U}es un prefijo de cualquier otro, el dominio satisface la propiedad de prefijo . Por ejemplo, si cada programa válido para una máquina de Turing universalU{\displaystyle U}finalizaba con una cadena de terminación que no podía aparecer en ninguna otra parte del programa,U{\displaystyle U}no tendría prefijo.

La complejidad de Kolmogorov sin prefijos de una cadenaincógnita{\displaystyle x}se define por K(incógnita):=min{|do|:U(do)=incógnita}{\displaystyle K(x):=\min\{|c|:U(c)=x\}}la longitud del programa autolimitante más corto que causaU{\displaystyle U}para generarincógnita{\displaystyle x}.

Las diferentes opciones de máquinas universales sin prefijo cambianK(incógnita){\displaystyle K(x)}por como máximo una constante aditiva. [ 4 ]

Teorema de invariancia

Tratamiento informal

Existen lenguajes de descripción óptimos, en el sentido de que, dada cualquier descripción de un objeto en un lenguaje de descripción, dicha descripción puede utilizarse en el lenguaje de descripción óptimo con una sobrecarga constante. Esta constante depende únicamente de los lenguajes involucrados, no de la descripción del objeto ni del objeto en sí.

Aquí hay un ejemplo de un lenguaje de descripción óptimo. Una descripción tendrá dos partes:

  • La primera parte describe otro lenguaje de descripción.
  • La segunda parte es una descripción del objeto en ese idioma.

En términos más técnicos, la primera parte de una descripción es un programa informático (específicamente: un compilador para el lenguaje del objeto, escrito en el lenguaje de descripción), mientras que la segunda parte es la entrada a ese programa informático que produce el objeto como salida.

El teorema de invariancia es el siguiente: dado cualquier lenguaje de descripción L , el lenguaje de descripción óptimo es al menos tan eficiente como L , con una sobrecarga constante.

Demostración: Cualquier descripción D en L puede convertirse en una descripción en el lenguaje óptimo describiendo primero L como un programa informático P (parte 1) y luego utilizando la descripción original D como entrada para ese programa (parte 2). La longitud total de esta nueva descripción D es (aproximadamente):

| D | = | P | + | D |

La longitud de P es una constante que no depende de D. Por lo tanto, existe como máximo una sobrecarga constante, independientemente del objeto descrito. En consecuencia, el lenguaje óptimo es universal salvo por esta constante aditiva.

Un tratamiento más formal

Teorema : Si K 1 y K 2 son las funciones de complejidad relativas a los lenguajes de descripción Turing completos L 1 y L 2 , entonces existe una constante c  –que depende únicamente de los lenguajes L 1 y L 2 elegidos–  tal que

s.doK1(s)K2(s)do{\displaystyle \forall s.-c\leq K_{1}(s)-K_{2}(s)\leq c}.

Demostración : Por simetría, basta con demostrar que existe alguna constante c tal que para todas las cadenas s

K1(s)K2(s)+do{\displaystyle K_{1}(s)\leq K_{2}(s)+c}.

Ahora bien, supongamos que existe un programa en el lenguaje L 1 que actúa como intérprete para L 2 :

def interpretar_lenguaje ( p : str )

donde p es un programa en L 2 . El intérprete se caracteriza por la siguiente propiedad:

Al ejecutarlo interpret_languagesobre la entrada p, se devuelve el resultado de ejecutar p .

Por lo tanto, si P es un programa en L 2 que es una descripción mínima de s , entonces interpret_language( P ) devuelve la cadena s . La longitud de esta descripción de s es la suma de

  1. La duración del programa interpret_language, que podemos tomar como la constante c .
  2. La longitud de P que por definición es K 2 ( s ).

Esto demuestra el límite superior deseado.

Historia y contexto

La teoría de la información algorítmica es el área de la informática que estudia la complejidad de Kolmogorov y otras medidas de complejidad en cadenas (u otras estructuras de datos ).

El concepto y la teoría de la complejidad de Kolmogorov se basan en un teorema crucial descubierto por primera vez por Ray Solomonoff , quien lo publicó en 1960, describiéndolo en "Un informe preliminar sobre una teoría general de la inferencia inductiva" [ 5 ] como parte de su invención de la probabilidad algorítmica . Dio una descripción más completa en sus publicaciones de 1964, "Una teoría formal de la inferencia inductiva", Parte 1 y Parte 2 en Information and Control . [ 6 ] [ 7 ]

Andrey Kolmogorov publicó posteriormente este teorema de forma independiente en Problems Inform. Transmission en 1965. [ 8 ] Gregory Chaitin también presenta este teorema en el Journal of the ACM  ; el artículo de Chaitin se envió en octubre de 1966 y se revisó en diciembre de 1968, y cita los artículos de Solomonoff y Kolmogorov. [ 9 ]

El teorema establece que, entre los algoritmos que decodifican cadenas a partir de sus descripciones (códigos), existe uno óptimo. Este algoritmo, para todas las cadenas, permite códigos tan cortos como los que permite cualquier otro algoritmo, hasta una constante aditiva que depende de los algoritmos, pero no de las cadenas mismas. Solomonoff utilizó este algoritmo y las longitudes de código que permite para definir una "probabilidad universal" de una cadena, sobre la cual se puede basar la inferencia inductiva de los dígitos subsiguientes de la cadena. Kolmogorov utilizó este teorema para definir varias funciones de las cadenas, incluyendo complejidad, aleatoriedad e información.

Cuando Kolmogorov conoció el trabajo de Solomonoff, reconoció su prioridad. [ 10 ] Durante varios años, el trabajo de Solomonoff fue más conocido en la Unión Soviética que en Occidente. Sin embargo, el consenso general en la comunidad científica era asociar este tipo de complejidad con Kolmogorov, quien se ocupaba de la aleatoriedad de una secuencia, mientras que la probabilidad algorítmica se asoció con Solomonoff, quien se centró en la predicción utilizando su invención de la distribución de probabilidad a priori universal. El área más amplia que abarca la complejidad descriptiva y la probabilidad se denomina a menudo complejidad de Kolmogorov. El científico informático Ming Li considera esto un ejemplo del efecto Mateo : «...a todo aquel que tiene, más se le dará...» [ 11 ]

Existen varias variantes de la complejidad de Kolmogorov o información algorítmica. La más utilizada se basa en programas autodelimitantes y se debe principalmente a Leonid Levin (1974).

Mark Burgin introdujo un enfoque axiomático de la complejidad de Kolmogorov basado en los axiomas de Blum (Blum 1967) en el artículo presentado para su publicación por Andrey Kolmogorov. [ 12 ]

Resultados básicos

EscribimosK(incógnita,y){\displaystyle K(x,y)}serK((incógnita,y)){\displaystyle K((x,y))}, dónde(incógnita,y){\displaystyle (x,y)}significa alguna forma fija de codificar una tupla de cadenas x e y.

Desigualdades

Omitimos factores aditivos deO(1){\displaystyle O(1)}Esta sección se basa en [ 4 ] .

Teorema.K(incógnita)do(incógnita)+2registro2do(incógnita){\displaystyle K(x)\leq C(x)+2\log _{2}C(x)}

Demostración. Tomemos cualquier programa para la máquina de Turing universal utilizada para definir la complejidad simple y convirtámoslo a un programa sin prefijos codificando primero la longitud del programa en binario y luego convirtiendo dicha longitud a codificación sin prefijos. Por ejemplo, supongamos que el programa tiene una longitud de 9; entonces podemos convertirlo de la siguiente manera:910011100001101{\displaystyle 9\mapsto 1001\mapsto 11-00-00-11-\color {red}{01}}donde duplicamos cada dígito y luego agregamos un código de terminación. La máquina de Turing universal sin prefijo puede entonces leer cualquier programa para la otra máquina de la siguiente manera:[código para simular la otra máquina][longitud codificada del programa][el programa]{\displaystyle [{\text{código para simular la otra máquina}}][{\text{longitud codificada del programa}}][{\text{el programa}}]}La primera parte programa la máquina para simular la otra máquina y supone una sobrecarga constante.O(1){\displaystyle O(1)}. La segunda parte tiene longitud2registro2do(incógnita)+3{\displaystyle \leq 2\log _{2}C(x)+3}. La tercera parte tiene longituddo(incógnita){\displaystyle C(x)}.

Teorema : Existedo{\displaystyle c}de tal manera queincógnita,do(incógnita)|incógnita|+do{\displaystyle \forall x,C(x)\leq |x|+c}. De forma más concisa,do(incógnita)|incógnita|{\displaystyle C(x)\leq |x|}. Similarmente,K(incógnita)|incógnita|+2registro2|incógnita|{\displaystyle K(x)\leq |x|+2\log _{2}|x|}, yK(incógnita||incógnita|)|incógnita|{\displaystyle K(x||x|)\leq |x|}.

Prueba. Para la complejidad simple, basta con escribir un programa que simplemente copie la entrada a la salida. Para la complejidad sin prefijos, primero debemos describir la longitud de la cadena antes de escribirla.

Teorema. (límites de información adicional, subaditividad)

  • K(incógnita|y)K(incógnita)K(incógnita,y)máximo(K(incógnita|y)+K(y),K(y|incógnita)+K(incógnita))K(incógnita)+K(y){\displaystyle K(x|y)\leq K(x)\leq K(x,y)\leq \max(K(x|y)+K(y),K(y|x)+K(x))\leq K(x)+K(y)}
  • K(incógnitay)K(incógnita,y){\displaystyle K(xy)\leq K(x,y)}

Tenga en cuenta que no hay forma de compararK(incógnitay){\displaystyle K(xy)}yK(incógnita|y){\displaystyle K(x|y)}oK(incógnita){\displaystyle K(x)}oK(y|incógnita){\displaystyle K(y|x)}oK(y){\displaystyle K(y)}. Hay cadenas tales que la cadena completaincógnitay{\displaystyle xy}Es fácil de describir, pero sus subcadenas son muy difíciles de describir.

Teorema. (simetría de la información)K(incógnita,y)=K(incógnita|y,K(y))+K(y)=K(y,incógnita){\displaystyle K(x,y)=K(x|y,K(y))+K(y)=K(y,x)}.

Prueba. Un lado es simple. Para el otro lado conK(incógnita,y)K(incógnita|y,K(y))+K(y){\displaystyle K(x,y)\geq K(x|y,K(y))+K(y)}, necesitamos usar un argumento de conteo (página 38 [ 13 ] ).

Teorema. (información no incremental) Para cualquier función computableF{\displaystyle f}, tenemosK(F(incógnita))K(incógnita)+K(F){\displaystyle K(f(x))\leq K(x)+K(f)}.

Prueba. Programe la máquina de Turing para que lea dos programas consecutivos, uno que describa la función y otro que describa la cadena. Luego, ejecute ambos programas en la cinta de trabajo para producirF(incógnita){\displaystyle f(x)}y escríbelo.

Incomputabilidad de la complejidad de Kolmogorov

Un intento ingenuo de programa para calcular K

A primera vista, podría parecer trivial escribir un programa que pueda calcular K ( s ) para cualquier s , como por ejemplo el siguiente:

def kolmogorov_complexity ( s : str ): para i = 1 hasta infinito : para cada cadena p de longitud exactamente i si is_valid_program ( p ) y evaluate ( p ) == s return i

Este programa itera sobre todos los programas posibles (recorriendo todas las cadenas posibles y considerando solo aquellos que son programas válidos), comenzando por el más corto. Cada programa se ejecuta para encontrar el resultado que produce, comparándolo con la entrada s . Si el resultado coincide, se devuelve la longitud del programa.

Sin embargo, esto no funcionará porque algunos de los programas probados no terminarán, por ejemplo, si contienen bucles infinitos. No hay forma de evitar todos estos programas probándolos de alguna manera antes de ejecutarlos debido a la imposibilidad de calcular el problema de la parada .

Es más, ningún programa, por muy sofisticado que sea, puede calcular la función K. Esto se demuestra a continuación.

Prueba formal de la incomputabilidad de K

Teorema : Existen cadenas de complejidad de Kolmogorov arbitrariamente grande. Formalmente: para cada número natural n , existe una cadena s tal que K ( s ) ≥ n . [ nota 2 ]

Prueba: De lo contrario, todas las infinitas cadenas finitas posibles podrían ser generadas por los finitos [ nota 3 ] programas con una complejidad inferior a n bits.

Teorema : K no es una función computable . En otras palabras, no existe ningún programa que tome como entrada cualquier cadena s y produzca como salida el número entero K ( s ).

La siguiente demostración por contradicción utiliza un lenguaje simple similar a Pascal para denotar programas; para simplificar la demostración, supongamos que su descripción (es decir, un intérprete ) tiene una longitud de1 400 000 bits. Supongamos por contradicción que hay un programa

def kolmogorov_complexity ( s : str )

que toma como entrada una cadena s y devuelve K ( s ). Todos los programas tienen una longitud finita, por lo que, para simplificar la demostración, supongamos que es7 000 000 000 bits. Ahora, considere el siguiente programa de longitud1288 bits:

def generate_complex_string (): str para i = 1 a infinito : para cada cadena s de longitud exactamente i si kolmogorov_complexity ( s ) >= 8000000000 return s

Utilizando kolmogorov_complexitycomo subrutina, el programa prueba cada cadena, comenzando por la más corta, hasta que devuelve una cadena con complejidad de Kolmogorov al menos8 000 000 000 bits, [ nota 4 ] es decir, una cadena que no puede ser producida por ningún programa más corta que8 000 000 000 bits. Sin embargo, la longitud total del programa anterior que produjo s es solo7 001 401 288 bits, [ nota 5 ] lo cual es una contradicción. (Si el código KolmogorovComplexityes más corto, la contradicción persiste. Si es más largo, la constante utilizada GenerateComplexStringsiempre se puede cambiar adecuadamente). [ nota 6 ]

La demostración anterior utiliza una contradicción similar a la de la paradoja de Berry : " 1 El 2 entero 3 positivo 4 más pequeño 5 que 6 no 7 puede 8 definirse 9 en 10 menos 11 que 12 veinte 13 palabras 14 en inglés ". También es posible demostrar la no computabilidad de K por reducción a partir de la no computabilidad del problema de parada H , ya que K y H son Turing-equivalentes . [ 14 ]

Existe un corolario, conocido humorísticamente en la comunidad de lenguajes de programación como el " teorema del pleno empleo ", que afirma que no existe un compilador que optimice el tamaño a la perfección.

Regla de la cadena para la complejidad de Kolmogorov

La regla de la cadena [ 15 ] para la complejidad de Kolmogorov establece que existe una constante c tal que para todo X e Y :

K(incógnita,Y)=K(incógnita)+K(Y|incógnita)+dometroaincógnita(1,logramo(K(incógnita,Y))){\displaystyle K(X,Y)=K(X)+K(Y|X)+c\cdot max(1,log(K(X,Y)))}.

Establece que el programa más corto que reproduce X e Y no es más que un término logarítmico mayor que un programa para reproducir X y un programa para reproducir Y dado X. Utilizando esta afirmación, se puede definir un análogo de la información mutua para la complejidad de Kolmogorov .

Compresión

Es sencillo calcular los límites superiores de K ( s )  – simplemente comprime la cadena s con algún método, implementa el descompresor correspondiente en el lenguaje elegido, concatena el descompresor a la cadena comprimida y mide la longitud de la cadena resultante  – concretamente, el tamaño de un archivo autoextraíble en el lenguaje dado.

Una cadena s es compresible por un número c si su descripción tiene una longitud que no excede | s | − c bits. Esto equivale a decir que K ( s ) ≤ | s |c . De lo contrario, s es incompresible por c . Una cadena incompresible por 1 se denomina simplemente incompresible  ; por el principio del palomar , que se aplica porque cada cadena comprimida se corresponde con una única cadena sin comprimir, deben existir cadenas incompresibles , ya que hay 2n cadenas de bits de longitud n , pero solo 2n − 1 cadenas más cortas, es decir, cadenas de longitud menor que n (es decir, con longitud 0, 1, ..., n  1). [ nota 7 ]

Por la misma razón, la mayoría de las cadenas son complejas en el sentido de que no se pueden comprimir significativamente  : su K ( s ) no es mucho menor que | s |, la longitud de s en bits. Para ser más precisos, fijemos un valor de n . Hay 2n cadenas de bits de longitud n . La distribución de probabilidad uniforme en el espacio de estas cadenas de bits asigna exactamente el mismo peso 2 n a cada cadena de longitud n .

Teorema : Con la distribución de probabilidad uniforme en el espacio de cadenas de bits de longitud n , la probabilidad de que una cadena sea incompresible por c es al menos 1 − 2 c +1 + 2 n .

Para demostrar el teorema, observe que el número de descripciones de longitud que no excede nc viene dado por la serie geométrica:

1 + 2 + 2 2 + ... + 2 nc = 2 nc +1 − 1.

Quedan al menos

2 n − 2 nc +1 + 1

cadenas de bits de longitud n que son incompresibles por c . Para determinar la probabilidad, divida por 2 n .

Teorema de incompletitud de Chaitin

Complejidad de Kolmogorov K ( s ) y dos funciones de límite inferior computables . El eje horizontal ( escala logarítmica ) enumera todas las cadenas s , ordenadas por longitud; el eje vertical ( escala lineal ) mide la complejidad de Kolmogorov en bits . La mayoría de las cadenas son incompresibles, es decir, su complejidad de Kolmogorov excede su longitud en una cantidad constante. En la imagen se muestran 9 cadenas compresibles, que aparecen como pendientes casi verticales. Debido al teorema de incompletitud de Chaitin (1974), la salida de cualquier programa que calcule un límite inferior de la complejidad de Kolmogorov no puede exceder algún límite fijo, que es independiente de la cadena de entrada s .prog1(s)prog2(s)

Según el teorema anterior ( §  Compresión ), la mayoría de las cadenas son complejas en el sentido de que no pueden describirse de ninguna manera significativamente "comprimida". Sin embargo, resulta que el hecho de que una cadena específica sea compleja no puede probarse formalmente si su complejidad supera cierto umbral. La formalización precisa es la siguiente. Primero, se fija un sistema axiomático particular S para los números naturales . El sistema axiomático debe ser lo suficientemente potente como para que, a ciertas afirmaciones A sobre la complejidad de las cadenas, se pueda asociar una fórmula F A en S. Esta asociación debe tener la siguiente propiedad:

Si F A es demostrable a partir de los axiomas de S , entonces la afirmación correspondiente A debe ser verdadera. Esta "formalización" se puede lograr basándose en una numeración de Gödel .

Teorema : Existe una constante L (que solo depende de S y de la elección del lenguaje de descripción) tal que no existe una cadena s para la cual la afirmación

K(s)L{\displaystyle K(s)\geq L}   (tal como se formaliza en S )

puede demostrarse dentro de S. [ 16 ] [ 17 ]

Idea de la prueba : La prueba de este resultado se basa en una construcción autorreferencial utilizada en la paradoja de Berry . Inicialmente, obtenemos un programa que enumera las pruebas dentro de S y especificamos un procedimiento P que toma como entrada un entero L e imprime las cadenas x que se encuentran dentro de las pruebas dentro de S de la afirmación K ( x ) ≥ L. Al establecer L mayor que la longitud de este procedimiento P , tenemos que la longitud requerida de un programa para imprimir x, como se indica en K ( x ) ≥ L, como al menos L, es entonces menor que la cantidad L desde que la cadena x fue impresa por el procedimiento P. Esto es una contradicción. Por lo tanto, no es posible que el sistema de prueba S demuestre K ( x ) ≥ L para L arbitrariamente grande, en particular, para L mayor que la longitud del procedimiento P (que es finita).

Prueba :

Podemos encontrar una enumeración efectiva de todas las pruebas formales en S mediante algún procedimiento.

def nth_proof ( n : int )

que toma como entrada n y produce alguna prueba. Esta función enumera todas las pruebas. Algunas de ellas son pruebas de fórmulas que no nos interesan aquí, ya que se produce cualquier prueba posible en el lenguaje de S para algún n . Algunas de ellas son fórmulas de complejidad de la forma K ( s )  n , donde s y n son constantes en el lenguaje de S. Hay un procedimiento 

def nth_proof_proves_complexity_formula ( n : int ): bool

que determina si la n -ésima prueba realmente demuestra una fórmula de complejidad K ( s )  L. Las cadenas s , y el entero L a su vez, se pueden calcular mediante el procedimiento: 

def string_nth_proof ( n : int )
def complexity_lower_bound_nth_proof ( n : int ): int

Considere el siguiente procedimiento:

def generate_provably_complex_string ( n : int ): for i = 1 to infinity : if nth_proof_proves_complexity_formula ( i ) and complexity_lower_bound_nth_proof ( i ) n return string_nth_proof ( i )

Dado unnorte{\displaystyle n}Este procedimiento prueba todas las pruebas hasta que encuentra una cadena y una prueba en el sistema formal S de la fórmula.K(s)L{\displaystyle K(s)\geq L}para algunosLnorte{\displaystyle L\geq n}; si no existe tal prueba, el bucle se repite indefinidamente.

Finalmente, consideremos el programa que consta de todas estas definiciones de procedimiento y una llamada principal:

generar_cadena_de_complejidad_demostrable ( n )

donde la constantenorte0{\displaystyle n_{0}}se determinará más adelante. La duración total del programa se puede expresar comoU+logramo2(norte0){\displaystyle U+log_{2}(n_{0})}, dóndeU{\displaystyle U}es alguna constante ylogramo2(norte0){\displaystyle log_{2}(n_{0})}representa la longitud del valor enteronorte0{\displaystyle n_{0}}, bajo el supuesto razonable de que está codificado en dígitos binarios. Elegiremosnorte0{\displaystyle n_{0}}ser mayor que la duración del programa, es decir, de tal manera quenorte0>U+logramo2(norte0){\ Displaystyle n_ {0}> U + log_ {2} (n_ {0})}Esto es claramente cierto paranorte0{\displaystyle n_{0}}suficientemente grande, porque el lado izquierdo crece linealmente ennorte0{\displaystyle n_{0}}mientras que el lado derecho crece logarítmicamente ennorte0{\displaystyle n_{0}}hasta la constante fijaU{\displaystyle U}.

Entonces no hay prueba de la forma "K(s)L{\displaystyle K(s)\geq L}" conLnorte0{\displaystyle L\geq n_{0}}se puede obtener en S , como se puede ver por un argumento indirecto : Si complexity_lower_bound_nth_proof(i)pudiera devolver un valornorte0{\displaystyle \geq n_{0}}, entonces el bucle interno generate_provably_complex_stringterminaría eventualmente, y ese procedimiento devolvería una cadena s tal que

Esto es una contradicción, QED

Como consecuencia, el programa anterior, con el valor elegido denorte0{\displaystyle n_{0}}, debe repetirse indefinidamente.

Se utilizan ideas similares para demostrar las propiedades de la constante de Chaitin .

Longitud mínima del mensaje

El principio de longitud mínima del mensaje (MML) de la inferencia estadística e inductiva y del aprendizaje automático fue desarrollado por C.S. Wallace y D.M. Boulton en 1968. El MML es bayesiano (es decir, incorpora creencias previas) y se basa en la teoría de la información. Posee las propiedades deseables de invariancia estadística (es decir, la inferencia se transforma con una reparametrización, como de coordenadas polares a coordenadas cartesianas), consistencia estadística (es decir, incluso para problemas muy difíciles, el MML converge a cualquier modelo subyacente) y eficiencia (es decir, el modelo MML converge a cualquier modelo subyacente verdadero tan rápido como sea posible). C.S. Wallace y D.L. Dowe (1999) demostraron una conexión formal entre el MML y la teoría de la información algorítmica (o complejidad de Kolmogorov). [ 18 ]

Aleatoriedad de Kolmogorov

La aleatoriedad de Kolmogorov define una cadena (generalmente de bits ) como aleatoria si el programa informático más corto que puede producir esa cadena tiene aproximadamente la misma longitud que la cadena misma. Para ser más precisos, una cadenaincógnita{\displaystyle x}de longitudnorte{\displaystyle n}se denomina aleatorio de Kolmogorov si K(incógnita)norte+O(1){\displaystyle K(x)\geq n+O(1)}dóndeK{\displaystyle K}es la complejidad de Kolmogorov sin prefijos definida anteriormente. Una cadena aleatoria en este sentido es incompresible , ya que es imposible "comprimir" la cadena en un programa más corto que la propia cadena. Existe al menos una cadena aleatoria de Kolmogorov de cada longitud. [ 19 ]

Esta definición puede extenderse para definir una noción de aleatoriedad para secuencias infinitas a partir de un alfabeto finito. Estas secuencias aleatorias algorítmicas pueden definirse de tres maneras equivalentes. Una manera utiliza un análogo efectivo de la teoría de la medida ; otra utiliza martingalas efectivas . La tercera manera define una secuencia infinita como aleatoria si la complejidad de Kolmogorov sin prefijos de sus segmentos iniciales crece lo suficientemente rápido  ; debe existir una constante c tal que la complejidad de un segmento inicial de longitud n sea siempre al menos nc . [ 20 ]

Relación con la entropía

Para los sistemas dinámicos, la tasa de entropía y la complejidad algorítmica de las trayectorias están relacionadas por un teorema de Brudno, que establece que la igualdadK(incógnita;T)=h(T){\displaystyle K(x;T)=h(T)}se aplica a casi todosincógnita{\displaystyle x}. [ 21 ]

Se puede demostrar [ 22 ] que, para la salida de fuentes de información de Markov , la complejidad de Kolmogorov está relacionada con la entropía de la fuente de información. Más precisamente, la complejidad de Kolmogorov de la salida de una fuente de información de Markov, normalizada por la longitud de la salida, converge casi con seguridad (cuando la longitud de la salida tiende a infinito) a la entropía de la fuente.

Teorema. (Teorema 14.2.5 [ 23 ] ) La complejidad de Kolmogorov condicional de una cadena binariaincógnita1:norte{\displaystyle x_{1:n}}Satisface1norteK(incógnita1:norte|norte)Hb(1norteiincógnitai)+registronorte2norte+O(1/norte){\displaystyle {\frac {1}{n}}K(x_{1:n}|n)\leq H_{b}\left({\frac {1}{n}}\sum _{i}x_{i}\right)+{\frac {\log n}{2n}}+O(1/n)}dóndeHb{\displaystyle H_{b}}es la función de entropía binaria (que no debe confundirse con la tasa de entropía).

Problema de parada

La función de complejidad de Kolmogorov es equivalente a decidir el problema de la parada.

Si disponemos de un oráculo de parada, la complejidad de Kolmogorov de una cadena se puede calcular simplemente probando todos los programas de parada, en orden lexicográfico, hasta que uno de ellos genere la cadena.

La otra dirección es mucho más compleja. [ 24 ] [ 25 ] Muestra que, dada una función de complejidad de Kolmogorov, podemos construir una funciónpag{\displaystyle p}, de tal manera quepag(norte)BB(norte){\displaystyle p(n)\geq BB(n)}para todos los grandesnorte{\displaystyle n}, dóndeBB{\displaystyle BB}es la función de desplazamiento Busy Beaver (también denominada comoS(norte){\displaystyle S(n)}). Al modificar la función en valores más bajos denorte{\displaystyle n}obtenemos un límite superior enBB{\displaystyle BB}, lo que resuelve el problema de la parada.

Considere este programapagK{\textstyle p_{K}}, que toma la entrada comonorte{\textstyle n}y utilizaK{\textstyle K}.

  • Enumera todas las cadenas de longitud2norte+1{\textstyle \leq 2n+1}.
  • Para cada una de esas cadenasincógnita{\textstyle x}, enumerar todos los programas (sin prefijo) de longitudK(incógnita){\displaystyle K(x)}hasta que uno de ellos haga una salidaincógnita{\textstyle x}Registrar su tiempo de ejecuciónnorteincógnita{\textstyle n_{x}}.
  • Produce la mayornorteincógnita{\textstyle n_{x}}.

Demostramos por contradicción quepagK(norte)BB(norte){\textstyle p_{K}(n)\geq BB(n)}para todos los grandesnorte{\textstyle n}.

Dejarpagnorte{\textstyle p_{n}}ser un castor ocupado de longitudnorte{\displaystyle n}Consideremos este programa (sin prefijos), que no requiere ninguna entrada:

  • Ejecutar el programapagnorte{\textstyle p_{n}}y registrar su duración de ejecuciónBB(norte){\textstyle BB(n)}.
  • Generar todos los programas con longitud2norte{\textstyle \leq 2n}Ejecuta cada uno de ellos durante un máximo deBB(norte){\textstyle BB(n)}pasos. Observe los resultados de aquellos que se han detenido.
  • Muestra la cadena con el orden lexicográfico más bajo que no haya sido mostrada por ninguna de las anteriores.

Sea la cadena de salida del programaincógnita{\textstyle x}.

El programa tiene duraciónnorte+2registro2norte+O(1){\textstyle \leq n+2\log _ {2}n+O(1)}, dóndenorte{\displaystyle n}proviene de la longitud del Busy Beaverpagnorte{\textstyle p_{n}},2registro2norte{\displaystyle 2\log _{2}n}proviene del uso del código delta de Elias (sin prefijo) para el númeronorte{\displaystyle n}, yO(1){\displaystyle O(1)}proviene del resto del programa. Por lo tanto,K(incógnita)norte+2registro2norte+O(1)2norte{\displaystyle K(x)\leq n+2\log _{2}n+O(1)\leq 2n}para todos los grandesnorte{\textstyle n}Además, dado que solo hay un número limitado de programas posibles con una duración determinada,2norte{\textstyle \leq 2n}, tenemosl(incógnita)2norte+1{\textstyle l(x)\leq 2n+1}por el principio del palomar . Por suposición,pagK(norte)<BB(norte){\textstyle p_{K}(n)<BB(n)}, por lo que cada cadena de longitud2norte+1{\textstyle \leq 2n+1}tiene un programa mínimo con tiempo de ejecución<BB(norte){\textstyle <BB(n)}. Por lo tanto, la cadenaincógnita{\textstyle x}tiene un programa mínimo con tiempo de ejecución<BB(norte){\textstyle <BB(n)}Además, ese programa tiene duraciónK(incógnita)2norte{\textstyle K(x)\leq 2n}Esto contradice cómoincógnita{\textstyle x}fue construido.

Probabilidad universal

Reparar una máquina de Turing universalU{\displaystyle U}, la misma que se utiliza para definir la complejidad de Kolmogorov (sin prefijos). Defina la probabilidad universal (sin prefijos) de una cadenaincógnita{\displaystyle x}serPAG(incógnita)=U(pag)=incógnita2l(pag){\displaystyle P(x)=\sum _{U(p)=x}2^{-l(p)}}En otras palabras, es la probabilidad de que, dada una secuencia binaria aleatoria uniforme como entrada, la máquina de Turing universal se detenga después de leer un cierto prefijo de la secuencia y genere una salida.incógnita{\displaystyle x}.

Nota.U(pag)=incógnita{\displaystyle U(p)=x}no significa que el flujo de entrada seapag000{\displaystyle p000\cdots }pero que la máquina de Turing universal se detendría en algún momento después de leer el segmento inicial.pag{\displaystyle p}, sin leer ninguna otra entrada, y que, cuando se detiene, ha escritoincógnita{\displaystyle x}a la cinta de salida.

Teorema. (Teorema 14.11.1 [ 23 ] )registro1PAG(incógnita)=K(incógnita)+O(1){\displaystyle \log {\frac {1}{P(x)}}=K(x)+O(1)}

Implicaciones en biología

La complejidad de Kolmogorov se ha utilizado en el contexto de la biología para argumentar que las simetrías y los arreglos modulares observados en múltiples especies surgen de la tendencia de la evolución a preferir la complejidad mínima de Kolmogorov. [ 26 ] Considerando el genoma como un programa que debe resolver una tarea o implementar una serie de funciones, se preferirían los programas más cortos, ya que son más fáciles de encontrar mediante los mecanismos de la evolución. [ 27 ] Un ejemplo de este enfoque es la simetría óctuple del circuito de la brújula que se encuentra en diversas especies de insectos, la cual corresponde al circuito que es funcional y requiere la complejidad mínima de Kolmogorov para ser generado a partir de unidades autorreplicantes. [ 28 ]

Versiones condicionales

La complejidad de Kolmogorov condicional de dos cadenasK(incógnita|y){\displaystyle K(x|y)}En términos generales, se define como la complejidad de Kolmogorov de x dado y como entrada auxiliar al procedimiento. [ 29 ] [ 30 ] Así que, mientras que la complejidad de Kolmogorov (incondicional)K(incógnita){\displaystyle K(x)}de una secuenciaincógnita{\displaystyle x}es la longitud del programa binario más corto que produceincógnita{\displaystyle x}en una computadora universal y puede considerarse como la cantidad mínima de información necesaria para producirincógnita{\displaystyle x}, la complejidad condicional de KolmogorovK(incógnita|y){\displaystyle K(x|y)}se define como la longitud del programa binario más corto que calculaincógnita{\displaystyle x}cuandoy{\displaystyle y}se proporciona como entrada, utilizando una computadora universal. [ 31 ]

También existe una complejidad condicional a la longitud.K(incógnita|L(incógnita)){\displaystyle K(x|L(x))}, que es la complejidad de x dada la longitud de x como conocida/de entrada. [ 32 ] [ 33 ]

Complejidad limitada en el tiempo

La complejidad de Kolmogorov con límite de tiempo es una versión modificada de la complejidad de Kolmogorov donde el espacio de programas para buscar una solución se limita solo a programas que pueden ejecutarse dentro de un número predefinido de pasos. [ 34 ] Se plantea la hipótesis de que la posibilidad de la existencia de un algoritmo eficiente para determinar la complejidad aproximada de Kolmogorov con límite de tiempo está relacionada con la cuestión de si existen funciones unidireccionales verdaderas . [ 35 ] [ 36 ]

Véase también

Notas

  1. ^ Esta es una reimpresión en inglés del artículo ruso original de Kolmogorov de 1963 “О таблицах случайных чисел”.
  2. Sin embargo, no es necesario que exista un s con K ( s ) = n para cada n . Por ejemplo, si n no es un múltiplo de 7, ningún programa ASCII puede tener una longitud de exactamente n bits.
  3. Hay 1 + 2 + 2 2 + 2 3 + ... + 2 n = 2 n +1 − 1 textos de programa diferentes de longitud hasta n bits; cf. serie geométrica . Si las longitudes de los programas son múltiplos de 7 bits, existen aún menos textos de programa.
  4. Según el teorema anterior, dicha cadena existe, por lo tanto, elforbucle terminará eventualmente.
  5. incluyendo el intérprete de lenguaje y el código de subrutina paraKolmogorovComplexity
  6. SiKolmogorovComplexitytiene una longitud de n bits, la constante m utilizada enGenerateComplexStringdebe adaptarse para satisfacer n +1 400 000 +1218 + 7·log 10 ( m ) < m , lo cual siempre es posible ya que m crece más rápido que log 10 ( m ).
  7. Como hay N L = 2 L cadenas de longitud L , el número de cadenas de longitudes L = 0, 1, ..., n − 1 es N 0 + N 1 + ... + N n −1 = 2 0 + 2 1 + ... + 2 n −1 , que es una serie geométrica finita con suma 2 0 + 2 1 + ... + 2 n −1 = 2 0 × (1 − 2 n ) / (1 − 2) = 2 n − 1

Referencias

  1. Kolmogorov, Andrey N. (1998) [1963]. "Sobre tablas de números aleatorios" . Theoretical Computer Science . 207 (2): 387– 395. doi : 10.1016/S0304-3975(98)00075-9 . Recuperado el 14 de enero de 2026 .
  2. (Downey y Hirschfeldt, 2010), Teorema 3.1.4
  3. (Downey y Hirschfeldt, 2010), Sección 3.5
  4. 1 2 Hutter, Marcus (2007-03-06). "Teoría de la información algorítmica" . Scholarpedia . 2 (3): 2519. Bibcode : 2007SchpJ...2.2519H . doi : 10.4249/scholarpedia.2519 . hdl : 1885/15015 . ISSN 1941-6016 . 
  5. Solomonoff, Ray (4 de febrero de 1960). Informe preliminar sobre una teoría general de la inferencia inductiva (PDF) . Informe V-131 (Informe). Revisión publicada en noviembre de 1960. Archivado (PDF) del original el 9 de octubre de 2022.
  6. Solomonoff, Ray (marzo de 1964). "Una teoría formal de la inferencia inductiva, parte I" (PDF) . Information and Control . 7 (1): 1–22 . doi : 10.1016/S0019-9958(64)90223-2 . Archivado (PDF) del original el 9 de octubre de 2022.
  7. Solomonoff, Ray (junio de 1964). "Una teoría formal de la inferencia inductiva, parte II" (PDF) . Information and Control . 7 (2): 224–254 . doi : 10.1016/S0019-9958(64)90131-7 . Archivado (PDF) del original el 9 de octubre de 2022.
  8. Kolmogorov, AN (1965). "Tres enfoques para la definición cuantitativa de la información" . Problemas de la transmisión de información . 1 (1): 1– 7. Archivado del original el 28 de septiembre de 2011.
  9. Chaitin, Gregory J. (1969). "Sobre la simplicidad y velocidad de los programas para calcular conjuntos infinitos de números naturales". Journal of the ACM . 16 (3): 407– 422. CiteSeerX 10.1.1.15.3821 . doi : 10.1145/321526.321530 . S2CID 12584692 .  
  10. Kolmogorov, A. (1968). "Fundamentos lógicos de la teoría de la información y la teoría de la probabilidad". IEEE Transactions on Information Theory . 14 (5): 662– 664. doi : 10.1109/TIT.1968.1054210 . S2CID 11402549 . 
  11. Li, Ming; Vitányi, Paul (2008). «Preliminares». Una introducción a la complejidad de Kolmogorov y sus aplicaciones . Textos en Ciencias de la Computación. págs. 1–99 . doi : 10.1007/978-0-387-49820-1_1 . ISBN  978-0-387-33998-6.
  12. Burgin, M. (1982). "Complejidad de Kolmogorov generalizada y dualidad en la teoría de la computación" . Notices of the Russian Academy of Sciences . 25 (3): 19– 23.
  13. Hutter, Marcus (2005). Inteligencia artificial universal: decisiones secuenciales basadas en probabilidad algorítmica . Textos de informática teórica. Berlín Nueva York: Springer. ISBN 978-3-540-26877-2.
  14. Afirmado sin demostración en: PB Miltersen (2005). "Apuntes del curso de compresión de datos: complejidad de Kolmogorov" (PDF) . pág. 7. Archivado del original (PDF) el 9 de septiembre de 2009. 
  15. Zvonkin, A.; L. Levin (1970). "La complejidad de los objetos finitos y el desarrollo de los conceptos de información y aleatoriedad mediante la teoría de algoritmos" (PDF) . Russian Mathematical Surveys . 25 (6): 83– 124. Bibcode : 1970RuMaS..25...83Z . doi : 10.1070/RM1970v025n06ABEH001269 . S2CID 250850390 . 
  16. Gregory J. Chaitin (julio de 1974). "Limitaciones de la teoría de la información de los sistemas formales" (PDF) . Journal of the ACM . 21 (3): 403– 434. doi : 10.1145/321832.321839 . S2CID 2142553 . Aquí: Teorema 4.1b
  17. Calude, Cristian S. (12 de septiembre de 2002). Información y aleatoriedad: una perspectiva algorítmica . Springer. ISBN 978-3-540-43466-5.
  18. Wallace, CS; Dowe, DL (1999). "Longitud mínima del mensaje y complejidad de Kolmogorov". Computer Journal . 42 (4): 270– 283. CiteSeerX 10.1.1.17.321 . doi : 10.1093/comjnl/42.4.270 . 
  19. Venkataramanan, Venkat; Gács, Peter (2020). "Complejidad de Kolmogorov" (PDF) . Apuntes de clase para 15-252 (Primavera de 2020) . Universidad Carnegie Mellon . Recuperado el 14 de enero de 2026. Hay 2 n cadenas binarias de longitud n , pero solo 2 n -1 cadenas binarias de longitud estrictamente menor que n .
  20. Martin-Löf, Per (1966). "La definición de secuencias aleatorias" . Information and Control . 9 (6): 602– 619. doi : 10.1016/s0019-9958(66)80018-9 .
  21. Galatolo, Stefano; Hoyrup, Mathieu; Rojas, Cristóbal (2010). "Dinámica simbólica efectiva, puntos aleatorios, comportamiento estadístico, complejidad y entropía" ( PDF) . Information and Computation . 208 : 23–41 . arXiv : 0801.0209 . doi : 10.1016/j.ic.2009.05.001 . S2CID 5555443. Archivado (PDF) del original el 9 de octubre de 2022. 
  22. Alexei Kaltchenko (2004). "Algoritmos para estimar la distancia de información con aplicación a la bioinformática y la lingüística". arXiv : cs.CC/0404039 .
  23. 1 2 Cover, Thomas M.; Thomas, Joy A. (2006). Elementos de la teoría de la información (2.ª ed.). Wiley-Interscience. ISBN  0-471-24195-4.
  24. Chaitin, G.; Arslanov, A.; Calude, Cristian S. (1995-09-01). "La complejidad del tamaño del programa calcula el problema de la parada". Bull. EATCS . S2CID 39718973 . 
  25. Li, Ming; Vitányi, Paul (2008). Introducción a la complejidad de Kolmogorov y sus aplicaciones . Textos en Ciencias de la Computación. Ejercicio 2.7.7. Bibcode : 2008ikca.book.....L . doi : 10.1007/978-0-387-49820-1 . ISBN 978-0-387-33998-6ISSN 1868-0941 
  26. Johnston, Iain G.; Dingle, Kamaludin; Greenbury, Sam F.; Camargo, Chico Q.; Doye, Jonathan PK; Ahnert, Sebastian E.; Louis, Ard A. (2022-03-15). "La simetría y la simplicidad emergen espontáneamente de la naturaleza algorítmica de la evolución" . Actas de la Academia Nacional de Ciencias . 119 (11) e2113883119. Bibcode : 2022PNAS..11913883J . doi : 10.1073/pnas.2113883119 . PMC 8931234. PMID 35275794 .  
  27. Alon, Uri (marzo de 2007). "Simplicidad en biología" . Nature . 446 (7135): 497. Bibcode : 2007Natur.446..497A . doi : 10.1038/446497a . ISSN 1476-4687 . PMID 17392770 .  
  28. Vilimelis Aceituno, Pau; Dall'Osto, Dominic; Pisokas, Ioannis (2024-05-30). Colgin, Laura L; Vafidis, Pantelis (eds.). " Los principios teóricos explican la estructura del circuito de dirección de la cabeza de los insectos" . eLife . 13 e91533. doi : 10.7554/eLife.91533 . ISSN 2050-084X . PMC 11139481. PMID 38814703 .   
  29. Jorma Rissanen (2007). Información y complejidad en el modelado estadístico . Information Science and Statistics. Springer S. p. 53. doi : 10.1007 /978-0-387-68812-1 . ISBN  978-0-387-68812-1.
  30. ^ Ming Li; Paul MB Vitányi (2009). Introducción a la complejidad de Kolmogorov y sus aplicaciones . Saltador. págs. 105 –106. doi : 10.1007/978-0-387-49820-1 . ISBN  978-0-387-49820-1.
  31. Kelemen, Árpád; Abraham, Ajith; Liang, Yulan, eds. (2008). Inteligencia computacional en informática médica . Nueva York; Londres: Springer. pag. 160.ISBN  978-3-540-75766-5OCLC 181069666 .​ 
  32. ^ Ming Li; Paul MB Vitányi (2009). Introducción a la complejidad de Kolmogorov y sus aplicaciones . Saltador. pag. 119 . ISBN  978-0-387-49820-1.
  33. Vitányi, Paul MB (2013). "Complejidad de Kolmogorov condicional y probabilidad universal" . Theoretical Computer Science . 501 : 93–100 . arXiv : 1206.0983 . doi : 10.1016/j.tcs.2013.07.009 . S2CID 12085503 . 
  34. Hirahara, Shûichi; Kabanets, Valentín; Lu, Zhenjian; Oliveira, Igor C. (2024). "Reducciones exactas desde la búsqueda hasta la decisión para la complejidad de Kolmogorov con límites de tiempo" . 39ª Conferencia sobre Complejidad Computacional (CCC 2024) . Procedimientos internacionales de informática de Leibniz (LIPIcs). 300 . Schloss Dagstuhl – Leibniz-Zentrum für Informatik: 29:1–29:56. doi : 10.4230/LIPIcs.CCC.2024.29 . ISBN 978-3-95977-331-7.
  35. Klarreich, Erica (6 de abril de 2022). "Investigadores identifican el 'problema maestro' subyacente a toda la criptografía" . Quanta Magazine . Consultado el 16 de noviembre de 2024 .
  36. Liu, Yanyi; Pass, Rafael (24-09-2020), Sobre funciones unidireccionales y complejidad de Kolmogorov , arXiv : 2009.11514

Lecturas adicionales

  • Blum, M. (1967). "Sobre el tamaño de las máquinas" . Information and Control . 11 (3): 257. doi : 10.1016/S0019-9958(67)90546-3 .
  • Brudno, A. (1983). "Entropía y complejidad de las trayectorias de un sistema dinámico". Transacciones de la Sociedad Matemática de Moscú . 2 : 127–151 .
  • Cover, Thomas M.; Thomas, Joy A. (2006). Elementos de la teoría de la información (2.ª  ed.). Wiley-Interscience. ISBN 0-471-24195-4.
  • Lajos, Rónyai; Gábor, Ivanyos; Réka, Szabó (1999). Algoritmusok . TipoTeX. ISBN 963-279-014-6.
  • Li, Ming; Vitanyi, Paul (1997). Introducción a la complejidad de Kolmogorov y sus aplicaciones . Saltador. ISBN 978-0-387-33998-6.
  • Yu, Manin (1977). Un curso de lógica matemática . Springer-Verlag. ISBN 978-0-7204-2844-5.
  • Sipser, Michael (1997). Introducción a la teoría de la computación . PWS. ISBN 0-534-95097-3.
  • Downey, Rodney G.; Hirschfeldt, Denis R. (2010). «Aleatoriedad y complejidad algorítmicas» . Theory and Applications of Computability . doi : 10.1007/978-0-387-68441-3 . ISBN 978-0-387-95567-4ISSN 2190-619X 
  • El legado de Andrei Nikolaevich Kolmogorov
  • Publicaciones en línea de Chaitin
  • Página de Solomonoff sobre IDSIA
  • Generalizaciones de la información algorítmica por J. Schmidhuber
  • "Reseña de Li Vitányi 1997" .
  • Tromp, John. "El campo de juego de John para el cálculo lambda y la lógica combinatoria" .El modelo informático de cálculo lambda de Tromp ofrece una definición concreta de K()]
  • Inteligencia artificial universal basada en la complejidad de Kolmogorov ISBN 3-540-22139-5Por M. Hutter : ISBN 3-540-22139-5
  • Las páginas sobre la longitud mínima del mensaje (MML, por sus siglas en inglés) y la navaja de Occam de David Dowe .
  • Grunwald, P.; Pitt, MA (2005). Myung, IJ (ed.). Avances en la longitud mínima de descripción: teoría y aplicaciones . MIT Press. ISBN 0-262-07262-9.