Ir al contenido principal

¿Por que no podemos comprimir un archivo más de una vez?

Seguramente todos en algún momento de nuestras vidas se nos ha dado por intentar comprimir un archivo más de una vez con la esperanza de que fuera ocupando menos espacio por cada compresión, pero nos hemos encontrado con la sorpresa de notar muy poco o nulos resultados.

Hay muchos conceptos en el campo de la computación involucrados en el proceso de alivianar el peso de un archivo. En este post pretendo acatar los fundamentos para comprender de una forma intuitiva el por que del fenómeno de la compresión de archivos comenzando por el protagonista principal del proceso, lo que comprimimos, los datos, la información.

¿Qué es la información?

La información proporcionan conocimiento usado para el transcurrir del día a día de la civilización donde uno de los elementos más populares para tratarla no es nada más y nada menos que la computadora.

De los datos a la información

Un dato es una representación simbólica de un evento de la realidad. La información es un conjunto de estos datos que procesados que terminan por constituir un mensaje que será recibido y cambiará el estado de un sistema.


Un ser vivo es un claro ejemplo de sistema, tiene la capacidad a través de la interacción con su entorno de extraer datos (entrada), convertirlos en información en forma de conocimiento que le permitan tomar decisiones (salida).


El simple hecho de observar una simple flor implica recibir ondas lumínicas de una cierta frecuencia que llegarán a nosotros por el órgano visual (el ojo), este las convertirá en una señal eléctrica que se disparará en nuestro cerebro alcanzando nuestra consciencia, el dato será procesado y convertido en una información que servirá para concretar un juicio acerca del conocimiento.


Breve historia de la información

El humano desde los orígenes de la información ha encontrado formas y maneras de almacenar y transmitir la información a sus pares para el beneficio social. Desde los típicos registros contables de las cosechas grabados en tablillas y las antiguas bibliotecas hasta las enormes imprentas y sus periódicos.

Pero no fue hasta principios del siglo pasado que se le comenzó a dotar de una perspectiva científica gracias al origen de la comunicación electrónica, siguiéndole a esto una de las invenciones más importantes de la humanidad, el transistor, hito que dio pie a la nueva revolución tecnológica actuando como potenciador de la capacidad electrónica, de la popularización y potenciación de la computación.

El transistor, un paso más allá de los relés, fue inventado en el 1947 en los Laboratorios Bell.


Ciencia de la Información

Han sido varios los esfuerzos por intentar “medir la información” para obtener formas precisas de manejarla. En 1928, el ingeniero Ralph Hartley postulaba gracias a experimentos con ondas de radio que "la cantidad total de información [en una onda de radio] que se puede transmitir es proporcional al rango de frecuencia transmitida y al tiempo de la transmisión", afirmación que le valió para plantar uno de los fundamentos para que el matemático Claude Shannon en los años 40 creara “La teoría de la información”, teoría que implementada bajo el precepto del milenario sistema binario recientemente formalizado por George Bool, dio a la humanidad paso a la Era Digital de la Información.


La teoría de la Información

Esta teoría surgió a finales de la segunda guerra mundial, época donde se buscaba utilizar de la forma más eficiente los canales de comunicación electrónicos que había en ese entonces. Está compuesta de leyes matemáticas que rigen en la transmisión y el procesamiento de la información, ocupándose de la medición de esta y su representación.

Shannon comienza por describir el modelo de comunicación con sus cinco elementos principales:

El modelo plantea el esquema típico de transmisión de información. La fuente de información que a través de un transmisor emite un mensaje, este mensaje es codificado en una señal que viaja por un medio/canal, este canal tiene una fuente de perturbaciones descrita como ruido que pueden degradar la señal. Esta señal llega a un receptor que decodifica la información convirtiéndola en un mensaje que llega finalmente al destinatario.

Analógicamente, la fuente de información sería el locutor de una radio hablando algo, el transmisor sería el transmisor de radio que codifica la voz del locutor (el mensaje) en una onda portadora (la señal) que viaja por el aire (el canal), atravesando paredes, arboles o aire ionizado (ruido) y llega a la antena de la radio del oyente (el receptor), esta  desmodula la señal convirtiéndola en sonido audible (recupera el mensaje) y siendo escuchada por el oyente (el destinatario).


Codificación de un mensaje

Para poder llevar a cabo una comunicación, las dos partes deciden pre-establecer una serie de símbolos que intercambiaran durante el transcurso de la comunicación y que servirán para representar los mensajes que se enviaran entre sí. El sistema que establece esta codificación se le denomina codificador.

Entre personas este código sería la lengua (español, ingles etc), la codificación ASCII en una computadora para representar letras, entre radios sería la modulación de ondas electromagnéticas, entre dos perros los ladridos, en el codigo morse el punto y la raya.

Shannon encontró que la mejor y más optima forma de representar información es el sistema binario. En la teoría de la información se propone codificar cada uno de estos símbolos en bits (0 y 1).

Teniendo planteado ya los elementos básicos que componen una comunicación, la teoría pretende encontrar una forma de transmitir el mensaje de una forma eficiente, optima y además superar los obstáculos del mundo real que pueden perturbar la integridad de esa información que queramos transmitir en un intento de apaciguar o eliminar totalmente la incertidumbre.


Todo cuesta en la realidad

Optimizar significa encontrar la mejor forma de hacer algo. Los bits ocupan espacio, tiempo y energía al ser transmitidos o guardados, mientras más bits se tengan el mensaje, más costo hará transmitirlo, el objetivo es minimizar este gasto y acotar la cantidad de bits, pero para lograrlo necesitamos de alguna forma "medir" la cantidad de información en un mensaje.


¿Cómo se mide la información?

La cantidad de información que puede contener un mensaje se puede medir por qué tan probable a lo esperado es un mensaje que se recibe en un momento dado. 

En flujo de mensajes ocurriendo durante una comunicación, mientras más predecible sea el contenido que se está recibiendo, menos información aportará para nosotros, en cambio, mientras menos predecible sea el contenido, más información estará aportando.

La magnitud que sirve para medir este grado de incertidumbre es la entropía.

Una fuente de información que transmite siempre el mismo mensaje una y otra vez, no estará aportando nada de información, su entropía será muy baja. Mientras que una fuente de información que transmite por ejemplo, números o letras aleatorios, su entropía será máxima.

La medición comprende una rango continuo que va desde 0.0 a 1.0

El concepto por medio de un texto.

La imagen 1 repleta del color negro no nos dice mucho, tiene una baja entropía a diferencia de la imagen 2 que contiene un conjunto altamente "desordenado" de pixeles con una alta cantidad de información.

Requisitos de la codificación

Hay un cierto punto en que una información puede dejar de ser lo que representa y ese es el limite de una codificación perfecta. Es decir, lo lógico es poder codificar y luego decodificar, recuperando el contenido original del mensaje sin que esté alterado.

Abreviar para ahorrar letras y esfuerzo es un ejemplo de codificación "optima" ya que logramos transmitir menos símbolos ganando espacio y hasta un punto, sin perder información. 

Algoritmo de Huffman

Existen mucho codificadores y variaciones pero el más popular es el Algoritmo de Huffman, este algoritmo lo que hace es repasar el mensaje a enviar, medir la frecuencia de aparición de cada letra y asignarle así la menor cantidad de bits necesarios para representarlos en su tabla de símbolos. 

Por ejemplo, en un texto común en español, las letras más frecuentes son las vocales, la "a" aparece todo el tiempo a diferencia de como podría ser la consonante "x" que aparece muy pocas veces, el algoritmo entonces asignará en su tabla de símbolos una menor cantidad de bits para representar la "a" y una alta cantidad de bits para representar la "z". Todo esto a partir de un proceso de optimización. 

Para comprender su sencillo pero elegante funcionamiento recomiendo este video.


Teoría de la información y computadoras

En la teoría se maneja el concepto de mensaje navegando por un medio hasta llegar a su destino, estos mensajes en computación no son más que los datos grabados en una memoria en forma de bits, esto no es ninguna coincidencia ya obedece la naturaleza intrínseca del transistor que puede permutar solamente en 2 estados, permitiendo representar de la mejor manera datos e información.

En la codificación ASCII, cada letra se asocia a un prefijo único que la representa y ocupa un espacio mínimo necesario.
Los videos, la música, los textos y todo lo que en este momento se está procesando en tu computador están reflejados atómicamente por 1 y 0.

Hasta acá comprendimos que la computadora obedece la forma más optima conocida de representar datos en un estado de funcionamiento habitual, pero empujemos un poco más los limites adentrándonos en la compresión de los mismos.

Compresión de archivos

En un sistema informático, la compresión de datos, es una técnica por la cual se busca "achicar" un dato lo máximo posible para que ocupe poco espacio de almacenamiento.

Entre los dos principales tipos de comprensión de datos tenemos:

Comprensión sin perdida: Los datos antes y después de comprimirlos siguen siendo exactamente iguales. Se decide conservar toda la entropía de la información, tanto la información básica como la irrelevante sin percibir alteración durante la reconstrucción de la misma.  

Ejemplo: Si queremos comprimir un mensaje, queremos que cuando este se descomprima, siga íntegro y pueda leerse sin modificaciones.

Comprensión con perdida: Se pierde cierta cantidad de información, los datos al decodificarlos se reconstruirán con errores perceptibles pero tolerables obteniendo un mensaje no exactamente igual pero si idéntico al original. 

Ejemplo: Una imagen al comprimirse puede perder algo de calidad, pero seguir siendo aceptablemente reconocible.

Si bien comprimir todo puede parecer una idea magnífica, estamos haciendo un sacrificio de procesamiento por espacio de almacenamiento ya que ejecutar la codificación requiere un trabajo por parte de la CPU, por lo tanto, no todo necesariamente se vive comprimiendo.

Entonces, ¿Por que no podemos comprimir un archivo más de dos veces?

Es por que una vez comprimido, durante el procesado, ya se ha encontrado la mínima cantidad de bits para codificar la información de la forma más "abreviada" posible y no hay una mejor forma de hacerlo si perjudicar la integridad de esta.

El archivo comprimido no dejará de ocupar menos, pues ya se ha hecho el mejor trabajo posible. (depende la eficiencia del algoritmo de compresión aplicado)

La imagen 1 no ocuparía casi nada comprimida a diferencia e la imagen 2 cargada de información. (esto aplica a audios, videos, y cualquier tipo de multimedia representable en una computadora)


Conclusión

La teoría de la información está estrechamente relacionada con las computadoras por que esta misma es un sistema informático, y la compresión de archivos es una técnica muy importante presente en ellas y por ende en nuestra cotidianeidad, desde el hecho de comprimir un texto, video, música (en estos están inherentes en los mismos algoritmos de codificación, jpg, mp3, etc.) hasta el mismo protocolo HTTP con sus directivas que permiten aprovechar los beneficios de la compresión a la hora de enviar o recibir paginas webs permitiendo gestionar de una mejor forma los recursos informáticos.


Espero que les haya sido de utilidad para tomar un poco de idea de este fascinante tema.


Enlaces consultados:

https://ichi.pro/es/una-mirada-intuitiva-a-los-fundamentos-de-la-teoria-de-la-informacion-48313332136030

https://es.wikipedia.org/wiki/Ratio_de_entrop%C3%ADa