seegongsik
Datos

Cómo funciona la compresión

Cuando haces una maleta, si enrollas bien la ropa, la misma ropa cabe en menos espacio. No dejas ni una prenda, y aun así sobra lugar en la maleta. Con los datos se puede hacer algo parecido. Conservar la información tal cual y reducir solo el espacio que ocupa: eso es la compresión.

01

Recortar la repetición

En la lección anterior vimos cómo tener los datos cerca hace que la lectura sea rápida. Hacerlos más pequeños también acelera las cosas: los datos pequeños ocupan menos al guardarlos y tardan menos en enviarse por la red. Una computadora guarda toda la información como 0 y 1, es decir, en bits, así que si la misma información puede escribirse con menos bits, se gana.
El método más sencillo es recortar la repetición. Cuando la misma letra se repite una y otra vez, en vez de escribirlas todas, se anota solo qué letra se repite y cuántas veces. Las cuatro letras AAAA pasan a ser «A cuatro veces».

comprimido · longitud 12
original · longitud 12
AAAABBBCCCCC
Toca una serie repetida para encogerla

Toca una serie repetida. La fila de letras se reduce a qué letra y cuántas veces, y la longitud total se acorta.

Si reduces todas las series, el original, de doce casillas, pasa a tener nueve. No se tiró ninguna letra: solo se anotó qué letra y cuántas veces. Eso sí, una serie de apenas tres letras ocupa las mismas casillas aunque se abrevie, así que no se gana nada. Cuanto más larga es la serie, más se reduce.
Este método se llama codificación por longitud de serie, y le sienta bien a los datos con series largas, como un dibujo con grandes zonas de un solo color. Pero si las mismas letras no están juntas y, en cambio, los mismos trozos aparecen dispersos aquí y allá, este método no sirve. ¿Cómo se recorta la repetición dispersa?

02

Códigos cortos para los trozos frecuentes

La repetición dispersa también se puede recortar. Se buscan trozos largos que aparecen a menudo, se le asigna a cada uno un código corto y se escribe el código cada vez que aparece ese trozo. Qué código representa qué trozo se anota aparte, en una tabla.
Cuanto más a menudo aparece un trozo, más reemplazos hay y mayor es el efecto. La tabla también hay que guardarla, así que los datos muy cortos pueden incluso crecer. Muchos de los programas de compresión que se usan de verdad se basan en este tipo de método, que remite a trozos que ya aparecieron antes.

datos · longitud 18
thexandtheyandthez
da un código a un trozo frecuente
Toca un trozo para asignarle un código corto

Toca un trozo frecuente para darle un código corto. Todos los lugares donde aparece ese trozo se convierten en el código, y la longitud total baja.

Al darles código a los dos trozos, dieciocho casillas se redujeron a ocho. Recortar la repetición y dar códigos cortos nacen, al final, de la misma idea: donde los datos se repiten, escribir menos esa parte.
Dicho al revés, los datos aleatorios, sin ninguna repetición, no se pueden reducir. Por eso, comprimir de nuevo un archivo ya comprimido casi no lo achica. Pero, cuando algo reducido así se vuelve a expandir, ¿de verdad queda exactamente como estaba?

03

Deshazlo y vuelve el original tal cual

Con los métodos que vimos hasta ahora, al expandir vuelve el original sin una sola letra de diferencia, porque no se tiró nada. La nota «A cuatro veces» se expande de nuevo en las cuatro letras AAAA, y cada código corto vuelve a ser su trozo largo consultando la tabla.
Una compresión que no pierde nada, como esta, se llama compresión sin pérdida. Los datos en los que una sola letra equivocada es inaceptable, como los textos o los programas, siempre usan compresión sin pérdida.

comprimido
descomprimido
Toca por turno las piezas comprimidas para expandirlas
original
AAAAtheBB
Toca por turno las piezas comprimidas para expandirlas

Toca por turno las piezas comprimidas para expandirlas. Las notas abreviadas se despliegan en las letras originales, y puedes comparar el resultado lado a lado con el original.

Lo expandido coincide con el original hasta la última letra. Como no se perdió nada al guardarlo en pequeño, puedes comprimir sin preocuparte y recuperarlo tal cual cuando lo necesites.
En cambio, las fotos, la música y el video a veces se hacen mucho más pequeños tirando a propósito detalles que la gente casi no nota. Eso se llama compresión con pérdida, y las partes descartadas no se pueden recuperar nunca. Entonces, ¿conviene hacer siempre la compresión sin pérdida lo más fuerte posible?

04

Más pequeño vs más rápido

La compresión permite elegir una intensidad. Si es suave, termina rápido pero reduce menos; si es fuerte, reduce más pero tarda más en comprimir. Cuanto más a fondo se buscan los trozos repetidos, más pequeño queda el resultado, pero más trabajo cuesta.
Por eso, la respuesta correcta depende de la situación. Para un archivo que se comprime una vez y se guarda mucho tiempo, o que mucha gente va a descargar, conviene la fuerte; si hay que comprimir en el momento cada vez que se envía algo, conviene la suave.

tamaño
tiempo
Elige una intensidad de compresión

Elige una intensidad de compresión y tócala. Cuanto más fuerte, menor es el tamaño pero mayor el tiempo: el intercambio queda a la vista.

El tamaño y el tiempo se mueven en sentidos opuestos. No puedes tener las dos cosas a la vez: para guardar algo más pequeño hay que esperar más, y para terminar antes hay que conformarse con reducir menos. En muchos métodos de compresión, expandir tarda más o menos lo mismo sea cual sea la intensidad, así que quien paga el precio es sobre todo el lado que comprime.
Por eso la compresión es una herramienta que se elige según la situación. Si falta espacio, la fuerte; si falta tiempo, la suave.

05

Resumen

En resumen: la compresión es la técnica de meter la misma información en menos espacio. Las series repetidas se reducen a qué letra y cuántas veces, y los trozos dispersos reciben códigos cortos. Los métodos que vimos son compresión sin pérdida: al deshacerla, vuelve el original tal cual.
Cuanto más fuerte se comprime, más pequeño queda, pero cuesta más tiempo, así que se elige según la situación. Encontrar dónde se repiten los datos y escribir menos, pero recuperarlo todo tal cual al deshacerlo: eso es la compresión.

Toca los puntos clave en orden para repasar.

Toca los puntos clave en orden para repasar. (recortar la repetición → códigos cortos para los trozos frecuentes → al deshacerlo vuelve el original tal cual → más pequeño vs tiempo)

La compresión también se usa cuando las computadoras se envían datos entre sí, porque los datos pequeños llegan antes.
Pero ¿qué pasa si los datos crecen tanto que, por mucho que se compriman, no caben en una sola computadora? La próxima lección, sobre los datos distribuidos, explica cómo repartirlos entre muchas máquinas y guardar copias por si alguna falla.

En una líneaLa compresión es la técnica de meter la misma información en menos espacio. Cuando la misma letra se repite seguida, se anota solo qué letra y cuántas veces; los trozos frecuentes reciben códigos cortos, que se anotan en una tabla. Cuanta más repetición hay, más se reducen los datos, y los datos aleatorios, sin repetición, no se reducen. Los métodos que vimos son compresión sin pérdida, en la que al deshacerla vuelve el original hasta la última letra, mientras que las fotos y la música a veces usan compresión con pérdida, que tira partes difíciles de notar. Comprimir más fuerte hace los datos más pequeños pero cuesta más tiempo, así que se elige un equilibrio entre tamaño y tiempo. Encontrar la repetición y escribir menos, pero recuperarlo todo tal cual al deshacerlo: esa es la esencia de la compresión.
← Datos
¿Te fue útil? Apoyar seegongsik