Compresión: guardarlo más pequeño
Al meter una carga larga en una bolsa, has enrollado la misma ropa para hacerla más pequeña. No tiras nada y, aun así, ocupa menos. Los datos pueden hacer lo mismo. Mantener la misma información reduciendo solo el espacio que ocupa es la compresión.
Recorta la repetición
Antes vimos que la información
ocupa espacio como bits, ceros y unos.
Si pudiéramos guardarla ocupando menos,
mantendríamos la misma información más pequeña.
La habilidad más fácil es recortar la repetición.
Cuando la misma letra se alarga en fila,
en vez de escribir cada una,
anotamos solo qué se repite y cuántas veces.
AAAA se vuelve A cuatro veces, así.
Toca una serie de letras repetidas. La serie larga se reduce a qué se repite y cuántas veces, y la longitud baja.
La serie larga se encogió.
No se tiró ni una letra.
Solo anotamos qué y cuántas veces.
Así que al expandirla vuelve el original.
Cuanta más repetición, más encoge.
Pero ¿y si no es la misma letra en fila,
sino que el mismo trozo está disperso por ahí?
¿Cómo encogeríamos eso?
Haz el patrón corto
Las repeticiones dispersas también se recortan.
Encuentra un trozo largo que aparezca a menudo
y fíjale un único código corto.
Luego, cada vez que el trozo largo aparezca,
escríbelo como ese código corto.
Lo que significa el código
puede quedar en una tabla aparte.
Cuanto más aparezca un trozo, mayor la ganancia,
ya que más cambios significan más encogimiento.
Toca un trozo frecuente para asignarle un código corto. Ese trozo se vuelve el código y la longitud total baja.
Al cambiar el trozo largo por un código corto,
el conjunto encogió notablemente.
Recortar repeticiones y dar códigos cortos
vienen de la misma idea, al fin:
guardar la misma información en menos sitio.
Pero una vez que lo hemos encogido así,
querremos el contenido original más tarde,
así que al expandirlo, ¿vuelve de verdad exacto?
Deshazlo y vuelve el original
Esta es la promesa más sólida de la compresión.
Encógelo pequeño y luego expándelo otra vez,
y el original vuelve sin una sola letra mal.
Natural, ya que nada se tiró.
A cuatro veces vuelve a ser AAAA,
y el código corto vuelve a ser el trozo largo.
La compresión que no pierde nada así
se llama sin pérdida.
Encaja con lo que no puede fallar ni en una letra,
como el texto o los programas.
Toca la copia comprimida para expandirla. La forma encogida se descomprime a letras y compruebas que coincide con el original, lado a lado.
El expandido coincidió exacto con el original.
Aun guardado pequeño, nada se perdió.
Así que podemos comprimir sin preocupación
y recuperarlo tal cual cuando haga falta.
Entonces, ¿deberíamos comprimir siempre
tan fuerte como podamos?
En realidad hay un canje escondido ahí.
¿Vemos qué se cambia por qué?
Más pequeño frente a tiempo
La compresión te deja elegir una intensidad.
Ve suave y es rápido pero encoge menos;
ve fuerte y encoge más,
pero comprimir y descomprimir lleva más tiempo.
Cuanto más cuidas la búsqueda de repeticiones y patrones,
más pequeño queda, pero más esfuerzo cuesta.
Así que la respuesta correcta cambia con la situación.
Si el espacio aprieta, ve fuerte;
si debe ser rápido, ve suave.
Elige y toca una intensidad de compresión. Cuanto más fuerte, menor el tamaño pero mayor el tiempo, el canje a la vista.
Viste tirar el tamaño y el tiempo uno del otro.
No puedes tener ambos.
Guárdalo más pequeño y esperas más;
termina más rápido y encoge menos.
Así que la compresión es una herramienta que eliges cómo usar.
Para guardar mucho tiempo, ve fuerte;
para abrirlo a menudo, ve suave.
Ahora resumamos todo.
Resumamos
Reunido en una línea, es esto.
La compresión guarda la misma información más pequeña.
La repetición se reduce a qué y cuántas veces,
y un trozo frecuente recibe un código corto.
Deshazlo y vuelve el original, así nada se pierde.
Comprime más fuerte y es más pequeño,
pero cuesta más tiempo, así que elige por la situación.
Guárdalo pequeño y deshacerlo lo devuelve tal cual;
eso es la compresión.
Toca los puntos clave en orden para repasar. (recorta la repetición -> código corto para trozos frecuentes -> deshacer devuelve el original -> canje de más pequeño frente a tiempo)
Ahora tienes la maña
de guardar la misma información más pequeña.
Solo recortar la repetición y dar códigos cortos
te deja ahorrar espacio con tino.
Y como deshacerlo devuelve el original tal cual,
puedes guardarlo pequeño sin preocupación.
Este sentido de manejar datos pequeños pero enteros
se enlaza con la próxima historia.
Sigamos explorando juntos.