¿Cuál es la diferencia entre la complejidad de Kolmogorov con y sin la longitud de cadena dada?

La definición de la complejidad de Komolgrov para una cadena S dada y para un lenguaje de programación dado L es el programa P más corto de tal manera que P, cuando se presenta sin entradas, generará S. Sin embargo, podría darse el caso de que el valor n = | S El | se proporciona como una entrada adicional y viene “sin costo” con respecto a la duración del programa P.

Gilad Tsur sugiere que la diferencia máxima es O (log (n)) porque, después de todo, podría generar n como un número binario y luego continuar desde allí con el resto del programa. Esto, al menos, es una interpretación del enunciado del problema.

Otra interpretación, y esto dependerá del contexto en el que se le presente el enunciado del problema, es que está interesado en descubrir la complejidad de Komolgrov para una clase de cadenas C, de modo que haya algún predicado C-pred donde S sea miembro de la clase C si y solo si C-pred acepta S. En este caso, puede preguntar sobre la complejidad máxima para cualquier cadena en la clase, o la expectativa sobre la complejidad, etc. En este caso, la presentación de la longitud n es simplemente parte del predicado: limite su clase de cadenas C a solo aquellas en las que incluya la condición de que | S | = n.

La interpretación de Gilad Tsur suele ser más común, pero también puede encontrar la otra interpretación.

La diferencia en la complejidad de Kolmagorov no puede ser mayor que O (log (n)), ya que esto es lo que se requiere para representar la longitud de la cadena en bits (en otras palabras, al usar un log n bits adicional se nos puede dar la longitud de la cadena).
Para ver que esta es realmente la diferencia, considere la familia de las cadenas “todos 1” ({1} ^ n). Aquí, si se nos da la longitud de la cadena como entrada, la complejidad es constante y, de lo contrario, es logarítmica.