Código canónico de Huffman

O bien el descompresor puede inferir qué árbol de Huffman utilizó el compresor para un contexto anterior, o el compresor debe decirle al descompresor cuál es el árbol de Huffman que utilizó para construir el código.Las longitudes de bit que están en el diccionario de códigos se ordenan primero por la longitud del código y en segundo lugar por el valor alfabético: Cada uno de los códigos existentes es reemplazado con uno nuevo de la misma longitud, usando el siguiente algoritmo: Siguiendo las tres reglas mencionadas anteriormente, la versión canónica del diccionario de códigos producida será: La ventaja de un árbol canónico de Huffman es que uno puede codificar la descripción (el diccionario de códigos) en menos bits que en un árbol totalmente descrito.Por ejemplo, podríamos escribir cada símbolo seguido por el número de bits y el código: Una vez que listamos los símbolos en orden alfabético secuencial, podemos omitir los símbolos propiamente dichos, listando solo el número de bits y el código: Con nuestra versión canónica tenemos el conocimiento de que los símbolos están en orden alfabética secuencial y que posteriormente el código será siempre superior en valor que un código anterior.Los símbolos no usados son normalmente transmitidos como bits que tienen longitud cero.El pseudo código para la construcción de una tabla canónica de Huffman podría ser parecido al siguiente: