Primero quiero hacer un pequeño resumen sobre el código Huffmann para evitar malentendidos.
Comienza el resumen
Así que tenemos un alfabeto $A$ con $|A| > 1 $ . Por ejemplo $A$ = { $a,b,c,d,e$ }. Ahora numeramos las letras: $a=1,b=2,c=3,d=4,e=5$ .
Cada letra tiene una frecuencia. Así que tenemos un mapa $f : A \rightarrow [0,1]$ con $\sum_{a \in A} f(a) = 1$ . Por ejemplo $(1|0,2), (2|0,3), (3,|0,1), (4|0,35), (5|0,05)$ . Permítanme explicar mi notación: $(1|0,2)$ significa que la letra $a$ tiene frecuencia $0,2$ .
Así que el código Huffman nos dice que tomamos las dos letras con la menor frecuencia y las combinamos. Así obtenemos $(1|0,2), (2|0,3), (3,|0,15), (4|0,35)$ . Obtenemos :
Si repetimos este proceso obtendremos:
Así podemos calcular la ABL (Average Bit Length ):
$$ ABL(\gamma) = \sum_{a \in A} f(a) \cdot |\gamma(a)| $$
donde $\gamma$ es la longitud de la palabra clave. Por ejemplo $\gamma(e) = 4$ como puedes ver en mi segunda foto.
¿Alguna pregunta?
El resumen termina
Así que quiero obtener la máxima longitud media de bits. ¿Cómo tengo que elegir $f$ para un alfabeto $A$ con $|A| > 1$ ? He intentado muchas cosas como tomar la distribución uniforme $f(a) = \frac{1}{n}$ para todos $a \in A$ con $|A| = n$ . Pero esta y otras de mis ideas no han funcionado. ¿Pueden ayudarme? Actualización: Gracias a los comentarios que he recibido me he dado cuenta de que me he equivocado con la distribución uniforme. Así que podría ser que la distribución uniforme podría ser la solución.