A todos los usuarios de internet nos resultan familiares algunos términos como JPEG, MPEG, APE, ZIP ó RAR.

Todas éstas siglas, y otras muchas más tienen un punto en común: Todas ellas hacen referencia a estándares de compresión de datos que al menos en uno de sus pasos emplean la técnica de compresión de información conocida como de "codificación entrópica".

Aquéllos métodos de compresión (básicamente compresores de datos) que no tienen pérdidas son los que emplean la codificación entrópica como único método de compresión .  En compresores de audio y video con pérdidas, éste suele ser un paso más dentro de la cadena de operaciones a efectuar, algunos de los cuales llevan consigo pérdida de información.

Pero, ¿Qué es la codificación entrópica?

Técnicamente se define la codificación entrópica como:

" Método de codificación que sin pérdida de información reduce la redundancia explotando las características de los métodos de longitud variables ".

Hablando claramente, lo de arriba se puede traducir en algo así cómo:  ¿Cómo soy yo capaz de decir exactamente lo mismo pero de otra forma, de forma que  me suponga un menor coste el decirlo?.

Para conseguir esto lo que hago es procurar que sea más fácil decir aquello que más uso, (una letra ó un color que se repita mucho), mientras que lo más raro me supondrá un mayor esfuerzo. Con esto se conseguirá que, a la larga, el coste sea menor.

El coste puede hacer referencia a muchas aspectos, cantidad de memoria que ocupa en el disco duro, tiempo de transferencia a través de una red, cantidad de energía necesaria para llevar a cabo la comunicación, etc ...

Adelantándonos un poco al futuro: ¿ Se podrá conseguir algún día en el futuro, que, por ejemplo, un Zip ó un MPEG de turno  me comprima un archivo (de, digamos, un GB) en una cantidad ínfima ?.

La respuesta, lamentablemente, es que no. El límite inferior de la longitud media de cualquier código está limitada por una función matemática denominada entropía, que no merece la pena que la indique aquí, y que me indica la mínima longitud media de código necesaria poder representar fielmente aquello que desee codificar.

Los métodos de compresión actuales no llegan al límite que marca la entropía, por lo que se puede decir que aún existe un margen de mejora, aunque éste tampoco es demasiado.

De todas maneras no te creas que esto de buscar un buen código es nada fácil. Todo este proceso de búsqueda del código "óptimo" forma parte de una de las ramas de las matemáticas más importante y compleja llamada "Teoría de la información". Busca en Internet cualquier cosa relacionada con esto y ya verás.

Además de ésto, otra cosa  muy importante en la búsqueda del "código óptimo" es que se tiene que poder conseguirse por medio de un sistema que sea computacionalmente eficiente, esto es, teniendo en cuenta que un ordenador no es más que un bicho tonto que hace las cosas muy rápido, el sistema de compresión debe consistir en un sistema donde no importan tanto el número de operaciones a efectuar como el hecho de que éstas sean repetitivas y en todos los casos las mismas.

Modos de conseguir códigos óptimos hay varios. Para los que estén interesados yo explicaré el funcionamiento de uno de los más importantes y con el que se consiguen buenos resultados. Se trata del conocido como algoritmo Huffman.

Si no quieres meterte en asuntos más complejos, pero quieres hacerte una idea sobre los beneficios que aporta, tienes a tu disposición un programilla que lo que hace es codificar el texto que quieras mediante el algoritmo Huffman, y al final muestran las estadísticas que reflejan la mejora conseguida gracias a la codificación.

Y si esto tampoco te interesa, al menos espero que lo que has leído  te haya servido para entender el funcionamiento de los compresores, elementos de los cuáles hecha mano un usuario de internet casi a diario.

 

Jon Xabier Arza Olano.