¿Qué es un algoritmo de compresión?

Los archivos de computadora pueden ocupar una gran cantidad de espacio en un disco duro, así como una gran cantidad de ancho de banda para transmitir. Para ahorrar espacio, especialmente con archivos a los que no se accede con frecuencia, y ancho de banda para los archivos que se transmiten, se han desarrollado métodos de almacenamiento para guardar los datos en un paquete más pequeño comprimiéndolos de alguna manera. En cada caso, se utiliza un algoritmo de compresión, un método para reducir el tamaño de los datos. Existen varias categorías y tipos de algoritmos de compresión populares, cada uno de los cuales funciona de manera diferente y algunos de los cuales tienen resultados que difieren de manera importante. Utilizando varios algoritmos de compresión, generalmente es posible reducir un archivo de texto a menos de la mitad de su tamaño original; para archivos de gráficos, los resultados varían ampliamente. El archivo que resulta de la compresión puede ser un formato diferente o un archivo de almacenamiento, que a menudo se usa para almacenamiento, transmisión y distribución.

Una forma de categorizar los algoritmos de compresión es si utilizan métodos de diccionario o estadísticos para comprimir datos. El método de diccionario se centra en frases repetibles y se utiliza en imágenes GIF y en archivos JAR y ZIP. El método estadístico se basa en la frecuencia de uso para realizar una conversión, que se realiza en dos pasadas. Un ejemplo es Modified Huffman (mh), que se utiliza en algunas máquinas de fax.

Una segunda forma de categorizar los algoritmos de compresión, y la que los programadores no profesionales encuentran con mayor frecuencia, es si son sin pérdidas o con pérdidas. Un algoritmo de compresión de datos sin pérdida es aquel que comprime los datos de tal manera que cuando se descomprimen, son exactamente idénticos al archivo original. Un ejemplo de un algoritmo de compresión de datos sin pérdidas es lzw (algoritmo Lempel-Ziv-Welch). Desarrollado en 1977 por Lempel y Ziv y mejorado en 1984 por Welch, se utiliza en archivos como GIF, TIF y PDF, así como en ciertos módems.

Un algoritmo de compresión de datos con pérdida tiene la capacidad de reducir los datos a un tamaño más pequeño que la compresión sin pérdida, pero a costa de algunos de los datos originales. En otras palabras, la restauración que sigue a la compresión de datos con pérdida no proporciona una copia idéntica del archivo original. Sin embargo, el algoritmo de compresión está diseñado para limitar las pérdidas de modo que no sean evidentes para el oído o el ojo. La compresión con pérdida se utiliza en formatos de archivo como AAC, JPEG, MPEG y MP3.