La complejidad del prefijo de Kolmogorov (es decir, es el tamaño del programa mínimo de auto delimitación que genera ) tiene varias características agradables:
- Corresponde a una intuición de dar cadenas con patrones o estructura de menor complejidad que las cadenas sin ellas.
- Que nos permite definir la complejidad condicional , o incluso mejor por algún oráculo .
- Es subaditivo .
Sin embargo, tiene una desventaja terrible: devolver dado es indecidible.
Me he preguntado si hay una variante de la complejidad de Kolmogorov usando un modelo restringido de cómputo (ya sea usando lenguajes más débiles que TMs o usando TM acotada con recursos) que conserva las características (1) y (2) (característica ( 3) es una bonificación, pero no una obligación) mientras es eficientemente computable?
La motivación para esta pregunta es para su uso en estudios de simulación de varios modelos de evolución de juguetes. Por lo tanto, se prefiere una respuesta que se haya utilizado como una 'aproximación aproximada' para la complejidad de Kolmogorov en el trabajo numérico anterior. Sin embargo, el objetivo no es ser completamente experimental, por lo que se prefiere un lenguaje de descripción / modelo de cómputo relativamente simple / limpio para , de modo que sea posible probar algunos teoremas razonables sobre cuán drásticamente difiere de y sobre qué tipo de cuerdas.
Relaciona preguntas
Complejidad de Kolmogorov con lenguajes de descripción débiles
¿Existe una noción sensata de un algoritmo de aproximación para un problema indecidible?
fuente
Pensé más en mi pregunta y llegué a una posible solución. Tiene dos limitaciones, se define solo en cadenas de longitud (aunque hablaré más sobre esto) y no habla sobre máquinas Turing universales, sino que sigue una pregunta anteriorn=2m y usa un modelo alternativo de computación.
Básicamente, podemos interpretar una cadena con | x | = 2 m como una función f x : { 0 , 1 } m → { 0 , 1 } . Entonces, nuestra medida de complejidad K ' ( x ) es el tamaño (número de aristas) del diagrama de decisión binario ordenado reducido único (ROBDD; con el orden estándar fijo) que representa f x . Esto satisface la condición [1]. Además, dado que los ROBDD se pueden calcular en tiempo polinomial en 2 mx |x|=2m fx:{0,1}m→{0,1} K′(x) fx 2m , tenemos una medida eficiente.
Para satisfacer la condición [2], tenemos que modificar los BDD estándar permitiendo un tipo especial en el nodo. Por lo general, los nodos se etiquetan por los índices , incluiremos un nodo de oráculo especial. Para K ( x | y ) donde | y | = 2 mi∈{1,...,m} K(x|y) |y|=2m permitiremos nodos especiales en los BDD de la siguiente manera:
Si estamos ejecutando un BDD en la entrada ( | a | = m ), entonces un nodo normal etiquetado por i simplemente nos envía por el borde etiquetado como ia |a|=m i ai . Un nodo de Oracle en su lugar enviar hacia abajo de un borde marcado . Por lo tanto, K ′ ( x | x ) = 2 y con alta probabilidad K ′ ( x | y ) ≈ K ( x ) para un y elegido uniformemente al azar.fy(a) K′(x|x)=2 K′(x|y)≈K(x) y
[Nota: no está claro si la complejidad condicional aún se puede calcular de manera eficiente :(]
Convenientemente, también tenemos subaditividad ya que para construir un OBDD parax.y podemos tener una consulta para el primer bit y en ir al ROBDD para x y en 1 al ROBDD para y . Por lo tanto, tenemos K ′ ( x . Y ) ≤ K ′ ( x ) + K ′ ( y ) .0 x 1 y K′(x.y)≤K′(x)+K′(y)
Al costo potencial de la subaditividad podríamos definir para cualquier longitud x simplemente tomando trozos de potencia de dos y sumando sus complejidades. Por ejemplo para | x | = 2 m yK′(x) x |x|=2m con m > l podemos definir K ′ ( x . Y ) = K ′ ( x ) + K ′ ( y )|y|=2l m>l K′(x.y)=K′(x)+K′(y) .
Desafortunadamente, también hay algunas limitaciones con mi enfoque. No podemos ir mucho más allá de los OBDD, si consideramos árboles de decisión mínimos o solo BDD, nos encontraremos con los problemas de intractabilidad abordados en esta respuesta . Incluso para el ordenamiento variable de OBDD parece haber resultados de intractabilidad . Por lo tanto, parece que los OBDD son el límite de este enfoque de complejidad no tan similar a Kolmogorov estándar.
fuente
No soy un experto, pero si necesita una medida de complejidad práctica para las cadenas, puede echar un vistazo a la medida de complejidad T de Titchener .
Consulte el sitio web de Titchener para una introducción rápida; Sus documentos se pueden descargar en formato pdf .
Resumen : se presenta una nueva medida de la complejidad de la cadena para cadenas finitas basada en un proceso de producción de cadenas jerárquicas recursivas específicas . Del límite máximo deducimos una relación entre la complejidad y el contenido total de la información. ..articulo completo...
También encontré algunos documentos sobre implementaciones prácticas (ver por ejemplo " Un algoritmo de descomposición T rápida ")
fuente
Básicamente, casi cualquier método de aprendizaje automático o compresión es una aproximación a la complejidad de Kolmogorov:
Por lo tanto, puede buscar patrones con cualquier compresor o distribución de probabilidad y cuanto mejor compriman sus datos, mejor será su límite superior para K (x). Solo asegúrese de agregar el tamaño del compresor en sí al tamaño de los datos comprimidos para obtener la estimación.
También puede usar un límite de tiempo para definir su clase de modelo, lo que lo lleva a la respuesta de Suresh. Básicamente, si asume que su fuente de datos tiene una complejidad de tiempo polinómica, y prueba todas las máquinas polinómicas de Turing para comprimirla, puede estar bastante seguro de que ha estimado con precisión la complejidad de Kolmogorov. Esto aún puede no ser tan práctico, pero para límites de tiempo más bajos, es posible que pueda calcular la mezcla bayesiana completa, de una buena aproximación a la misma.
Para detalles técnicos vea este documento . Descargo de responsabilidad: soy uno de los autores.
fuente
Está buscando la complejidad de Kolmogorov limitada por los recursos. Puede comenzar con este documento y ramificarse.
fuente