Algorisme de Huffman: diferència entre les revisions
Contingut suprimit Contingut afegit
m r2.7.2+) (Robot afegeix: uk:Алгоритм Шеннона-Фано |
Cap resum de modificació |
||
Línia 1:
Aquest algorisme pren un
== Descripció ==
L'algorisme consisteix en la creació d'un [[arbre binari]] que té
# Es creen
#
Amb aquest arbre es pot conèixer el codi associat a un símbol i també es pot obtenir el símbol associat a un determinat codi.
▲# Es creen diversos arbres, un per cada un dels símbols de l'alfabet, consistint cadascun dels arbres en un node sense fills, i etiquetatge cadascun amb el seu símbol associat i la seva freqüència d'aparició.
▲# Es prenen els dos arbres de menor freqüència, i s'uneixen creant un nou arbre. L'etiqueta de l'arrel serà la suma de les freqüències de les arrels dels dos arbres que s'uneixen, i cada un d'aquests arbres serà un fill del nou arbre. També s'etiqueten les dues branques del nou arbre: amb un 0 la de l'esquerra, i amb un 1 la de la dreta.
▲# Es repeteix el pas 2 fins que només quedi un arbre.
# Començar amb un codi buit.
# Començar
# Cada vegada que es pugi un nivell, afegir al codi l'etiqueta de la branca que s'ha recorregut.▼
▲# Iniciar el recorregut de l'arbre en el full associada al símbol
# Després d'arribar a l'arrel, invertir el codi.▼
# El resultat és el codi d'Huffman desitjat.▼
▲# Cada vegada que es pugi un nivell, afegir al codi l'etiqueta de la branca que s'ha recorregut
▲# Després d'arribar a l'arrel, invertir el codi
▲# El resultat és el codi Huffman desitjat
Per obtenir un símbol a partir d'un codi s'ha de fer així:
# Començar el recorregut de l'arbre a l'arrel d'aquest.
# Extreure el primer símbol del codi a descodificar.
#
# Tornar al pas 2 fins que s'arribi a
A la pràctica, gairebé sempre s'utilitza l'arbre per obtenir tots els codis
=== Exemple d'ús ===
|