Calculadora de codificación Shannon-Fano
Esta calculadora en línea genera la codificación Shannon-Fano basada en un conjunto de símbolos y sus probabilidades
Esta calculadora en línea produce la codificación Shannon-Fano para un conjunto de símbolos dadas sus probabilidades. Un poco de teoría se puede encontrar debajo de la calculadora.
Codificación Shannon-Fano
En el campo de la compresión de datos, la codificación Shannon-Fano, llamada así por Claude Shannon y Robert Fano, es una técnica para construir un código prefijo basado en un conjunto de símbolos y sus probabilidades (estimadas o medidas). No es óptimo en el sentido de que no consigue la menor longitud de palabra código esperada posible como en la Codificación Huffman.
En la codificación Shannon-Fano, los símbolos se ordenan del más al menos probable, y se dividen en dos subconjuntos cuyas probabilidades totales son tan próximas a ser iguales como sea posible. A continuación todos los símbolos tendrán el primer dígito de sus códigos asignados; los del primer subconjunto recibirán el “0” y los del segundo el “1”. Mientras exista algún subconjunto con más de un término, se repetirá el mismo proceso para determinar los sucesivos dígitos de sus códigos. Cuando uno de los subconjuntos ha sido reducido a un símbolo, esto significa que el código del símbolo es completo y que no formará el prefijo del código de ningún otro símbolo.
El algoritmo produce codificaciones de longitud variable bastante eficientes; cuando los dos subconjuntos producidos por una división tienen la misma probabilidad, el único bit de información utilizado para distinguirlos se utiliza de manera más eficiente. Desafortunadamente, Shannon-Fano no siempre produce códigos prefijos óptimos; el conjunto de probabilidades {0.35, 0.17, 0.17, 0.16, 0.15} es un ejemplo de uno al que se le asignarán códigos no óptimos mediante la codificación Shannon-Fano.
Por esta razón, Shannon-Fano casi nunca se utiliza; la Codificación Huffman es casi tan simple desde el punto de vista computacional y produce códigos prefijos que siempre alcanzan la menor longitud esperada de palabra de código, con la restricción de que cada símbolo se representa por un código formado por un número integral de bits.1
Comentarios