Por decir algo...
El (Beta)Blog de Agustín Raluy
domingo, junio 26, 2005

Compresión

Siempre he sido un poco torpe con los mensajitos del móvil. Sólo soy capaz de escribir frases completas, con sujeto, predicado y sin abreviaturas. Incluso pongo los signos de apertura en interrogaciones y exclamaciones. Excepcionalmente, si estoy llegando al límite máximo del mensaje, me atrevo a sustituir el relativo que por la letra q y la preposición de por la letra d...

El viernes recibí un mensaje de una amiga. En los 160 caracteres que caben en un SMS me puso al día de su vida e incluso tuvo espacio para comentarme sobre la salud de su abuelita :) Por supuesto, esta chica escribe un poquito más compacto que yo...

No quiero en esta ocasión entrar en un debate ya muy traído y llevado: si es un atentado contra la lengua o no, si las generaciones más jóvenes ya no saben escribir correctamente, si en cambio sus dedos ahora se mueven más rápidamente... hoy quiero hablar en términos de eficiencia, de aprovechamiento del canal.

Y es que ayer, en un rato de aburrimiento, releyendo el mensaje, me hice una pregunta: ¿cuántos caracteres hubiese necesitado yo para decir lo mismo? Concretamente, mi equivalente a ese mensaje utilizando toda mi capacidad de compactación, se iba hasta los 202 caracteres. Si consideramos mi redacción como texto en claro, mi amiga consiguió comprimir el mensaje hasta un 79,2%. Nada mal, teniendo en cuenta el escaso número de caracteres que estamos considerando en cualquier caso.

En el fondo, compactar el mensaje no es sino una respuesta racional a un problema de optimización de recursos. Tenemos un recurso escaso (tamaño máximo del mensaje) y queremos utilizarlo de la mejor manera posible. Igualito que en la red, en la que el ancho de banda siempre ha sido un recurso escaso: cuando queríamos transmitir un fichero, lo hacíamos siempre de forma comprimida para minimizar el tráfico. La idea es conceptualmente sencilla: aplicar una transformación reversible a un conjunto de datos (fichero, texto del mensaje...) de forma que la transmisión de los datos transformados sea menos costosa que la transmisión de los datos originales. La reversibilidad de la transformación garantiza que los datos originales se puedan recuperar. El caso del SMS es idéntico: más información en menos espacio, que yo me encargo de descodificar (con más o menos esfuerzo) al tiempo que voy leyendo.

Lo más curioso del asunto es la potencia y robustez del sistema de codificación utilizado, un sistema semántico en lugar uno numérico como se utiliza normalmente en las comunicaciones digitales (rars, zips, 7zips, gzips, tars...). Para ilustrar la potencia del sistema, me entretuve comparando el nivel de compresión alcanzado por mi amiga con los niveles de compresión de distintos algoritmos (configurados para alcanzar la máxima compresión) tomando como mensaje original el que hubiese escrito yo. Como se ve la compresión semántica es la que mejor resultado ofrece:
SMS - 160 bytes (79,2%)
GZip - 185 bytes (91,6%)
BZip2 - 191 bytes (94,6%)
Original - 202 bytes (100%)
Rar - 231 bytes (114,4%)
PPmD - 263 bytes (130,2%)
Zip - 274 bytes (135,6%)
LZMA - 289 bytes (143,1%)
La robustez, grosso modo, puede comprobarse durante el proceso de descodificación: incluso si hubiese habido algún error en alguno de los caracteres durante la transmisión, hubiese sido capaz de leerlo. Y todo ello sin incluir información redundante.

Moraleja: a ver si aprendo a comerme letras en los mensajes...

Publicado por Agustín a las 12:06

|

Por decir algo...

El (Beta)Blog de Agustín Raluy