Está en la página 1de 8

Codigos de Huffman y Shannon Fano Ciencia y Tecnologia de la Informacion II Universidad Distrital Francisco Jose de Caldas Docente:Julio Florez

Christian Javier Bonilla Herrera Jonathan Camilo Bonilla Malaver David Felipe Camargo Polo Sergio Andres Novoa Moreno

20072020013 20072020014 20071020016 20072020111

Introduccin El objetivo de estos cdigos es generar una representacin de la informacin de la fuente de forma tal que su tamao se aproxime a la entropa terica de esa fuente, produciendo una "compresin" de los datos. Son cdigos prefijo.

Codificacin Shannon-Fano Introduccin Este mtodo de codificacin fue desarrollado por Claude Shannon en los laboratorios Bell y por Robert Fano en MIT (Massachussets Institute of Technology) en la dcada del 40 casi simultneamente.La tcnica fue propuesta por Claude Elwood Shannon, en Una Teora Matemtica de la Comunicacin, su artculo de 1948 introduciendo el campo de la teora de la informacin. El mtodo fue atribuido a Robert Fano, quien posteriormente lo public como un informe tcnico. La codificacin Shannon-Fano no debe confundirse con la codificacin Shannon, mtodo de codificacin usado para probar el teorema de Shannon de la codificacin sin ruido, ni con la codificacin Shannon-Fano-Elias (tambin conocida como codificacin Elias), el precursor de la codificacin aritmtica. El metodo de Shannon fano se refiere a la probabilidad de aparicin de cada smbolo en un mensaje, su utilidad principal es la compresin de datos aunque desafortunadamente, Shannon-Fano no produce siempre cdigos prefijos ptimos, lo cual lo hace no optimo en el sentido de que no consigue la menor longitud de palabra cdigo esperada posible como en la codificacin Huffman; aunque a diferencia de la codificacin Huffman, garantiza que todas las longitudes de palabras de cdigo estn a un bit de su ideal terico logP(x). Propiedades http://es.scribd.com/doc/43669982/Codificacion-Huffman http://www.isa.cie.uva.es/proyectos/codec/teoria32.html#sanon http://www.gedlc.ulpgc.es/docencia/seminarios/cd/Codificacion/sld051.htm

Diferentes cdigos, tienen diferentes tipos de bits Los cdigos para smbolos con bajas probabilidades tienen ms bits Los cdigos para smbolos con altas probabilidades tienen menos bits Cdigos de longitud diferente pueden ser unvocamente decodificados

Algoritmo 1 Para una secuencia de smbolos, se calcula la correspondiente lista de frecuencias de aparicin de los smbolos. 2 Se ordena la lista de smbolos segn 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 ms cercana posible a la suma total de la parte inferior 4 A la mitad superior de la lista se le asigna el dgito binario 0, y a la mitad inferior se le asigna el dgito binario 1. Esto significa que los cdigos de los smbolos en la primera mitad empezarn todos con 0 y los cdigos en la segunda mitad empezarn todos con 1. 5 Cada una de las mitades, se subdivide en grupos y se agregan bits (digitos binarios) a los cdigos hasta que cada grupo conste de un nico smbolo. 6 Se pueden representar los smbolos a modo de rbol binario 7 Se calcula la entropa como: X = Largo de la serie / frecuencia Entropa = Log 2 (X) 8 Una vez calculada la entropa se calcula la entropa en el mensaje (cantidad de bits necesarios para representar el smbolo en el mensaje) Entropia * frecuencia del smbolo 9 Finalmente el clculo de los bits de cdigo a transmitir est dado por la representacin binaria (0,1) del smbolo y los bits de mensajes es la multiplicacin de los bits de cdigos * la frecuencia del smbolo

Ejemplo http://es.scribd.com/doc/43669982/Codificacion-Huffman http://www.isa.cie.uva.es/proyectos/codec/teoria32.html#sanon http://www.gedlc.ulpgc.es/docencia/seminarios/cd/Codificacion/sld051.htm

Dada la siguiente secuencia de simbolos codifique segun shannon fano: DDABEBADACABAAECDCBAEACABCBAADDEAACAEAB 1 2 Calcular frecuencias de simbolos A = 15 ; B = 7; C = 6; D = 6; E = 5 Hacer una tabla de simbolos

Dividir en 2 grupos Grupo 1 A+B=22 Grupo 2 C+D+E=17 A la mitad inferior se le asigna 1 a la superior 0

Se agregan bits hasta que sean unicos

http://es.scribd.com/doc/43669982/Codificacion-Huffman http://www.isa.cie.uva.es/proyectos/codec/teoria32.html#sanon http://www.gedlc.ulpgc.es/docencia/seminarios/cd/Codificacion/sld051.htm

Se representa como arbol binario

Se calcula la entropia

Y despues la entropia del mensaje

http://es.scribd.com/doc/43669982/Codificacion-Huffman http://www.isa.cie.uva.es/proyectos/codec/teoria32.html#sanon http://www.gedlc.ulpgc.es/docencia/seminarios/cd/Codificacion/sld051.htm

Se calculan los Bits de codigo y mensaje

10 Utilizariamos 89 bits lo que es el 29% de compresion

Codificacin Huffman En 1951, a David Huffman y sus compaeros de clase de la asignatura Teora de la Informacin se les permiti optar entre la realizacin de un examen final o la presentacin de un trabajo. El profesor Robert. M. Fano asign las condiciones del trabajo bajo la premisa de encontrar el cdigo binario ms eficiente. Huffman, ante la imposibilidad de demostrar qu cdigo era ms eficiente, se rindi y empez a estudiar para el examen final. Mientras estaba en este proceso vino a su mente la idea de usar rboles binarios de frecuencia ordenada y rpidamente prob que ste era el mtodo ms eficiente. Con este estudio, Huffman super a su profesor, quien haba trabajado con el inventor de la teora de la informacin Claude Shannon con el fin de desarrollar un cdigo similar. Huffman solucion la mayor parte de los errores en el algoritmo de codificacin Shannon-Fano. La solucin se basaba en el proceso de construir el rbol de abajo a arriba en vez de al contrario.
1

La codificacin de Huffman es una tcnica para la compresin de datos, ampliamente usada y muy efectiva. Es un mtodo general de codificacin y compresin diseado para minimizar el nmero medio de bits necesarios para transmitir un smbolo cuando se debe transmitir varias copias independientes y estadsticamente equivalentes de dicho smbolo. Este mtodo determina cmo los distintos valores del smbolo deben representarse como cadenas binarias.

1 1

http://es.wikipedia.org/wiki/Codificaci%C3%B3n_Huffman#Historia http://neo.lcc.uma.es/evirtual/cdd/tutorial/presentacion/huffman.html

http://es.scribd.com/doc/43669982/Codificacion-Huffman http://www.isa.cie.uva.es/proyectos/codec/teoria32.html#sanon http://www.gedlc.ulpgc.es/docencia/seminarios/cd/Codificacion/sld051.htm

En la codificacin Huffman se crea una estructura arbrea ordenada con todos los smbolos y la frecuencia con que aparecen. Las ramas se construyen en forma recursiva comenzando con los smbolos menos frecuentes. La construccin del rbol se realiza ordenando en primer lugar los smbolos segn la frecuencia de aparicin. Los dos smbolos con menor frecuencia de aparicin se eliminan sucesivamente de la lista y se conectan a un nodo cuyo peso es igual a la suma de la frecuencia de los dos smbolos. El smbolo con menor peso es asignado a la rama 1, el otro a la rama 0 y as sucesivamente, considerando cada nodo formado como un smbolo nuevo, hasta que se obtiene un nodo principal llamado raz. El cdigo de cada smbolo corresponde a la sucesin de cdigos en el camino, comenzando desde este carcter hasta la raz. De esta manera, cuanto ms dentro del rbol est el smbolo, ms largo ser el cdigo. Algoritmo El algoritmo para la aplicacin de la codificacin Huffman, consiste en la creacin de un arbol binario que representa una fuente de informacin, los nodos hoja se etiquetan con los caracteres del alfabeto propio de la fuente, y sus frecuencias de aparicin, o probabilidades asociadas. Se unen consecutivamente los nodos cuya suma de frecuencia sea menor, y se procede hasta que no queda ningun nodo hoja por unir a ningun nodo superior y de esta manera se haya completado la creacin del arbol binario. Posterior a este procedimiento, se etiquetan las ramas que unen cada uno de los nodos con 1 y 0, que indican hijo derecho e izquierdo respectivamente. El cdigo resultante para cada caracter es la lectura, siguiendo la rama desde la raiz hacia el nodo hoja que se quiera alcanzar. Ejemplo Una fuente S, tiene un alfabeto con 6 caracteres, S= {s1, s2, , s6}, y sus probabilidades asociadas P{1, 2, , 6} = {0.4, 0.2, 0.2, 0.1, 0.07, 0.03} La entropa asociada a esta fuente es: H(S) = 2.21 bits Siguiendo el algoritmo para la codificacin de Huffman, el arbol binario que representa la fuente seria este:

http://es.scribd.com/doc/43669982/Codificacion-Huffman http://www.isa.cie.uva.es/proyectos/codec/teoria32.html#sanon http://www.gedlc.ulpgc.es/docencia/seminarios/cd/Codificacion/sld051.htm

En las hojas inferiores del rbol estan los nodos que tienen menos frecuencia, o peso. La frecuencia de los nodos aumenta progresivamente hasta que se alcance la raiz del rbol. Los nodos interseccin hacen 2referencia a la suma de sus dos nodos hijo. Propiedades principales Es ptima cuando la probabilidad de cada smbolo de entrada es una potencia negativa de dos. Los cdigos prefijos tienden a ser ligeramente ineficientes en alfabetos pequeos.

http://es.scribd.com/doc/43669982/Codificacion-Huffman http://www.isa.cie.uva.es/proyectos/codec/teoria32.html#sanon http://www.gedlc.ulpgc.es/docencia/seminarios/cd/Codificacion/sld051.htm

Concatenando mltiples smbolos en "palabras" de tamao fijo o variable antes de la codificacin Huffman, normalmente ayuda, especialmente cuando smbolos adyacentes estn correlacionados.

Variaciones Cdigo huffman n-ario El algoritmo n-ario de huffman usa el alfabeto {0,1,,N-1} para codificar el mensaje y construir un rbol n-ario. Este enfoque fue considerado por huffman en su enfoque originario. Cdigo huffman adaptable La variacin llamada cdigo de huffman adaptable calcula dinmicamente la probabilidad de la frecuencia de la cadena de origen basada en antiguas apariciones. Est relacionado con la familia de algoritmos LZ. Algoritmo de Huffman de plantilla El algoritmo de plantilla de Huffman permite utilizar cualquier tipo de tamao de cdigo (costos, frecuencias, los pares del tamao, tamaos no numricos) y uno de los muchos que combina mtodos (no solo la adicin). Cdigo de Huffman de tamao limitado El Cdigo de Huffman de tamao de limitado es una variante donde el objetivo es lograr que el camino de coste mnimo con la restriccin de que la longitud de cada palabra sea menor que una constante. Codificacin huffman con costes desiguales En la codificacin huffman con costes, los smbolos del alfabeto pueden tener longitudes no uniformes, debido a caractersticas del medio de transmisin.U n ejemplo es el alfabeto del cdigo morse, donde una 'raya' requiere ms tiempo para ser enviada que un 'punto', y por lo tanto el costo del tiempo de transmisin de una raya es mayor. rboles binarios alfabticos ptimos (codificacin hu-tucker) En una situacin de codificacin huffman estndar, se asume que cualquier cdigo puede corresponderse con cualquier smbolo de entrada. En la versinal fa b t ic a, el orden alfabtico de las entradas y salidas debe ser idntico.

http://es.scribd.com/doc/43669982/Codificacion-Huffman http://www.isa.cie.uva.es/proyectos/codec/teoria32.html#sanon http://www.gedlc.ulpgc.es/docencia/seminarios/cd/Codificacion/sld051.htm