Puede pensar en la compresión como eliminar información redundante. Si te dije “5555555555555555”, eso es un bocado. En cambio, podría decir “5 16 veces”, y me entenderías igual de bien. Yendo más allá, podríamos estar de acuerdo de antemano sobre nuestro protocolo, y podría decirle “5 × 16”. ¡Eso es solo 4 caracteres en lugar de 16 caracteres! No está realmente claro cómo podríamos hacerlo más eficiente que eso. Ahora imagina si en cambio te dijera “555588222555555”. Podríamos intentar usar el mismo protocolo: “5 × 4,8 × 2,2 × 3,5 × 6”. ¡Golly, la versión original y la versión comprimida tienen 15 caracteres! Además de eso, si intentamos volver a comprimir, ¿qué sucede? “5 × 1, xx1,4 × 1“ x1,8 × 1, xx1,2 × 1“ x1 …” ¡Bueno, ahora es mucho más largo que el original!
Básicamente, la compresión de datos funciona encontrando patrones en los datos y luego describiendo los datos usando esos patrones. Si la versión comprimida de los datos todavía tiene patrones, el algoritmo de compresión no hizo un muy buen trabajo. Con un buen algoritmo de compresión como zip, una vez que se comprimen los datos, esos patrones desaparecen casi por completo.
Podrías pensar en lo compresible que es algo por lo interesante que es. Un montón de valores repetidos en una fila es aburrido y se comprime fácilmente. Una secuencia de números completamente aleatoria salta por todo el lugar y solo se repite por pura suerte, y no se comprime bien en absoluto. Curiosamente, los datos comprimidos generalmente parecen más aleatorios que los datos no comprimidos.
- ¿Una licenciatura en matemáticas y ciencias de la computación se enfoca más en las matemáticas que en ciencias de la computación?
- ¿Cuál es el concepto de anti-cadenas en la teoría de la complejidad computacional?
- ¿Existe un tipo de conjunto que se define al tener un elemento de tipo 'otro' para el resto del conjunto?
- Cómo analizar un archivo de texto en Python y obtener la suma de los números presentes en el archivo
- ¿Qué significa shift / reduce en el análisis?