Codificación de Shannon-Fano Facultad de Ingeniería Comunicación de Datos. Profesor : Alumnos : Marzo, 2003 Contenido 1. 2. 3. 4. 5. 6. Antecedentes Método de Shannon-Fano Propiedades de las tablas de código Entropía Utilización del método Conclusión Antecedentes Este método de codificación fue desarrollado por Claude Shannon en los laboratorios Bell y por Robert Fano en MIT (Massachussets Institute of Technology) en la década del 40 casi simultáneamente C. Shannon R. Fano Método de Shannon - Fano Se refiere a la probabilidad de aparición de cada símbolo en un mensaje. Básicamente se utiliza para la compresión de datos. Propiedades Tablas de código Diferentes códigos, tienen diferentes tipos de bits Los códigos para símbolos con bajas probabilidades tienen más bits Los códigos para símbolos con altas probabilidades tienen menos bits Códigos de longitud diferente pueden ser unívocamente decodificados Entropía La entropía se refiere a la cantidad de bits necesarios para representar un símbolo En un símbolo = - log2 (probabilidad) En un mensaje = suma de la entropía de sus símbolos Utilización del método 1. Para una secuencia de símbolos, se calcula la correspondiente lista de frecuencias de aparición de los símbolos. 2. Se ordena la lista de símbolos según su frecuencia en orden decreciente. 3. Se divide la lista en dos partes, de forma que la suma total de frecuencias de la mitad superior sea lo más cercana posible a la suma total de la parte inferior. Utilización del método 4. A la mitad superior de la lista se le asigna el dígito binario 0, y a la mitad inferior se le asigna el dígito binario 1. Esto significa que los códigos de los símbolos en la primera mitad empezarán todos con 0 y los códigos en la segunda mitad empezarán todos con 1. Utilización del método 5. Cada una de las mitades, se subdivide en grupos y se agregan bits (digitos binarios) a los códigos hasta que cada grupo conste de un único símbolo. 6. Se pueden representar los símbolos a modo de árbol binario Utilización del método 7. Se calcula la entropía como: X = Largo de la serie / frecuencia Entropía = Log 2 (X) 8. Una vez calculada la entropía se calcula la entropía en el mensaje (cantidad de bits necesarios para representar el símbolo en el mensaje) Entropia * frecuencia del símbolo Utilización del método 9. Finalmente el cálculo de los bits de código a transmitir está dado por la representación binaria (0,1) del símbolo y los bits de mensajes es la multiplicación de los bits de códigos * la frecuencia del símbolo Ejemplo Secuencia de símbolos inicial: DDABEBADACABAAECDCBAEACA BCBAADDEAACAEAB 1. Cálculo de Frecuencias de símbolos DDABEBADACABAAECDCBAEACA BCBAADDEAACAEAB A = 15 ; B = 7; C = 6; D = 6; E = 5 Total de veces que se repite cada símbolo en la series 2. Lista de símbolos Símbolo Frecuencia A 15 B 7 C 6 D 6 E 5 • Frecuencia: Veces que aparece cada letra o símbolo en la serie a transmitir 3. Se divide el grupo en dos (entre B y C) Símbolo Frecuencia A 15 B 7 C 6 D 6 E 5 15+7 = 22 6+6+5=17 4. Mitad superior se asigna 0 e inferior 1 Símbolo Frecuencia 1 div A 15 0 B 7 0 C 6 1 D 6 1 E 5 1 5. Se agregan bits hasta que sean únicos Símbolo Frecuencia 1 div 2 div 3 div A 15 0 00 ------ B 7 0 01 ------ C 6 1 10 ------ D 6 1 11 110 E 5 1 11 111 6. Representación como Árbol Binario Raíz 0 A = 00 B = 01 C = 10 D = 110 E = 111 1 0 1 0 A B C 0 1 D E 1 7. Entropía Símbolo A=Log2(39/15)=1.38 B=Log2 (39/7) =2.48 C=Log2 (39/6) =2.70 D=Log2 (39/6) =2.70 E=Log2 (39/5) =2.96 A B C D E Total Frec. Entropía 15 7 6 6 5 39 1.38 2.48 2.70 2.70 2.96 12.32 8. Entropía en el mensaje Símbolo Frec. Entropía Entropía en el mensaje A B C D E Total 15 7 6 6 5 39 1.38 2.48 2.70 2.70 2.96 12.32 20.68 17.35 16.20 16.20 14.82 85.25 9. Bits de código y de Mensaje Símbolo Frec. A B C D E Total 15 7 6 6 5 39 Entropía Entropía Bits Bits mensaje Código Mensaje 1.38 20.68 2 30 2.48 17.35 2 14 2.70 16.20 2 12 2.70 16.20 3 18 2.96 14.82 3 15 12.32 85.25 12 89 Conclusión Si codificáramos esta secuencia de símbolos utilizando 8 bits, utilizaríamos en total 312 bits (8 * 39 = 312). Si utilizáramos Shannon-Fano sólo usaríamos 89 bits. => Sólo codificamos el 29% (89/312)