Discusión:Codificación Huffman
Ejemplo incorrecto
[editar]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
— El comentario anterior sin firmar es obra de 212.128.203.24 (disc. • contribs • bloq). y se hizo en fecha 2009-11-17. JacobRodrigues (discusión) 02:25 5 ene 2014 (UTC)
- 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)
Ortografía
[editar]Carácter no es lo mismo que caracter. Por favor, ¡sustituir carácter por caracter! — El comentario anterior sin firmar es obra de 201.246.97.158 (disc. • contribs • bloq). y se hizo en fecha 2010-11-29. JacobRodrigues (discusión) 02:25 5 ene 2014 (UTC)
- Carácter es correcto: Real Academia Española. «carácter: Señal o marca que se imprime, pinta o esculpe en algo.». Diccionario de la lengua española (23.ª edición).. JacobRodrigues (discusión) 02:43 5 ene 2014 (UTC)
Frase final
[editar]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 ? — El comentario anterior sin firmar es obra de 190.138.189.78 (disc. • contribs • bloq). y se hizo en fecha 2011-02-21. JacobRodrigues (discusión) 02:25 5 ene 2014 (UTC)
- 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)