Complejidad de Kolmogorov

Medida de complejidad algorítmica
Esta imagen ilustra parte del fractal del conjunto de Mandelbrot . Simplemente almacenar el color de 24 bits de cada píxel en esta imagen requeriría 23 millones de bytes, pero un pequeño programa de computadora puede reproducir estos 23 MB utilizando la definición del conjunto de Mandelbrot y las coordenadas de las esquinas de la imagen. Por lo tanto, la complejidad de Kolmogorov de esta imagen es mucho menor que 23 MB en cualquier modelo pragmático de computación . La compresión de imágenes de propósito general de PNG solo la reduce a 1,6 MB, más pequeña que los datos sin procesar pero mucho más grande 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 de un programa informático más corto (en un lenguaje de programación predeterminado ) que produce el objeto como salida. 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 del tamaño del 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] [2] 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 detención de Turing . En particular, ningún programa P que calcule un límite inferior para la complejidad de Kolmogorov de cada texto puede devolver un valor esencialmente mayor que la propia longitud de P (véase la sección § Teorema de incompletitud de Chaitin); por lo tanto, ningún programa puede calcular la complejidad de Kolmogorov exacta para infinitos textos. La complejidad de Kolmogorov es la longitud de la versión finalmente comprimida de un archivo (es decir, cualquier cosa que se pueda poner en una computadora). Formalmente, es la longitud de un programa más corto a partir del cual se puede reconstruir el archivo. Analizamos la incomputabilidad de la complejidad de Kolmogorov, qué lagunas formales nos deja, enfoques recientes para calcular o aproximar la complejidad de Kolmogorov, qué enfoques son problemáticos y cuáles son viables. [3]

Definición

Intuición

Considere 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, concretamente "write ab 16 times", que consta de 17 caracteres. La segunda no tiene una descripción simple obvia (que utilice el mismo conjunto de caracteres) más allá de escribir la cadena en sí, es decir, "write 4c1j5b2p0cv4w1x8rx2y39umgw5q85s7", que tiene 38 caracteres. Por lo tanto, se puede decir que la operación de escribir la primera cadena tiene "menos complejidad" que escribir la segunda.

Más formalmente, la complejidad de una cadena es la longitud de la descripción más corta posible de la cadena en algún lenguaje de descripción universal fijo (la sensibilidad de la complejidad en relación con 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 más de unos pocos bytes mayor 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 el tamaño de la cadena, 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 cadenas. Primero debemos especificar un lenguaje de descripción para cadenas. Dicho lenguaje de descripción puede basarse en cualquier lenguaje de programación informática, como Lisp , Pascal o Java . Si P es un programa que genera 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 ).

Alternativamente, podríamos elegir una codificación para las 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, en la entrada w , genera la cadena x , entonces la cadena concatenada < M > w es una descripción de x . Para el análisis teórico, este enfoque es más adecuado para construir pruebas formales detalladas y generalmente se prefiere 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 se genera mediante el pseudocódigo :

función GenerateString2() devuelve "4c1j5b2p0cv4w1x8rx2y39umgw5q85s7"

Mientras que la primera cadena se genera mediante el pseudocódigo (mucho más corto):

función GenerateString1() devuelve "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, la cantidad 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á del lenguaje de descripción elegido, pero el efecto de cambiar de lenguaje es limitado (un resultado llamado teorema de invariancia ).

Complejidad de Kolmogorov simpledo

Existen dos definiciones de complejidad de Kolmogorov: simple y sin prefijo . La complejidad simple es la longitud mínima de descripción de cualquier programa, y ​​se denota por , mientras que la complejidad sin prefijo es la longitud mínima de descripción de cualquier programa codificado en un código sin prefijo, y se denota por . La complejidad simple es más intuitiva, pero la complejidad sin prefijo es más fácil de estudiar. do ( incógnita ) {\estilo de visualización C(x)} K ( incógnita ) {\estilo de visualización K(x)}

De manera predeterminada, todas las ecuaciones se cumplen solo hasta una constante aditiva. Por ejemplo, realmente significa que , es decir, . F ( incógnita ) = gramo ( incógnita ) {\displaystyle f(x)=g(x)} F ( incógnita ) = gramo ( incógnita ) + Oh ( 1 ) {\displaystyle f(x)=g(x)+O(1)} do , incógnita , | F ( incógnita ) gramo ( incógnita ) | do {\displaystyle \existe c,\para todo x,|f(x)-g(x)|\leq c}

Sea una función computable que asigna cadenas binarias finitas a cadenas binarias. Es una función universal si, y solo si, para cualquier computable , podemos codificar la función en un "programa" , tal que . Podemos pensar en ella como un intérprete de programas, que toma un segmento inicial que describe el programa, seguido de los datos que el programa debe procesar. : 2 2 {\displaystyle U:2^{*}\a 2^{*}} F : 2 2 {\displaystyle f:2^{*}\a 2^{*}} s F estilo de visualización s_ {f}} incógnita 2 , ( s F incógnita ) = F ( incógnita ) {\displaystyle \para todo x\en 2^{*},U(s_{f}x)=f(x)} {\estilo de visualización U}

Un problema con la complejidad simple es que , intuitivamente hablando, no hay una manera general de saber dónde dividir una cadena de salida simplemente mirando la cadena concatenada. Podemos dividirla especificando la longitud de o , pero eso requeriría símbolos adicionales. De hecho, para cualquier existe tal que . [4] do ( incógnita y ) do ( incógnita ) + do ( y ) {\displaystyle C(xy)\no <C(x)+C(y)} incógnita {\estilo de visualización x} y {\estilo de visualización y} Oh ( mín. ( En incógnita , En y ) ) {\displaystyle O(\min(\ln x,\ln y))} do > 0 {\displaystyle c>0} incógnita , y {\estilo de visualización x,y} do ( incógnita y ) do ( incógnita ) + do ( y ) + do {\displaystyle C(xy)\geq C(x)+C(y)+c}

Normalmente, las desigualdades con complejidad simple tienen un término como en un lado, mientras que las mismas desigualdades con complejidad libre de prefijo solo tienen . Oh ( mín. ( En incógnita , En y ) ) {\displaystyle O(\min(\ln x,\ln y))} Oh ( 1 ) {\estilo de visualización O(1)}

El principal problema de la complejidad simple es que hay algo extra que se introduce en el programa. Un programa no sólo representa algo con su código, sino que también representa su propia longitud. En particular, un programa puede representar un número binario hasta , simplemente por su propia longitud. Dicho de otra manera, es como si estuviéramos usando un símbolo de terminación para indicar dónde termina una palabra, y por lo tanto no estamos usando 2 símbolos, sino 3. Para corregir este defecto, introducimos la complejidad de Kolmogorov sin prefijo. [5] incógnita {\estilo de visualización x} registro 2 | incógnita | estilo de visualización {\log _{2}|x|}

Complejidad de Kolmogorov sin prefijoK

Un código sin prefijo es un subconjunto de tal manera que, dadas dos palabras diferentes en el conjunto, ninguna es prefijo de la otra. El beneficio de un código sin prefijo es que podemos construir una máquina que lea palabras del código hacia adelante en una dirección y, tan pronto como lea el último símbolo de la palabra, sepa que la palabra está terminada y no necesita retroceder ni un símbolo de terminación. 2 {\estilo de visualización 2^{*}} incógnita , y {\estilo de visualización x,y}

Definamos una máquina de Turing sin prefijo como una máquina de Turing que viene con un código sin prefijo, de modo que la máquina de Turing puede leer cualquier cadena del código en una dirección y dejar de leer tan pronto como lee el último símbolo. Después, puede calcular en una cinta de trabajo y escribir en una cinta de escritura, pero ya no puede mover su cabezal de lectura.

Esto nos da la siguiente forma formal de describir K. [6 ]

  • Arreglar una máquina de Turing universal sin prefijo, con tres cintas: una cinta de lectura infinita en una dirección, una cinta de trabajo infinita en dos direcciones y una cinta de escritura infinita en una dirección.
  • La máquina puede leer la cinta de lectura en una sola dirección (sin retroceso) y escribir en la cinta de escritura en una sola dirección. Puede leer y escribir la cinta de trabajo en ambas direcciones.
  • La cinta de trabajo y la cinta de escritura comienzan con todos los ceros. La cinta de lectura comienza con un código de prefijo de entrada, seguido de todos los ceros.
  • Sea el código sin prefijo en , utilizado por la máquina de Turing universal. S {\estilo de visualización S} 2 {\estilo de visualización 2^{*}}

Tenga en cuenta que algunas máquinas de Turing universales pueden no ser programables con códigos de prefijo. Debemos elegir solo una máquina de Turing universal sin prefijo.

La complejidad sin prefijo de una cadena es el código de prefijo más corto que genera la máquina : incógnita {\estilo de visualización x} incógnita {\estilo de visualización x} K ( incógnita ) := mín. { | do | : do S , ( do ) = incógnita } {\displaystyle K(x):=\min\{|c|:c\in S,U(c)=x\}}

Teorema de invariancia

Trato informal

Existen algunos lenguajes de descripción que son óptimos en el sentido siguiente: 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. La constante depende únicamente de los lenguajes involucrados, no de la descripción del objeto ni del objeto que se describe.

A continuación se muestra un ejemplo de un lenguaje de descripción óptimo. Una descripción constará de 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 de computadora (específicamente: un compilador para el lenguaje del objeto, escrito en el lenguaje de descripción), y la segunda parte es la entrada a ese programa de computadora 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, hay como máximo una sobrecarga constante, independientemente del objeto descrito. Por lo tanto, el lenguaje óptimo es universal hasta 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 completa de Turing 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 . − cK 1 ( s ) − K 2 ( s ) ≤ c .

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

K1 ( s ) ≤K2 ( s ) + c .

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

función InterpretarLenguaje( cadena  p )

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

Al ejecutarse InterpretLanguageen 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 InterpretLanguage( P ) devuelve la cadena s . La longitud de esta descripción de s es la suma de

  1. La longitud del programa InterpretLanguage, 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" [7] 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 Información y control . [8] [9]

Posteriormente, Andrey Kolmogorov publicó de forma independiente este teorema en Problems Inform. Transmission [10] en 1965. Gregory Chaitin también presenta este teorema en J. ACM  – el artículo de Chaitin fue presentado en octubre de 1966 y revisado en diciembre de 1968, y cita tanto los artículos de Solomonoff como de Kolmogorov. [11]

El teorema dice 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 permita cualquier otro algoritmo hasta una constante aditiva que depende de los algoritmos, pero no de las cadenas en sí. Solomonoff utilizó este algoritmo y las longitudes de código que permite para definir una "probabilidad universal" de una cadena en la que 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, incluidas la complejidad, la aleatoriedad y la información.

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

Existen otras variantes de la complejidad de Kolmogorov o información algorítmica. La más utilizada se basa en programas autodelimitados 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. [14]

Resultados básicos

Escribimos como , donde significa una forma fija de codificar una tupla de cadenas x e y. K ( incógnita , y ) {\displaystyle K(x,y)} K ( ( incógnita , y ) ) {\displaystyle K((x,y))} ( incógnita , y ) {\estilo de visualización (x,y)}

Desigualdades

Omitimos los factores aditivos de . Esta sección se basa en. [6] Oh ( 1 ) {\estilo de visualización O(1)}

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

Prueba. Tome cualquier programa para la máquina universal de Turing utilizada para definir la complejidad simple y conviértalo en un programa sin prefijo codificando primero la longitud del programa en binario, luego convirtiendo la longitud a codificación sin prefijo. Por ejemplo, supongamos que el programa tiene una longitud de 9, entonces podemos convertirlo de la siguiente manera: donde duplicamos cada dígito, luego agregamos un código de terminación. La máquina universal de Turing sin prefijo puede entonces leer cualquier programa para la otra máquina de la siguiente manera: La primera parte programa la máquina para simular la otra máquina, y es una sobrecarga constante . La segunda parte tiene una longitud . La tercera parte tiene una longitud . 9 1001 11 00 00 11 01 {\displaystyle 9\mapsto 1001\mapsto 11-00-00-11-\color {rojo}{01}} [ 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}}]} Oh ( 1 ) {\estilo de visualización O(1)} 2 registro 2 do ( incógnita ) + 3 estilo de visualización \leq 2\log _{2}C(x)+3 do ( incógnita ) {\estilo de visualización C(x)}

Teorema : Existe tal que . Más sucintamente, . De manera similar, , y . [ aclaración necesaria ] do {\estilo de visualización c} incógnita , do ( incógnita ) | incógnita | + do {\displaystyle \para todo x,C(x)\leq |x|+c} do ( incógnita ) | incógnita | {\displaystyle C(x)\leq |x|} K ( incógnita ) | incógnita | + 2 registro 2 | incógnita | {\displaystyle K(x)\leq |x|+2\log _{2}|x|} K ( 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 en la salida. Para la complejidad sin prefijo, primero debemos describir la longitud de la cadena, antes de escribir la cadena en sí.

Teorema. (límites de información extra, 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ógnita y ) K ( incógnita , y ) {\displaystyle K(xy)\leq K(x,y)}

Tenga en cuenta que no hay forma de comparar and con or or or . Hay cadenas en las que es fácil describir toda la cadena, pero sus subcadenas son muy difíciles de describir. K ( incógnita y ) {\displaystyle K(xy)} K ( x | y ) {\displaystyle K(x|y)} K ( x ) {\displaystyle K(x)} K ( y | x ) {\displaystyle K(y|x)} K ( y ) {\displaystyle K(y)} x y {\displaystyle xy}

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

Demostración. Un lado es simple. Para el otro lado con , necesitamos usar un argumento de conteo (página 38 [15] ). K ( x , y ) K ( x | y , K ( y ) ) + K ( y ) {\displaystyle K(x,y)\geq K(x|y,K(y))+K(y)}

Teorema. (no aumento de información) Para cualquier función computable , tenemos . f {\displaystyle f} K ( f ( x ) ) K ( x ) + K ( f ) {\displaystyle K(f(x))\leq K(x)+K(f)}

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

Incomputabilidad de la complejidad de Kolmogorov

Un intento ingenuo de crear un programa para calcularK

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

función KolmogorovComplexity( cadena s) para i = 1 hasta infinito: para cada cadena p de longitud exactamente i si isValidProgram(p) y evaluation(p) == s devuelve i

Este programa recorre 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 producido por ese programa, 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 p 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 no computabilidad del problema de detención .

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

Prueba formal de la incomputabilidad deK

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

Prueba: De lo contrario, todas las infinitas cadenas finitas posibles podrían generarse mediante los finitos [nota 2] 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 cualquier cadena s como entrada y produzca el entero K ( s ) como salida.

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

Función Complejidad de Kolmogorov ( cadena s)

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

función GenerateComplexString() para i = 1 hasta infinito: para cada cadena s de longitud exactamente i si KolmogorovComplexity(s) ≥ 8000000000 devuelve s

Al usarlo KolmogorovComplexitycomo subrutina, el programa prueba cada cadena, comenzando con la más corta, hasta que devuelve una cadena con una complejidad de Kolmogorov de al menos8 000 000 000 bits, [nota 3] 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 de sólo7 001 401 288 bits, [nota 4] lo cual es una contradicción. (Si el código de KolmogorovComplexityes más corto, la contradicción persiste. Si es más largo, la constante utilizada en GenerateComplexStringsiempre se puede cambiar de manera apropiada.) [nota 5]

La prueba 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 puede 7 estar 8 definido 9 en 10 menos 11 que 12 veinte 13 palabras inglesas ". También es posible demostrar la no computabilidad de K por reducción a partir de la no computabilidad del problema de detención H , ya que K y H son equivalentes de Turing . [16]

Existe un corolario, llamado humorísticamente " teorema de pleno empleo " en la comunidad de lenguajes de programación, que establece que no existe un compilador perfecto que optimice el tamaño.

Regla de la cadena para la complejidad de Kolmogorov

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

K ( X , Y ) = K ( X ) + K ( Y | X ) + c*max(1,log( K ( X , Y )))).

Afirma 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. Usando esta afirmación, uno puede definir un análogo de información mutua para la complejidad de Kolmogorov .

Compresión

Es sencillo calcular límites superiores para K ( s ): simplemente comprima la cadena s con algún método, implemente el descompresor correspondiente en el lenguaje elegido, concatene el descompresor a la cadena comprimida y mida la longitud de la cadena resultante, concretamente, el tamaño de un archivo autoextraíble en el lenguaje dado.

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

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 que esto sea preciso, fije un valor de n . Hay 2 n cadenas de bits de longitud n . La distribución de probabilidad uniforme en el espacio de estas cadenas de bits asigna un peso exactamente igual 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 exceden nc está dado por la serie geométrica:

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

Quedan al menos

2n - 2n - c +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 comprimibles, 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 un 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 se pueden describir de ninguna manera significativamente "comprimida". Sin embargo, resulta que el hecho de que una cadena específica sea compleja no se puede demostrar formalmente si la complejidad de la cadena es superior a un cierto umbral. La formalización precisa es la siguiente. Primero, fijemos un sistema axiomático particular S para los números naturales . El sistema axiomático tiene que 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 con base en una numeración de Gödel .

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

K ( s ) ≥ L       (como se formaliza en S )

puede probarse dentro de S. [ 18] [19]

Idea de prueba : La prueba de este resultado se modela sobre una construcción autorreferencial utilizada en la paradoja de Berry . Primero 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 están dentro de las pruebas dentro de S de la declaración K ( x ) ≥ L . Al establecer entonces L a mayor que la longitud de este procedimiento P , tenemos que la longitud requerida de un programa para imprimir x como se establece en K ( x ) ≥ L como siendo al menos L es entonces menor que la cantidad L ya que la cadena x fue impresa por el procedimiento P . Esto es una contradicción. Por lo tanto, no es posible para el sistema de prueba S demostrar K ( x ) ≥ L para L arbitrariamente grande, en particular, para L mayor que la longitud del procedimiento P , (que es finito).

Prueba :

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

función NthProof( int  n )

que toma como entrada n y genera alguna prueba. Esta función enumera todas las pruebas. Algunas de ellas son pruebas para fórmulas que no nos interesan aquí, ya que cada prueba posible en el lenguaje de S se produce 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

función NthProofProvesComplexityFormula( int  n )

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

función StringNthProof( int  n )
función ComplejidadLímiteInferiorNthProof( int  n )

Considere el siguiente procedimiento:

función GenerateProvablyComplexString( int  n ) para i = 1 hasta infinito: si NthProofProvesComplexityFormula(i) y ComplexityLowerBoundNthProof(i) ≥ n  devuelve StringNthProof( i )

Dado un n , este procedimiento prueba cada prueba hasta que encuentra una cadena y una prueba en el sistema formal S de la fórmula K ( s ) ≥  L para algún L  ≥  n ; si no existe tal prueba, se repite eternamente.

Finalmente, considere el programa que consta de todas estas definiciones de procedimientos y una llamada principal:

Generar cadena probadamente compleja ( n 0 )

donde la constante n 0 se determinará más adelante. La longitud total del programa se puede expresar como U +log 2 ( n 0 ), donde U es una constante y log 2 ( n 0 ) representa la longitud del valor entero n 0 , bajo la suposición razonable de que está codificado en dígitos binarios. Elegiremos que n 0 sea mayor que la longitud del programa, es decir, tal que n 0 > U +log 2 ( n 0 ). Esto es claramente cierto para n 0 suficientemente grande, porque el lado izquierdo crece linealmente en n 0 mientras que el lado derecho crece logarítmicamente en n 0 hasta la constante fija U .

Entonces no se puede obtener ninguna prueba de la forma " K ( s )≥ L " con Ln 0 en S , como se puede ver mediante un argumento indirecto : Si ComplexityLowerBoundNthProof(i)pudiera devolver un valor ≥ n 0 , entonces el bucle interno GenerateProvablyComplexStringeventualmente terminaría, y ese procedimiento devolvería una cadena s tal que

K ( s )
número 0         por construcción deGenerateProvablyComplexString
>U + log2 ( n0 )por la elección de n 0
K ( s )ya que s fue descrito por el programa con esa longitud

Esto es una contradicción, QED

Como consecuencia, el programa anterior, con el valor elegido de n 0 , debe repetirse eternamente.

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

Longitud mínima del mensaje

El principio de longitud mínima de mensaje de la inferencia estadística e inductiva y del aprendizaje automático fue desarrollado por CS Wallace y DM Boulton en 1968. El MML es bayesiano (es decir, incorpora creencias previas) y teórico de la información. Tiene las propiedades deseables de invariancia estadística (es decir, la inferencia se transforma con una re-parametrización, como de coordenadas polares a coordenadas cartesianas), consistencia estadística (es decir, incluso para problemas muy difíciles, el MML convergerá a cualquier modelo subyacente) y eficiencia (es decir, el modelo MML convergerá a cualquier modelo subyacente verdadero tan rápido como sea posible). CS Wallace y DL Dowe (1999) mostraron una conexión formal entre el MML y la teoría de la información algorítmica (o complejidad de Kolmogorov). [20]

Aleatoriedad de Kolmogorov

La aleatoriedad de Kolmogorov define una cadena (generalmente de bits ) como aleatoria si y solo si cada programa de computadora que puede producir esa cadena es al menos tan largo como la cadena misma. Para que esto sea preciso, se debe especificar una computadora universal (o máquina universal de Turing ), de modo que "programa" signifique un programa para esta máquina universal. Una cadena aleatoria en este sentido es "incompresible" en el sentido de que es imposible "comprimir" la cadena en un programa que sea más corto que la cadena misma. Para cada computadora universal, hay al menos una cadena aleatoria algorítmicamente de cada longitud. [21] Sin embargo, si una cadena particular es aleatoria depende de la computadora universal específica que se elija. Esto se debe a que una computadora universal puede tener una cadena particular codificada en sí misma, y ​​un programa que se ejecuta en esta computadora universal puede simplemente hacer referencia a esta cadena codificada utilizando una secuencia corta de bits (es decir, mucho más corta que la cadena misma).

Esta definición se puede ampliar para definir una noción de aleatoriedad para secuencias infinitas de un alfabeto finito. Estas secuencias algorítmicamente aleatorias se pueden definir de tres formas equivalentes. Una forma utiliza un análogo efectivo de la teoría de la medida ; otra utiliza martingalas efectivas . La tercera forma define una secuencia infinita como aleatoria si la complejidad de Kolmogorov sin prefijo de sus segmentos iniciales crece lo suficientemente rápido: debe haber una constante c tal que la complejidad de un segmento inicial de longitud n sea siempre al menos nc . Esta definición, a diferencia de la definición de aleatoriedad para una cadena finita, no se ve afectada por qué máquina universal se utiliza para definir la complejidad de Kolmogorov sin prefijo. [22]

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 igualdad se cumple para casi todas las trayectorias . [23] K ( x ; T ) = h ( T ) {\displaystyle K(x;T)=h(T)} x {\displaystyle x}

Se puede demostrar [24] 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 (ya que la longitud de la salida tiende al infinito) a la entropía de la fuente.

Teorema. (Teorema 14.2.5 [25] ) La complejidad condicional de Kolmogorov de una cadena binaria satisface donde es la función de entropía binaria (que no debe confundirse con la tasa de entropía). x 1 : n {\displaystyle x_{1:n}} 1 n K ( x 1 : n | n ) H b ( 1 n i x i ) + log n 2 n + O ( 1 / n ) {\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)} H b {\displaystyle H_{b}}

Problema de parada

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

Si tenemos un oráculo de detención, entonces la complejidad de Kolmogorov de una cadena se puede calcular simplemente probando cada programa de detención, en orden lexicográfico, hasta que uno de ellos genere la cadena.

La otra dirección es mucho más compleja. [26] [27] Muestra que dada una función de complejidad de Kolmogorov, podemos construir una función , tal que para todos los , donde es la función de desplazamiento de Busy Beaver (también denotada como ). Al modificar la función en valores más bajos de obtenemos un límite superior en , que resuelve el problema de detención. p {\displaystyle p} p ( n ) B B ( n ) {\displaystyle p(n)\geq BB(n)} n {\displaystyle n} B B {\displaystyle BB} S ( n ) {\displaystyle S(n)} n {\displaystyle n} B B {\displaystyle BB}

Considere este programa , que toma la entrada como y utiliza . p K {\textstyle p_{K}} n {\textstyle n} K {\textstyle K}

  • Enumere todas las cadenas de longitud . 2 n + 1 {\textstyle \leq 2n+1}
  • Para cada una de esas cadenas , enumera todos los programas (sin prefijo) de longitud hasta que uno de ellos genere una salida . Registra su tiempo de ejecución . x {\textstyle x} K ( x ) {\displaystyle K(x)} x {\textstyle x} n x {\textstyle n_{x}}
  • Generar el valor más grande . n x {\textstyle n_{x}}

Demostramos por contradicción que para todo gran . p K ( n ) B B ( n ) {\textstyle p_{K}(n)\geq BB(n)} n {\textstyle n}

Sea un Busy Beaver de longitud . Considere este programa (sin prefijo), que no requiere ninguna entrada: p n {\textstyle p_{n}} n {\displaystyle n}

  • Ejecute el programa y registre su duración de ejecución . p n {\textstyle p_{n}} B B ( n ) {\textstyle BB(n)}
  • Generar todos los programas con una longitud de . Ejecutar cada uno de ellos durante hasta pasos. Anotar las salidas de aquellos que se han detenido. 2 n {\textstyle \leq 2n} B B ( n ) {\textstyle BB(n)}
  • Imprime la cadena con el orden lexicográfico más bajo que no haya sido impresa por ninguno de ellos.

Sea la cadena de salida del programa . x {\textstyle x}

El programa tiene una longitud , donde proviene de la longitud de Busy Beaver , proviene de usar el código delta de Elias (sin prefijo) para el número , y proviene del resto del programa. Por lo tanto, para todos los grandes . Además, dado que solo hay un número determinado de programas posibles con una longitud , tenemos por principio de palomar . Por suposición, , por lo que cada cadena de longitud tiene un programa mínimo con tiempo de ejecución . Por lo tanto, la cadena tiene un programa mínimo con tiempo de ejecución . Además, ese programa tiene una longitud . Esto contradice cómo se construyó. n + 2 log 2 n + O ( 1 ) {\textstyle \leq n+2\log _{2}n+O(1)} n {\displaystyle n} p n {\textstyle p_{n}} 2 log 2 n {\displaystyle 2\log _{2}n} n {\displaystyle n} O ( 1 ) {\displaystyle O(1)} K ( x ) n + 2 log 2 n + O ( 1 ) 2 n {\displaystyle K(x)\leq n+2\log _{2}n+O(1)\leq 2n} n {\textstyle n} 2 n {\textstyle \leq 2n} l ( x ) 2 n + 1 {\textstyle l(x)\leq 2n+1} p K ( n ) < B B ( n ) {\textstyle p_{K}(n)<BB(n)} 2 n + 1 {\textstyle \leq 2n+1} < B B ( n ) {\textstyle <BB(n)} x {\textstyle x} < B B ( n ) {\textstyle <BB(n)} K ( x ) 2 n {\textstyle K(x)\leq 2n} x {\textstyle x}

Probabilidad universal

Arreglar una máquina de Turing universal , la misma que se utiliza para definir la complejidad de Kolmogorov (sin prefijo). Definir la probabilidad universal (sin prefijo) de que una cadena sea En otras palabras, es la probabilidad de que, dada una secuencia binaria uniformemente aleatoria como entrada, la máquina de Turing universal se detenga después de leer un cierto prefijo de la secuencia y dé como salida . U {\displaystyle U} x {\displaystyle x} P ( x ) = U ( p ) = x 2 l ( p ) {\displaystyle P(x)=\sum _{U(p)=x}2^{-l(p)}} x {\displaystyle x}

Nota. no significa que el flujo de entrada sea , sino que la máquina universal de Turing se detendría en algún punto después de leer el segmento inicial , sin leer ninguna entrada adicional, y que, cuando se detiene, ha escrito en la cinta de salida. U ( p ) = x {\displaystyle U(p)=x} p 000 {\displaystyle p000\cdots } p {\displaystyle p} x {\displaystyle x}

Teorema. (Teorema 14.11.1 [25] ) log 1 P ( x ) = K ( x ) + O ( 1 ) {\displaystyle \log {\frac {1}{P(x)}}=K(x)+O(1)}

Versiones condicionales

La complejidad de Kolmogorov condicional de dos cadenas se define, en términos generales, como la complejidad de Kolmogorov de x dado y como entrada auxiliar al procedimiento. [28] [29] K ( x | y ) {\displaystyle K(x|y)}

También existe una complejidad condicional de longitud , que es la complejidad de x dada la longitud de x como se conoce/entra. [30] [31] K ( x | L ( x ) ) {\displaystyle K(x|L(x))}

Véase también

Notas

  1. ^ Sin embargo, no es necesario que exista una s con K ( s ) = n para cada n . Por ejemplo, si n no es múltiplo de 7, ningún programa ASCII puede tener una longitud de exactamente n bits.
  2. ^ Hay 1 + 2 + 2 2 + 2 3 + ... + 2 n = 2 n +1 − 1 textos de programa diferentes con una longitud de hasta n bits; véase la serie geométrica . Si las longitudes de los programas deben ser múltiplos de 7 bits, existen aún menos textos de programa.
  3. ^ Según el teorema anterior, tal cadena existe, por lo tanto el forbucle eventualmente terminará.
  4. ^ incluyendo el intérprete de lenguaje y el código de subrutina paraKolmogorovComplexity
  5. ^ Si KolmogorovComplexitytiene una longitud de n bits, la constante m utilizada en GenerateComplexStringdebe adaptarse para satisfacer n +1 400 000 +1218 + 7·log 10 ( m ) < m , lo que siempre es posible ya que m crece más rápido que log 10 ( m ).
  6. ^ 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 (diciembre de 1963). "Sobre las tablas de números aleatorios". Sankhyā: The Indian Journal of Statistics, Serie A (1961-2002) . 25 (4): 369–375. ISSN  0581-572X. JSTOR  25049284. MR  0178484.
  2. ^ Kolmogorov, Andrey (1998). "Sobre las tablas de números aleatorios". Ciencias de la computación teórica . 207 (2): 387–395. doi : 10.1016/S0304-3975(98)00075-9 . MR  1643414.
  3. ^ Vitányi, Paul MB (abril de 2020). "¿Qué tan incomputable es la complejidad de Kolmogorov?". Entropy . 22 (4): 408. arXiv : 2002.07674 . Bibcode :2020Entrp..22..408V. doi : 10.3390/e22040408 . ISSN  1099-4300. PMC 7516884 . PMID  33286182. 
  4. ^ (Downey y Hirschfeldt, 2010), Teorema 3.1.4
  5. ^ (Downey y Hirschfeldt, 2010), Sección 3.5
  6. ^ ab Hutter, Marcus (6 de marzo de 2007). "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.
  7. ^ Solomonoff, Ray (4 de febrero de 1960). Un 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) desde el original el 9 de octubre de 2022.
  8. ^ Solomonoff, Ray (marzo de 1964). "Una teoría formal de la inferencia inductiva, parte I" (PDF) . Información y control . 7 (1): 1–22. doi : 10.1016/S0019-9958(64)90223-2 . ​​Archivado (PDF) desde el original el 2022-10-09.
  9. ^ Solomonoff, Ray (junio de 1964). "Una teoría formal de la inferencia inductiva, parte II" (PDF) . Información y control . 7 (2): 224–254. doi : 10.1016/S0019-9958(64)90131-7 . Archivado (PDF) desde el original el 2022-10-09.
  10. ^ Kolmogorov, AN (1965). "Tres enfoques para la definición cuantitativa de la información". Problemas de información. Transmisión . 1 (1): 1–7. Archivado desde el original el 28 de septiembre de 2011.
  11. ^ Chaitin, Gregory J. (1969). "Sobre la simplicidad y velocidad de los programas para calcular conjuntos infinitos de números naturales". Revista de la ACM . 16 (3): 407–422. CiteSeerX 10.1.1.15.3821 . doi :10.1145/321526.321530. S2CID  12584692. 
  12. ^ Kolmogorov, A. (1968). "Base lógica para 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.
  13. ^ Li, Ming; Vitányi, Paul (2008). "Preliminares". 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.
  14. ^ Burgin, M. (1982). "Complejidad generalizada de Kolmogorov y dualidad en la teoría de los cálculos". Avisos de la Academia Rusa de Ciencias . 25 (3): 19–23.
  15. ^ 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.
  16. ^ Enunciado sin pruebas en: PB Miltersen (2005). "Apuntes de curso sobre compresión de datos: complejidad de Kolmogorov" (PDF) . p. 7. Archivado desde el original (PDF) el 9 de septiembre de 2009.
  17. ^ Zvonkin, A.; L. Levin (1970). "La complejidad de los objetos finitos y el desarrollo de los conceptos de información y aleatoriedad por medio de la teoría de algoritmos" (PDF) . Encuestas matemáticas rusas . 25 (6): 83–124. Bibcode :1970RuMaS..25...83Z. doi :10.1070/RM1970v025n06ABEH001269. S2CID  250850390.
  18. ^ Gregory J. Chaitin (julio de 1974). "Limitaciones de los sistemas formales en la teoría de la información" (PDF) . Revista de la ACM . 21 (3): 403–434. doi :10.1145/321832.321839. S2CID  2142553.Aquí: Thm.4.1b
  19. ^ Calude, Cristian S. (12 de septiembre de 2002). Información y aleatoriedad: una perspectiva algorítmica. Springer. ISBN 9783540434665.
  20. ^ Wallace, CS; Dowe, DL (1999). "Longitud mínima del mensaje y complejidad de Kolmogorov". Revista informática . 42 (4): 270–283. CiteSeerX 10.1.1.17.321 . doi :10.1093/comjnl/42.4.270. 
  21. ^ Hay 2 n cadenas de bits de longitud n, pero solo 2 n -1 cadenas de bits más cortas, por lo que el resultado máximo es esa compresión.
  22. ^ Martin-Löf, Per (1966). "La definición de secuencias aleatorias". Información y Control . 9 (6): 602–619. doi : 10.1016/s0019-9958(66)80018-9 .
  23. ^ Galatolo, Stefano; Hoyrup, Mathieu; Rojas, Cristóbal (2010). "Dinámica simbólica efectiva, puntos aleatorios, comportamiento estadístico, complejidad y entropía" (PDF) . Información y Computación . 208 : 23–41. arXiv : 0801.0209 . doi :10.1016/j.ic.2009.05.001. S2CID  5555443. Archivado (PDF) desde el original el 2022-10-09.
  24. ^ 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 .
  25. ^ ab 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.
  26. ^ Chaitin, G.; Arslanov, A.; Calude, Cristian S. (1 de septiembre de 1995). "La complejidad del tamaño del programa calcula el problema de la detención". Bull. EATCS . S2CID  39718973.
  27. ^ Li, Ming; Vitányi, Paul (2008). Introducción a la complejidad de Kolmogorov y sus aplicaciones. Ejercicio 2.7.7. Bibcode :2008ikca.book.....L. doi :10.1007/978-0-387-49820-1. ISBN 978-0-387-33998-6. ISSN  1868-0941. {{cite book}}: |journal=ignorado ( ayuda )
  28. ^ Jorma Rissanen (2007). Información y complejidad en el modelado estadístico . Springer S. p. 53. ISBN 978-0-387-68812-1.
  29. ^ Ming Li; Paul MB Vitányi (2009). Introducción a la complejidad de Kolmogorov y sus aplicaciones . Saltador. págs. 105-106. ISBN 978-0-387-49820-1.
  30. ^ 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.
  31. ^ Vitányi, Paul MB (2013). "Complejidad condicional de Kolmogorov y probabilidad universal". Ciencias de la Computación Teórica . 501 : 93–100. arXiv : 1206.0983 . doi :10.1016/j.tcs.2013.07.009. S2CID  12085503.

Lectura adicional

  • Blum, M. (1967). "Sobre el tamaño de las máquinas". Información y 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". Transactions of the Moscow Mathematical Society . 2 : 127–151.
  • Portada, 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-0387339986.
  • 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ítmica". Teoría y aplicaciones de la computabilidad . doi :10.1007/978-0-387-68441-3. ISBN 978-0-387-95567-4. ISSN  2190-619X.
  • El legado de Andrei Nikolaevich Kolmogorov
  • Publicaciones en línea de Chaitin
  • Página de IDSIA de Solomonoff
  • Generalizaciones de información algorítmica de J. Schmidhuber
  • "Reseña de Li Vitányi 1997".
  • Tromp, John. "El patio de juegos de cálculo lambda y lógica combinatoria de John".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-5 de M. Hutter : ISBN 3-540-22139-5  
  • Longitud mínima del mensaje (MML) de David Dowe y las páginas de la navaja de Occam.
  • 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.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Kolmogorov_complexity&oldid=1241741624"