Compresión de Datos
La compresión de datos es una técnica esencial para reducir el espacio de almacenamiento en discos y el tiempo de transmisión en redes. Existen dos tipos generales de compresión:
Tipos de Compresión
- Compresión sin pérdidas (lossless): La información recuperada es idéntica a la almacenada. Este método es crucial para comprimir programas o textos, donde no se toleran alteraciones.
- Compresión con pérdidas (lossy): Permite altas tasas de compresión en imágenes, sonido y películas, descartando información imperceptible para el ojo o el oído humano.
Compresión sin Pérdidas
Si bien puede parecer contradictorio, existen algoritmos capaces de reducir el tamaño de los archivos sin perder información. Sin embargo, esto no es posible con todos los archivos. El proceso de compresión transforma el formato, reduciendo algunos archivos y expandiendo otros. Los programas compresores evitan modificar los archivos que aumentarían de tamaño, conservándolos en su formato original.
Matemáticamente, es imposible crear un algoritmo que comprima (sin pérdidas) todos los archivos de un tamaño dado en al menos 1 bit. Esto se debe a que al intentar reducir todos los archivos de un cierto tamaño, se produce una falta de combinaciones de bits, lo que obliga a comprimir 2 archivos distintos en un mismo archivo, haciendo imposible la recuperación exacta del original al descomprimir.
Aunque se han intentado crear programas que desafían este principio, la mayoría han resultado ser defectuosos o fraudulentos. Un ejemplo común es un programa que almacena en el archivo «comprimido» los números de los clusters del archivo original. Si estos clusters se sobrescriben, la información se pierde.
La eficacia de la compresión sin pérdidas se basa en la redundancia de los datos. Si un archivo no contiene redundancias, el algoritmo podría generar un archivo más grande. En tales casos, el programa compresor suele conservar el archivo original.
No existe un límite teórico de compresión preciso. En un caso extremo, un programa podría comprimir un archivo específico a 1 bit y aumentar el tamaño de todos los demás en 1 bit. Sin embargo, en la práctica, los programas compresores se especializan en tipos de archivos específicos, como planillas de cálculo o bases de datos.
Algoritmos Comunes de Compresión sin Pérdidas
- RLE (Run-Length Encoding): Analiza los datos buscando secuencias de caracteres repetidos y las almacena como un solo carácter más el número de repeticiones. Es más efectivo en imágenes que en texto.
- Huffman: Asigna códigos más cortos a los caracteres más frecuentes y códigos más largos a los menos frecuentes, utilizando un árbol binario (Huffman tree). Se usa en MNP5 (modems) y JPEG.
- LZW (Lempel-Ziv-Welch): Crea una tabla de símbolos comunes en el archivo para representarlos de forma más eficiente. Esta tabla no se incluye en el archivo comprimido, sino que el descompresor la deduce. Se usa en GIF, compress, ZIP, ARJ y LHA.
Programas Compresores de Archivos (sin pérdidas)
Estos programas ofrecen diversas funciones:
- Compresión de archivos para ahorrar espacio y tiempo de transmisión.
- Combinación de varios archivos en uno, incluyendo subdirectorios.
- Optimización del espacio en disco aprovechando los clusters.
- División de archivos grandes en segmentos más pequeños.
- Encriptación de archivos comprimidos.
- Inclusión de códigos de detección de errores.
Existen dos tipos básicos:
- Comprimen archivos individualmente y luego los combinan (arj, lha, pkzip, rar, zoo, winzip).
- Combinan los archivos primero y luego comprimen el conjunto (tar en Unix, opción «solid» en WinRar).
Compresión de Imágenes para Páginas Web
En las páginas web, las imágenes se almacenan en archivos separados. Los formatos más comunes son GIF, JPEG y PNG, todos comprimidos.
Formatos de Imagen
- GIF (Graphics Interchange Format): Limitado a 256 colores, usa compresión LZW y es eficiente para imágenes esquemáticas. Está siendo reemplazado por PNG.
- JPEG (Joint Photographic Experts Group): Compresión con pérdidas, eficiente para imágenes con muchos colores o niveles de grises, pero no para imágenes esquemáticas o con cambios bruscos de color. Aprovecha las limitaciones de la vista humana.
- PNG (Portable Network Graphics): Ofrece una mejor compresión que GIF y soporta más de 256 colores.
En resumen, la elección del método de compresión depende del tipo de archivo y las necesidades específicas. La compresión sin pérdidas es esencial para datos que requieren fidelidad, mientras que la compresión con pérdidas es adecuada para archivos multimedia donde se prioriza la reducción de tamaño.