Codificación Huffman

23
CODIFICACIÓN HUFFMAN

Transcript of Codificación Huffman

Page 1: Codificación Huffman

CODIFICACIÓN HUFFMAN

Page 2: Codificación Huffman

El término se refiere al uso de una tabla de códigos de longitud variable

para codificar un determinado símbolo

donde la tabla ha sido rellenada de una manera específica basándose en la probabilidad estimada de aparición de cada posible valor de dicho símbolo

Fue desarrollado por David A. Huffman mientras era estudiante de doctorado en el MIT, y publicado en "A Method for the Construction of Minimum-Redundancy Codes".

La codificación Huffman usa un método específico para elegir la representación de cada símbolo, que da lugar a un código prefijo que representa los caracteres más comunes usando las cadenas de bits más cortas, y viceversa.

Huffman fue capaz de diseñar el método de compresión más eficiente de este tipo: ninguna representación alternativa de un conjunto de símbolos de entrada produce una salida media más pequeña cuando las frecuencias de los símbolos coinciden con las usadas para crear el código.

INTRODUCCION

Page 3: Codificación Huffman

Codificación

Huffman

Es equivalente a una codificación en bloque binaria, por ejemplo, la codificación ASCII.

Es un método para crear códigos prefijo tan extendido que el término "codificación Huffman“ es ampliamenteUsado como sinónimo de "código prefijo", incluso cuando dicho código no se ha producido con el algoritmo de Huffman.

Es óptima para una codificación símbolo a símbolo dada unadistribución de probabilidad, su optimalidad a veces puede verse accidentalmente exagerada. Por ejemplo, la codificación aritmética y la codificación LZW

Page 4: Codificación Huffman

En 1951, a David Huffman y sus compañeros de clase de la asignatura “Teoría de la Información” se les permitió optar entre la realización de un examen final o la presentación de un trabajo.

El profesor Robert. M. Fano asignó las condiciones del trabajo bajo la premisa de encontrar el código binario más eficiente. Huffman, ante la imposibilidad de demostrar qué código era más 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

rápidamente probó que éste era el método más eficiente.

HISTORIA

Page 5: Codificación Huffman

DEFINICIONES

DadosUn conjunto de símbolos y sus pesos (normalmente proporcionales a probabilidades).

EncontrarUn código binario prefijo (un conjunto de elementos del código) con longitud de palabra esperada mínima (de forma equivalente, un árbol con longitud del camino mínima).

Descripción informal

Descripción formalizadaEntradas:El alfabeto , que es el alfabeto de símbolos de tamaño n.

Objetivo:Sea la longitud del camino ponderado del código C.Condición: para cualquier código

Salida:El código , que es el conjunto de elementos del código (binario), donde ci es la palabra del código para

Page 6: Codificación Huffman

DAVID A. HUFFMANAGOSTO 1925 OCTUBRE 1999.

BIOGRAFÍA

Page 7: Codificación Huffman

DAVID A. HUFFMAN (1)

Fue un personaje ilustre en el campo de ciencias de la computación en general y en la codificación de datos.

Nacido en Ohio, consiguió su título en Ingeniería Eléctrica en la Universidad Estatal de Ohio cuando tenía 18 años de edad. Posteriormente cumplió servicio militar, llegando a ser oficial de la marina.

Page 8: Codificación Huffman

DAVID A. HUFFMAN (2)Continuó sus estudios consiguiendo los títulos de Ingeniería Electrónica y de postgrado en Ohio (1949) y en el MIT, respectivamente.

Fue profesor desde 1953 en el MIT. En 1967, fue a la Universidad de California, también como docente, y fundó el departamento de Ciencia Informática. Se jubiló en 1994, pero permaneció en activo como profesor enseñando Teoría de la Información y dando cursos de Análisis de Señales.

Page 9: Codificación Huffman

DAVID A. HUFFMAN (3)Hizo contribuciones importantes en áreas como teoría de la información y codificación, diseños de señal para aplicaciones de radar y comunicaciones, así como procedimientos de diseño para circuitos lógicos asíncronos.

Sus logros le valieron numerosos premios y honores. El último de ellos fue en 1999, cuando recibió la medalla del Instituto Electrónico Richard Hamming y de la IEEE en reconocimiento de sus contribuciones excepcionales a las ciencias de información y la informática.

Page 10: Codificación Huffman

C o n s i s t e e n l a c r e a c i ó n d e u n á r b o l b i n a r i o e n e l q u e s e e t i q u e t a n l o s n o d o s h o j a c o n l o s c a r a c t e r e s , j u n t o a s u s f r e c u e n c i a s , y d e f o r m a c o n s e c u t i v a s e v a n u n i e n d o c a d a p a r e j a d e n o d o s q u e m e n o s f r e c u e n c i a s u m e n , p a s a n d o a c r e a r u n n u e v o n o d o i n t e r m e d i o e t i q u e t a d o c o n d i c h a s u m a . s e p r o c e d e a r e a l i z a r e s t a a c c i ó n h a s t a q u e n o q u e d a n n o d o s h o j a p o r u n i r a n i n g ú n n o d o s u p e r i o r , y s e h a f o r m a d o e l á r b o l b i n a r i o . p o s t e r i o r m e n t e s e e t i q u e t a n l a s a r i s t a s q u e u n e n c a d a u n o d e l o s n o d o s c o n c e r o s y u n o s .

Técnica básica

Page 11: Codificación Huffman

Es óptima cuando la probabilidad de cada símbolo de entrada

es una potencia negativa de dos.

Los códigos prefijos tienden a ser ligeramente ineficientes en

alfabetos pequeños,

Concatenando múltiples símbolos en "palabras" de tamaño

fijo o variable antes de la codificación Huffman, normalmente

ayuda, especialmente cuando símbolos adyacentes están

correlacionados.

Propiedades principales 

Page 12: Codificación Huffman

C ó d i g o h u f f m a n n - a r i o

E l a l g o r i t m o n - a r i o d e h u f f m a n u s a e l a l f a b e t o { 0 , 1 , … . , N - 1 } p a r a c o d i f i c a r e l m e n s a j e y c o n s t r u i r u n á r b o l n - a r i o . E s t e e n f o q u e f u e c o n s i d e r a d o p o r h u f f m a n e n s u e n f o q u e o r i g i n a r i o .  

C ó d i g o h u f f m a n a d a p t a b l e

L a v a r i a c i ó n l l a m a d a c ó d i g o d e h u f f m a n a d a p t a b l e c a l c u l a d i n á m i c a m e n t e l a p r o b a b i l i d a d d e l a f r e c u e n c i a d e l a c a d e n a d e o r i g e n b a s a d a e n a n t i g u a s a p a r i c i o n e s . E s t á r e l a c i o n a d o c o n l a f a m i l i a d e a l g o r i t m o s L Z .  

Variaciones(1)

Page 13: Codificación Huffman

Algoritmo de Huffman de plantillaEl algoritmo de plantilla de Huffman permite utilizar cualquier tipo de tamaño de código (costos, frecuencias, los pares del tamaño, tamaños no numéricos) y uno de los muchos que combina métodos (no solo la adición).

Código de Huffman de tamaño limitadoEl Código de Huffman de tamaño de limitado es una variante donde el objetivo es lograr que el camino de coste mínimo con la restricción de que la longitud de cada palabra sea menor que una constante.

Variaciones(2)

Page 14: Codificación Huffman

 

C o d i f i c a c i ó n h u f f m a n c o n c o s t e s d e s i g u a l e s

E n l a c o d i f i c a c i ó n h u f f m a n c o n c o s t e s , l o s s í m b o l o s d e l a l f a b e t o p u e d e n t e n e r l o n g i t u d e s n o u n i f o r m e s , d e b i d o a c a r a c t e r í s t i c a s d e l m e d i o d e t r a n s m i s i ó n . U n e j e m p l o e s e l a l f a b e t o d e l c ó d i g o m o r s e , d o n d e u n a ' r a y a ' r e q u i e r e m á s t i e m p o p a r a s e r e n v i a d a q u e u n ' p u n t o ' , y p o r l o t a n t o e l c o s t o d e l t i e m p o d e t r a n s m i s i ó n d e u n a r a y a e s m a y o r.

Á r b o l e s b i n a r i o s a l f a b é t i c o s ó p t i m o s ( c o d i f i c a c i ó n h u - t u c k e r )

E n u n a s i t u a c i ó n d e c o d i f i c a c i ó n h u f f m a n e s t á n d a r, s e a s u m e q u e c u a l q u i e r c ó d i g o p u e d e c o r r e s p o n d e r s e c o n c u a l q u i e r s í m b o l o d e e n t r a d a . E n l a v e r s i ó n a l f a b é t i c a , e l o r d e n a l f a b é t i c o d e l a s e n t r a d a s y s a l i d a s d e b e s e r i d é n t i c o .

Variaciones(3)

Page 15: Codificación Huffman

APLICACIONES(1)

Codificacion AritméticaEs un método que, al igual que la codificación Huffman, se basa en reducir el número medio de bits requeridos para representar un símbolo pero que, a diferencia de ésta, permite representar símbolos con un número de bits fraccionario. Con esta técnica de codificación no es necesario que las probabilidades de los símbolos del alfabeto fuente sean potencias de dos para obtener una eficiencia óptima.

Page 16: Codificación Huffman

APLICACIONES(2)

Algoritmo DeflaciónEs un algoritmo de compresión de datos sin pérdidas que usa una combinación del algoritmo LZ77 y la codificación Huffman. El algoritmo deflación está libre de todo tipo de patentes subsistentes, ha llevado a su popularización y su uso en archivos comprimidos bajo gzip y archivos de imagen PNG, además del formato de compresión ZIP para el cual fue diseñado originalmente.

Page 17: Codificación Huffman

APLICACIONES(3)

JPEG

Este es un método de compresión con pérdidas, pero en parte de su implementación se utiliza Código Huffman. Es a menudo considerado como un formato de archivo. JPEG es el formato de imagen más común utilizado por las cámaras fotográficas digitales y la transmisión de imágenes fotográficas en la World Wide Web.

Page 18: Codificación Huffman

MP3

MPEG-1 o 2 Audio Layer III más comúnmente conocido como MP3, es un formato de compresión de audio digital patentado que usa un algoritmo con pérdida para conseguir un menor tamaño de archivo. Usa como algoritmo de cuantificación digital código Huffman. Es un formato de audio común usado para música tanto en ordenadores como en reproductores de audio portátil.

APLICACIONES(4)

Page 19: Codificación Huffman

EJEMPLO(1)

En la siguiente tabla se muestran los valores a transmitir, junto con sus frecuencias relativas, su código en una codificación binaria de 3 bits, y su código en un posible código Huffman para estos valores.

Page 20: Codificación Huffman

Valor Frecuencia Código binario Código Huffman

0 10% 0 10

1 20% 1 10

2 30% 10 0

3 25% 11 11

4 10% 100 110

5 o más 5% 101 111

Tabla de asignacion de caracteres a bits

EJEMPLO(2)

Page 21: Codificación Huffman

En la codificación binaria, todos los posibles valores reciben códigos del

mismo número de bits, mientras que en la codificación Huffman, cada

valor tiene un número diferente de bits:

A continuación se observa el código necesario para transmitir la siguiente serie de valores:

5,4,2,3,2,2,1,0,1,3,2,4,3,4,3,2,3,4,2,4

EJEMPLO(3)

Page 22: Codificación Huffman

Utilizando la codificación binaria, sería una serie de 60 bits; es decir, 3 bits por símbolo.

 

101100010011010010001000001011010100011100011010011100010100 

Utilizando, en cambio, la codificación Huffman, se tendría que enviar una secuencia de 53 bits; es decir, 2,65 bits por símbolo. 01110110001100001001010110001101101101100110110000110

EJEMPLO(4)

Page 23: Codificación Huffman

Para su comparación, la entropía del conjunto de símbolos es de 2,366; es decir, el mejor método de compresión sería capaz de codificar estos valores utilizando 2,366 bits por símbolo.

EJEMPLO(5)