If you're seeing this message, it means we're having trouble loading external resources on our website.

Si estás detrás de un filtro de páginas web, por favor asegúrate de que los dominios *.kastatic.org y *.kasandbox.org estén desbloqueados.

Contenido principal

Compresión de bits sin pérdida

Las computadoras representan todos los datos en binario, de manera que todos los tipos de archivos, desde texto hasta imágenes y videos, son en última instancia secuencias de bits. Independientemente de si los bits representan un documento o un GIF, las computadoras pueden usar una técnica de compresión de bits llamada codificación de Huffman.

Algoritmo de codificación de Huffman

Veamos cómo funciona con un ejemplo textual simple. Este lenguaje de ejemplo utiliza solo 4 caracteres diferentes, y aún así es increíblemente importante para nosotros: es el lenguaje utilizado para representar ADN y se compone de secuencias de cuatro caracteres A, C, G y T.
Por ejemplo, los 4.6 millones de caracteres que representan una secuencia de ADN de E.coli empiezan con:
agcttttcattct
Como necesitamos representar cuatro caracteres, una computadora normalmente representa cada carácter con 2 bits, así:
caráctercódigo binario
a00
c01
g10
t11
Los 13 caracteres anteriores pueden escribirse con 26 bits como sigue. Observa que no necesitamos huecos entre los códigos de bits.
100,111,111,111,000,000,000,000
Pero podemos hacerlo mejor. En el ejemplo de texto de muestra anterior, la letra "t" es más común que las otras letras ("t" aparece 7 veces, "c" 3 veces, "a" dos veces, y "g" una vez). Si asignamos un código más corto a "t", entonces usaremos menos espacio el 54% de las veces (7 de 13 caracteres). Por ejemplo, podríamos usar los códigos:
caráctercódigo binario
a010
c00
g011
t1
Entonces nuestros 13 caracteres se codifican así:
100,110,011,110,000,000,000
Esos son solo 22 bits, cuatro menos bits que en nuestra codificación original. Esto puede no parecer mucho, pero ¡imagina si usamos una optimización como esta para los 4.6 millones de caracteres del ADN completo!

Decodificación de Huffman

Puede ser que estés rascándote la cabeza con los nuevos códigos binarios y las diferentes longitudes que usamos. ¿Es posible decodificarlos de manera confiable? Sí, con el conjunto correcto de códigos.
¡Inténtalo tú mismo!
Decodifica los siguientes bits usando los códigos binarios optimizados.
111,001
caráctercódigo binario
a010
c00
g011
t1
Asegúrate de empezar en el primer bit de la izquierda, y haz coincidir con los códigos de izquierda a derecha. ¿Qué cadena de ADN obtienes?
Escoge 1 respuesta:

Esa es la belleza de la codificación de Huffman: el algoritmo nos da una manera de crear un conjunto de códigos binarios, para una secuencia determinada, que garantice que los datos puedan reconstruirse inequívoca y confiablemente.

Usos de la codificación de Huffman

Muchos formatos de archivos utilizan alguna clase de codificación de Huffman para reducir el tamaño del archivo. Las máquinas de FAX también la utilizan después de RLE en las secuencias de blanco y de negro. Las imágenes PNG se comprimen con LZ77, un algoritmo similar a la técnica de compresión de texto que aprendimos, en combinación con codificación de Huffman de los resultados.

🙋🏽🙋🏻‍♀️🙋🏿‍♂️¿Tienes alguna pregunta sobre este tópico? Nos encantaría contestarte; ¡simplemente pregunta en el area de preguntas abajo!

¿Quieres unirte a la conversación?

  • Avatar starky ultimate style para el usuario David Máximo
    Hay errores en las codificaciones: por ejemplo, en la primera codificación de agcttttcattct debería ser 00100111111111010011110111, y esto se puede corroborar en la versión en inglés. La segunda codificación también es incorrecta, pues debería ser 0100110011110001011001.
    (4 votos)
    Avatar Default Khan Academy avatar para el usuario
  • Avatar sneak peak purple style para el usuario J.
    Nota: Con los bits utilizamos la codificación de huffman que nos permite crear secuencias binarias que nos pueden ayudar a hacer la secuencia original mas simple.
    (2 votos)
    Avatar Default Khan Academy avatar para el usuario
¿Sabes inglés? Haz clic aquí para ver más discusiones en el sitio en inglés de Khan Academy.