¿Qué son los algoritmos de compresión de datos?

Los algoritmos de compresión de datos son algoritmos que intentan aproximarse a la complejidad de Kolmogorov de una fuente al encontrar el modelo de longitud mínima que representa los datos y luego codificar ese modelo.

Eso suena bastante complicado, así que iré paso a paso:

1) Algoritmos que intentan aproximarse a la complejidad de Kolmogorov de una fuente.

La fuente puede ser un archivo, una cadena o, en general, una secuencia de datos.

Cada fuente de datos tiene un grado de complejidad, los datos aleatorios tienen la máxima complejidad posible y datos como “AAAAAAAAAAAA” tienen una complejidad muy baja. Una forma de definir la complejidad es la longitud del programa mínimo que puede imprimir los datos. Esto se conoce como “complejidad de Kolmogorov” desafortunadamente es intratable. Esto tiene varias consecuencias interesantes, pero la que sirve a nuestra definición es que, al no ser tratable, debe calcularse la complejidad de una cadena. La mejor manera de estimar la complejidad de una cadena es con un algoritmo de compresión. Cuanto más corto puede comprimir, menos complejos son los datos. Los datos aleatorios no se pueden comprimir si fuera posible, entonces no serían aleatorios. Una consecuencia directa de que KC es intratable es que es imposible probar que algunos datos son aleatorios, solo puede sospechar que lo es si no puede comprimirlos.

2) El modelo de longitud mínima

La idea básica de la compresión de datos es modelar los datos de una manera compacta. Por ejemplo, una cadena como “AAAAAAAAAA” se puede modelar como “repetir A 10 veces”. Hay muchas maneras diferentes de modelar un flujo de datos desde la búsqueda de repeticiones de secuencias vistas anteriormente hasta modelos probabilísticos que intentan predecir el siguiente símbolo en función de los anteriores y luego representan cada símbolo que indica si acertaron o no. La compresión es predicción, lo mejor que puedes predecir es lo mejor que puedes comprimir y si puedes predecir bien, entonces tienes un buen modelo para representar tus datos.

Encontrar el modelo mínimo que representa los datos también es imposible de resolver y es un problema de IA, si tiene un modelo perfecto para texto en inglés, entonces tiene una forma de codificar un chatbot que probablemente pasará una prueba de Turing.

3) Acabado del modelo.

Esta es la parte facil. Una vez que encuentre el mejor modelo para describir sus datos, debe codificarlo como 1s y 0s. Esto generalmente se realiza mediante compresión aritmética.

Tarde o temprano encontrará una definición que dice que los algoritmos de compresión de datos intentan almacenar archivos de forma compacta o algo así. Esas definiciones solo consideran una parte muy pequeña de lo que realmente es la compresión de datos. Yo diría que almacenar archivos en un tamaño pequeño es solo un subproducto del campo de compresión de datos. El objetivo real es comprender los datos .

Luis

Esto podría ayudar:

Compresión de datos explicada

More Interesting

¿Por qué se ha reducido la participación de Instagram después de la actualización del algoritmo?

¿Qué tiene de malo el algoritmo de recomendación de la historia de Quora?

¿Qué algoritmos de programación utiliza cada sistema operativo común?

¿Cuáles son los buenos algoritmos de similitud y métricas para textos cortos (menos de 50 palabras)?

¿Cómo agrupa Google News las historias?

En el algoritmo de coincidencia del patrón de fuerza bruta cuando todos los caracteres en el patrón son únicos, entonces la fuerza bruta se puede implementar en la complejidad Big-oh (n) donde n es la longitud de la cadena (referencia: introducción a los algoritmos). ¿Alguien puede ayudarme con el algoritmo? Gracias por adelantado

¿Puedo obtener una breve descripción general del documento 'Generación precisa de hologramas utilizando el método basado en capas y el algoritmo de transformación de Fourier iterativo'?

¿Cómo funciona el algoritmo de caminante aleatorio para la segmentación de imágenes en términos simples?

¿Cuáles son las ventajas y desventajas de los enfoques de espera ocupada y sueño y vigilia para la exclusión mutua con respecto al kernel de Linux?

Además de la programación competitiva, ¿cómo aprender algoritmos?

¿Cuál es la diferencia entre tener un buen algoritmo y no tener uno?

Cómo encontrar la Kth ruta más corta de un nodo a otro en un gráfico

¿Hay algún sitio web para encontrar la complejidad del tiempo de diferentes algoritmos?

¿Qué es un algoritmo para darme sistemáticamente todas las combinaciones de elementos r de una matriz de elementos K?

¿Por qué Google todavía muestra el tiempo de búsqueda en la página de resultados?