Enseño compresión de datos y a veces hacemos un proyecto de “Compressors Battle” para ver qué grupo de estudiantes codifica el mejor compresor. Es un proyecto divertido.
De las muchas veces que ejecutamos este proyecto, la técnica de compresión más popular son las variantes de clasificación de bloques. Puedes buscar en Google sobre la transformación de Burrows-Wheeler y la clasificación de bloques en general.
¿Por qué es esto popular? Sinceramente, no tengo idea, pero supongo que es fácil de codificar y produce muy buenos niveles de compresión.
- ¿Por qué usamos algoritmos?
- ¿Los números en pi imitan una distribución aleatoria? Si es así, ¿cómo es esto compatible con el uso de algoritmos para generar los números?
- Cómo desarrollar el pensamiento algorítmico para programar
- Cómo estimar pi usando un hexágono unitario en Matlab
- ¿Qué significan términos como inicialización, evaluación, selección, cruce, mutación en el contexto de algoritmos genéticos?
Lea el libro de Matt Mahoney, es la mejor manera de comenzar con la compresión de datos. Código en C o C ++, necesitará mucha manipulación de bits y código muy eficiente para manejar archivos de tamaño medio.
Si la clasificación de bloques le parece demasiado difícil, intente codificar Snappy, un compresor utilizado por Google y varios otros debido a su velocidad. Puede buscar en Google el formato y el algoritmo y le resultará bastante fácil de seguir y codificar.
Saludos y espero que te diviertas!
Luis