Contenido principal
Principios de ciencias de la computación avanzados (AP Computer Science Principles)
Curso: Principios de ciencias de la computación avanzados (AP Computer Science Principles) > Unidad 1
Lección 6: Compresión de datos sin pérdidaCompresió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ácter | código binario |
---|---|
a | 00 |
c | 01 |
g | 10 |
t | 11 |
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ácter | código binario |
---|---|
a | 010 |
c | 00 |
g | 011 |
t | 1 |
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.
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?
- 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.(2 votos)
- 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.(1 voto)