Discusión:Codificación Huffman

message: El ejemplo está mal, en primer lugar no es lo mismo a que A o que á, de modo que hay que considerar que son letras distintas, cada una con su código. En segundo lugar, suponiendo que todas esas letras fueran iguales ni siquiera están calculadas bien las frecuencias, el espacio se repite 7 veces y no 8 y la n se repite 2 veces y no 3, y finalmente para rematar la faena, el árbol está mal calculado, hay que juntar siempre las dos frecuencias menores, y habiendo dos treses (de la 'n' (aunque sea incorrecto) y de la 'o') no se pueden juntar cada una de ellas con un cuatro, sino que hay que unirlas entre sí.
Resumiendo, suponiendo que no importa si las letras son mayúsculas, minúsculas o con acento, el resultado debería ser (naturalmente escrito por un programa, no por mí):
La letra E se repite 6 veces le asignamos el índice 0
La letra S se repite 2 veces le asignamos el índice 1
La letra T se repite 1 veces le asignamos el índice 2
La letra O se repite 3 veces le asignamos el índice 3
La letra   se repite 7 veces le asignamos el índice 4
La letra U se repite 2 veces le asignamos el índice 5
La letra N se repite 2 veces le asignamos el índice 6
La letra J se repite 1 veces le asignamos el índice 7
La letra M se repite 2 veces le asignamos el índice 8
La letra P se repite 1 veces le asignamos el índice 9
La letra L se repite 2 veces le asignamos el índice 10
La letra D se repite 2 veces le asignamos el índice 11
La letra A se repite 2 veces le asignamos el índice 12
La letra R se repite 1 veces le asignamos el índice 13
La letra B se repite 1 veces le asignamos el índice 14
La letra H se repite 1 veces le asignamos el índice 15
La letra F se repite 2 veces le asignamos el índice 16
Cálculo del código de Huffman para el alfabeto dado
En lo sucesivo nos ovidaremos de las letras y trabajaremos
con su índice, y añadiremos nuevos índices a medida que
vayamos construyendo el árbol.
Las dos frecuencias menores son 1 (nodo 2) y 1 (nodo 7), los juntamos en el nodo 17 con frecuencia 2, el árbol queda:
  17 
  |  
-----
|   |
2   7
Las dos frecuencias menores son 1 (nodo 9) y 1 (nodo 13), los juntamos en el nodo 18 con frecuencia 2, el árbol queda:
  18 
  |  
-----
|   |
9   13
Las dos frecuencias menores son 1 (nodo 14) y 1 (nodo 15), los juntamos en el nodo 19 con frecuencia 2, el árbol queda:
  19 
  |  
-----
|   |
14  15
Las dos frecuencias menores son 2 (nodo 1) y 2 (nodo 5), los juntamos en el nodo 20 con frecuencia 4, el árbol queda:
  20 
  |  
-----
|   |
1   5
Las dos frecuencias menores son 2 (nodo 6) y 2 (nodo 8), los juntamos en el nodo 21 con frecuencia 4, el árbol queda:
  21 
  |  
-----
|   |
6   8
Las dos frecuencias menores son 2 (nodo 10) y 2 (nodo 11), los juntamos en el nodo 22 con frecuencia 4, el árbol queda:
  22 
  |  
-----
|   |
10  11
Las dos frecuencias menores son 2 (nodo 12) y 2 (nodo 16), los juntamos en el nodo 23 con frecuencia 4, el árbol queda:
  23 
  |  
-----
|   |
12  16
Las dos frecuencias menores son 2 (nodo 17) y 2 (nodo 18), los juntamos en el nodo 24 con frecuencia 4, el árbol queda:
      24   
      |    
  ---------
  |       |
  17      18 
  |       |  
-----   -----
|   |   |   |
2   7   9   13
Las dos frecuencias menores son 2 (nodo 19) y 3 (nodo 3), los juntamos en el nodo 25 con frecuencia 5, el árbol queda:
      25 
      |  
  -------
  |     |
  19    |
  |     |
-----   |
|   |   |
14  15  3
Las dos frecuencias menores son 4 (nodo 20) y 4 (nodo 21), los juntamos en el nodo 26 con frecuencia 8, el árbol queda:
      26   
      |    
  ---------
  |       |
  20      21 
  |       |  
-----   -----
|   |   |   |
1   5   6   8
Las dos frecuencias menores son 4 (nodo 22) y 4 (nodo 23), los juntamos en el nodo 27 con frecuencia 8, el árbol queda:
      27   
      |    
  ---------
  |       |
  22      23 
  |       |  
-----   -----
|   |   |   |
10  11  12  16
Las dos frecuencias menores son 4 (nodo 24) y 5 (nodo 25), los juntamos en el nodo 28 con frecuencia 9, el árbol queda:
              28       
              |        
      -----------------
      |               |
      24              25 
      |               |  
  ---------       -------
  |       |       |     |
  17      18      19    |
  |       |       |     |
-----   -----   -----   |
|   |   |   |   |   |   |
2   7   9   13  14  15  3
Las dos frecuencias menores son 6 (nodo 0) y 7 (nodo 4), los juntamos en el nodo 29 con frecuencia 13, el árbol queda:
  29 
  |  
-----
|   |
0   4
Las dos frecuencias menores son 8 (nodo 26) y 8 (nodo 27), los juntamos en el nodo 30 con frecuencia 16, el árbol queda:
              30       
              |        
      -----------------
      |               |
      26              27   
      |               |    
  ---------       ---------
  |       |       |       |
  20      21      22      23 
  |       |       |       |  
-----   -----   -----   -----
|   |   |   |   |   |   |   |
1   5   6   8   10  11  12  16
Las dos frecuencias menores son 9 (nodo 28) y 13 (nodo 29), los juntamos en el nodo 31 con frecuencia 22, el árbol queda:
                          31   
                          |    
              -----------------
              |               |
              28              |
              |               |
      -----------------       |
      |               |       |
      24              25      |
      |               |       |
  ---------       -------     |
  |       |       |     |     |
  17      18      19    |     29 
  |       |       |     |     |  
-----   -----   -----   |   -----
|   |   |   |   |   |   |   |   |
2   7   9   13  14  15  3   0   4
Las dos frecuencias menores son 16 (nodo 30) y 22 (nodo 31), los juntamos en el nodo 32 con frecuencia 38, el árbol queda:
                              32                           
                              |                            
              ---------------------------------------------
              |                                           |
              |                                           31   
              |                                           |    
              |                               -----------------
              |                               |               |
              30                              28              |
              |                               |               |
      -----------------               -----------------       |
      |               |               |               |       |
      26              27              24              25      |
      |               |               |               |       |
  ---------       ---------       ---------       -------     |
  |       |       |       |       |       |       |     |     |
  20      21      22      23      17      18      19    |     29 
  |       |       |       |       |       |       |     |     |  
-----   -----   -----   -----   -----   -----   -----   |   -----
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
1   5   6   8   10  11  12  16  2   7   9   13  14  15  3   0   4
y como sólo queda un nodo, este es el árbol final
Los códigos de huffman se obtienen siguiendo el árbol
desde la raíz hasta las hojas y asignando 0 a la rama
izquierda y 1 a la rama derecha.
Por ejemplo, partimos de la raíz en 32, con el código vacío
y vamos por la rama de la izquierda hasta llegar a 30, cuyo código será 0
y vamos por la rama de la izquierda hasta llegar a 26, cuyo código será 00
y vamos por la rama de la derecha hasta llegar a 21, cuyo código será 001
y vamos por la rama de la derecha hasta llegar a 8, cuyo código será 0011
Y aquí acabamos, ya que no hay más ramas, por tanto el código de la letra 8 (M) es 0011
Repitiendo lo anterior para todas las letras obtenemos la tabla siguiente:
El código de la letra 0 (E) es 110
El código de la letra 1 (S) es 0000
El código de la letra 2 (T) es 10000
El código de la letra 3 (O) es 1011
El código de la letra 4 ( ) es 111
El código de la letra 5 (U) es 0001
El código de la letra 6 (N) es 0010
El código de la letra 7 (J) es 10001
El código de la letra 8 (M) es 0011
El código de la letra 9 (P) es 10010
El código de la letra 10 (L) es 0100
El código de la letra 11 (D) es 0101
El código de la letra 12 (A) es 0110
El código de la letra 13 (R) es 10011
El código de la letra 14 (B) es 10100
El código de la letra 15 (H) es 10101
El código de la letra 16 (F) es 0111
Con lo que finalmente el mensaje codificado es:
1100000100001011111110000011100010010111110100011100011100100100101111101011101110110100111010010110100111010111011110101000101110111001101100010
:Creo que está corregido, pero he tenido que modificar la imagen y poner un 41 donde había un 38. Suerte que el svg en realidad es texto normal y corriente. JacobRodrigues (discusión) 02:43 5 ene 2014 (UTC)
thread_title:  Ejemplo incorrecto 

message: Carácter no es lo mismo que caracter. Por favor, ¡sustituir carácter por caracter!
:Carácter es correcto: . JacobRodrigues (discusión) 02:43 5 ene 2014 (UTC)
thread_title:  Ortografía 

message: Revisar la ultima frase del ejemplo :
"Hay que añadir que la codificación de Huffman no puede ser aplicada a imágenes en blanco y negro porque es incapaz de producir compresión sobre un alfabeto binario."
¿La matriz de luminancia en Jpeg no esta conformada necesariamente por valores de un alfabeto binaria ?
:Tal vez se refiere a un alfabeto de dos símbolos, 0 y 1, es decir, imagenes en blanco y negro de verdad, no en escala de grises. JacobRodrigues (discusión) 02:43 5 ene 2014 (UTC)
thread_title:  Frase final