Algoritmo de Huffman · Voraz

Comprime un libro con Huffman

Elige un libro de Project Gutenberg. Contaremos cuántas veces aparece cada letra, construiremos el árbol de Huffman y generaremos un archivo .suf más ligero.

  1. 1Elige un libro
  2. 2Árbol y frecuencias
  3. 3Archivo .suf
Biblioteca

Don Quijote

Miguel de Cervantes Saavedra · Project Gutenberg #2000
  1. Descargar
  2. Contar letras
  3. Cola de prioridad
  4. Árbol
  5. Códigos
  6. Archivo .suf
Tamaño original
2.2 MB
2,206,001 bytes
Comprimido
1.2 MB
1,200,178 bytes
Ahorro
45.6 %
queda en 54.4 %
Bits por letra
4.47
entropía 4.43 · ASCII 8
Símbolos distintos
93
185 nodos en el árbol

Árbol de Huffman

Árbol de Huffman de Don Quijote Primeros niveles del árbol. Está resaltado el camino de la letra e: 0, 1, 0. 0 1 0 1 0 1 0 1 0 1 0 1 0 1 a192,727 209 K e221,968 238 K 272 K 310 K 349 K ␣354,706 402 K 460 K 583 K 704 K 862 K 1.29 M 2.15 M

Primeros 4 de 22 niveles · camino de e: 0 → 1 → 0 = 010

277 / 277

Letras

93 símbolos
Símbolo Apariciones Código
␣ 354,706 16.5 % 111
e 221,968 10.3 % 010
a 192,727 9.0 % 000
o 154,052 7.2 % 1010
s 123,238 5.7 % 0111
n 108,449 5.0 % 0011
r 100,863 4.7 % 0010
l 88,518 4.1 % 11010
d 85,823 4.0 % 11001
u 78,689 3.7 % 10111
i 77,759 3.6 % 10110
t 61,238 2.9 % 10000

y 81 símbolos más

Archivo listo

don-quijote.suf · 1.2 MB

Ver binario
Volver al árbol

don-quijote.suf

1,200,178 bytes · 9,595,277 bits de datos

Así se codifica «En un lugar de la Mancha»

E11000110111 n0011 ␣111 u10111 n0011 ␣111 l11010 u10111 g1001000 a000 r0010 ␣111 d11001 e010 ␣111 l11010 a000 ␣111 M11000100010 a000 n0011 c01101 h1001011 a000

Contenido del archivo

Encabezado · 768 bytes Datos · 1,199,410 bytes
  1. 00000010011010 01111001 10100111 10011010 01111001 10100111 11000110 11111010
  2. 00000811110110 00111001 00001000 11101101 01001111 01011110 01011101 10110010
  3. 00001600110101 00100010 10111110 01101000 11111110 00110101 01111011 01100010
  4. 00002411010100 00010111 11001010 11111010 00011111 00010001 00000011 01101100
  5. 00003210110001 00110100 11110011 01001111 00110100 11110011 01001111 00011101
  6. 00004000010111 11000100 01010110 10010001 01110101 10101111 10010101 11011000
  7. 00004800010100 01010010 01000001 11000001 00111111 01100000 10000001 00100101
  8. 00005601100100 10000100 11010011 11001101 00111100 11010011 11001101 00111100
  9. 00006411010011 11001101 00111110 00110111 11010111 10110001 11001000 01000111
  10. 00007201101010 01111010 11110010 11101101 10010001 10101001 00010101 11110011
  11. 00008001000111 11110001 10101011 11011011 00010110 10100000 10111110 01010111
  12. 00008811010000 11111000 10001000 00011011 01100101 10001001 10100111 10011010
  13. 00009601111001 10100111 11111110 01101001 11100101 00000000 01110001 00110100
  14. 00010411110011 01001111 11111100 11010011 11001010 00000100 11110000 10110110
  15. 00011211010100 01110110 10101111 10010101 11110100 00011111 10100010 00100001
  16. 00012000000000 11110011 01001111 00110100 11111111 11001101 00111110 00110111
  17. 00012811010111 11000110 00010101 10111110 01101001 11100110 10011111 11111001
  18. 00013610100111 01100110 10110101 11110001 00001011 11000101 01110101 11110010
  19. 00014410111011 00110001 10110001 11100010 10000010 10011010 01111001 10100111
  20. 00015211111110 01101001 11011001 10010010 10010101 11010101 01001000 10101001
  21. 00016010100111 10011010 01111111 11100110 10011101 10011010 11010111 11010101
  22. 00016810110111 00010101 01111100 10101111 10011010 00111111 10001101 01011110
  23. 00017611011000 10110101 00000101 11110010 10111110 10000111 11000100 01000000
  24. 00018411011011 00101100 01001101 00111100 11010011 11001101 00111100 11010011

Mostrando los primeros 192 bytes de datos de 1,199,410