Acabo de empezar a leer un libro llamado Introducción a la compresión de datos, por Guy E. Blelloch. En la página uno, dice:
La verdad es que si un mensaje se acorta mediante un algoritmo, entonces se debe alargar algún otro mensaje. Puede verificar esto en la práctica ejecutando GZIP en un archivo GIF. De hecho, es posible ir más allá y mostrar que para un conjunto de mensajes de entrada de longitud fija, si un mensaje está comprimido, la longitud promedio de los mensajes comprimidos sobre todas las entradas posibles siempre será más larga que la original. mensajes de entrada
Considere, por ejemplo, los 8 posibles mensajes de 3 bits. Si uno está comprimido a dos bits, no es difícil convencerse de que dos mensajes tendrán que expandirse a 4 bits, dando un promedio de 3 1/8 bits.
De Verdad? Me resulta muy difícil convencerme de eso. De hecho, aquí hay un contraejemplo. Considere el algoritmo que acepta como entrada cualquier cadena de 3 bits y se asigna a las siguientes salidas:
000 -> 0
001 -> 001
010 -> 010
011 -> 011
100 -> 100
101 -> 101
110 -> 110
111 -> 111
Así que ahí estás: ninguna entrada se asigna a una salida más larga. Ciertamente no hay "dos mensajes" que se hayan expandido a 4 bits.
Entonces, ¿de qué está hablando exactamente el autor? Sospecho que hay alguna advertencia implícita que simplemente no es obvia para mí, o está usando un lenguaje demasiado amplio.
Descargo de responsabilidad: me doy cuenta de que si mi algoritmo se aplica de forma iterativa, de hecho perderás datos. Intente aplicarlo dos veces a la entrada 110: 110 -> 000 -> 0, y ahora no sabe cuál de 110 y 000 fue la entrada original. Sin embargo, si lo aplica solo una vez, me parece sin pérdidas. ¿Está relacionado con lo que habla el autor?