You are on page 1of 22

Codificacin Huffman

NOMBRES:

TEORIA DE LA INFORMACION Y CODIFICACION.


MATRICULA:

LESLY YAJAIRA ONTIVEROS DIAZ


VICTOR SAMUEL GONZALEZ TRISTAN ERICK MARTINEZ MORALES

1381932
1139180 1254626

Introduccin.
La codificacin Huffman es un algoritmo usado para compresin de datos. El trmino se refiere al uso de una tabla de cdigos de longitud variable para codificar un determinado smbolo (como puede ser un carcter en un archivo), donde la tabla ha sido rellenada de una manera especfica basndose en la probabilidad estimada de aparicin de cada posible valor de dicho smbolo. Lo desarrollo David A. Huffman . La codificacin Huffman usa un mtodo especfico para elegir la representacin de cada smbolo, que da lugar a un cdigo prefijo que representa los caracteres ms comunes usando las cadenas de bits ms cortas, y viceversa. Huffman fue capaz de disear el mtodo de compresin ms eficiente de este tipo: ninguna representacin alternativa de un conjunto de smbolos de entrada produce una salida media ms pequea cuando las frecuencias de los smbolos coinciden con las usadas para crear el cdigo.

Desarrollo.
Es un cdigo prefijo ptimo para un conjunto dado de probabilidades. Puede alcanzar la entropa, aunque no lo hace siempre.

El cdigo Huffman esta basado en dos propiedades de los cdigos prefijos ptimos:

1. En un cdigo prefijo ptimo, los smbolos ms frecuentes los que tienen mayor probabilidad- tienen palabras del cdigo ms cortas que las palabras menos frecuentes. 2. En un cdigo prefijo ptimo, los dos smbolos que ocurren con menos frecuencia tendrn la misma longitud.

Alogaritmo del cdigo Huffman.


Funciones: Ordena los smbolos de ms probable a menos probable. Comienza a construir un rbol por las hojas combinando los dos smbolos menos probables. Itera el procedimiento.

Genera el cdigo de Huffman correspondiente a las siguientes posibilidades.

EJEMPLO
Segn una encuesta realizada en Transito, al pasar por un semforo existen un 50% de probabilidades de que el semforo este en Rojo; un 40 % de que pases en verde; un 9% de que el semforo este en amarillo y 1% de que el semforo no funcione.

PASO 1

Primero seleccionamos el caso con mayor probabilidad en este caso un semforo en rojo. En este ejemplo le asignamos el Bit 0.

Se le asigna un Bit a este caso (semforo en rojo) y se compara con todos los dems.

Paso 2
En caso de que el primer Bit de nuestro cdigo sea un 1 necesitaremos tomar un Bit extra en el cdigo. Tomando en cuenta que el caso con mas probabilidad (semforo en Rojo) ya esta asignado tendramos que buscar entre los casos restantes el que tenga mayor probabilidad. Esto significa que el mas probable ahora es un semforo en Verde. Le asignamos un 0 a nuestro cdigo.

Paso 3
Como nuestro ejemplo solo tiene 4 variables solamente se utilizan 3 Bits para completar el cdigo. Tomando en cuenta que el rojo y el verde estn asignados continuamos con la secuencia que llevamos asignando un 0 al caso mas probable entre las variables restantes( semforo en amarillo). Esto significa que nuestra cuarta variable se le asigna el caso restante.

Paso 4: Diccionario Huffman


Tanto el trasmisor como el Receptor necesitan saber el significado de estos smbolos. Hoffman almacena en el Diccionario el significado de cada cdigo con respecto a su variable.

Este Paso NO es necesario en un Hoffman Adaptable

Cdigo de Huffman adaptativo


El cdigo de Huffman necesita conocer la probabilidad de aparicin de cada smbolo. Para tener estas probabilidades podemos leer los datos para obtenerlas y luego codificar los smbolos usando el cdigo de Huffman para dichas probabilidades, o bien podemos ir construyndolo (adaptativamente) mientras vamos leyendo los smbolos. Esta es la base del cdigo Huffman adaptativo. Para la construccin del rbol adaptativamente, veamos a continuacin qu propiedades caracterizan a un rbol binario para que sea el correspondiente a un cdigo de Huffman.

Consideremos un rbol binario correspondiente a un alfabeto de tamao n en el que los smbolos del alfabeto son las hojas. Entonces, el nmero de nodos del rbol es 2n-1 A cada nodo del rbol binario le vamos a asignar dos campos: Nmero del nodo y peso del nodo. El nmero de nodo es un nmero nico asignado a cada nodo del rbol entre 1 y 2n-1. Los nmeros los notaremos y1,,y2n-1. El peso de un nodo hoja es simplemente el nmero de veces que aparece el smbolo correspondiente y el de uno interno la suma de los pesos de sus dos hijos. Los pesos los notaremos x1,,x2n-1. Puede probarse que: Si al asignar nmeros a los nodos comenzando por el uno y recorriendo el rbol por niveles (asignamos, de izquierda a derecha en cada nivel y de las hojas (abajo) a la raz (arriba) los pesos de los nodos quedan ordenados en un orden no decreciente El rbol obtenido es un rbol binario correspondiente a un cdigo de Huffman para dichos smbolos con las probabilidades de cada nodo hoja igual a su peso dividido por la suma de los pesos. La propiedad anterior recibe el nombre de sibling property o node number invariant.

Para la construccin del rbol adaptativamente, veamos a continuacin qu propiedades caracterizan a un rbol binario para que sea el correspondiente a un cdigo de Huffman.

Consideremos un rbol binario correspondiente a un alfabeto de tamao n en el que los smbolos del alfabeto son las hojas. Entonces, el nmero de nodos del rbol es 2n-1 (prubalo por induccin).

A cada nodo del rbol binario le vamos a asignar dos campos: Nmero del nodo y peso del nodo. El nmero de nodo es un nmero nico asignado a cada nodo del rbol entre 1 y 2n-1. Los nmeros los notaremos y1,...,y2n-1. El peso de un nodo hoja es simplemente el nmero de veces que aparece el smbolo correspondiente y el de uno interno la suma de los pesos de sus dos hijos. Los pesos los notaremos x1,...,x2n-1.

Puede probarse que: Si al asignar nmeros a los nodos comenzando por el uno y recorriendo el rbol por niveles (asignamos, de izquierda a derecha en cada nivel y de las hojas (abajo) a la raz (arriba) los pesos de los nodos quedan ordenados en un orden no decreciente

El rbol obtenido es un rbol binario correspondiente a un cdigo de Huffman para dichos smbolos con las probabilidades de cada nodo hoja igual a su peso dividido por la suma de los pesos. La propiedad anterior recibe el nombre de sibling property o node number invariant.

La propiedad anterior recibe el nombre de sibling property o En el ejemplo de la derecha: node number invariant. Entre parntesis los pesos de cada nodo. Dentro de los cuadrados El nmero asignado a cada Nodo. Por tanto, este rbol es el correspondiente al cdigo de Huffman para estos smbolos con las probabilidades que se obtienen a partir del nmero de veces que ha aparecido cada smbolo dividido por el nmero de smbolo ledos.

En el cdigo Huffman adaptativo ni el transmisor ni el receptor conocen al principio las probabilidades de los smbolos. Por eso: 1. Codificador y decodificar comienzan con un rbol con un nodo nico que corresponde a todos los smbolos no transmitidos (NYT) y que tiene peso cero. 2. Mientras progresa la transmisin se aadirn nodos al rbol correspondientes a smbolos que aparezcan por primera vez, se modificarn los pesos (tanto si el smbolo es nuevo como si es ya existente) y se actualizar el rbol para que siga cumpliendo the sibling property (siga siendo de Huffman).

El algoritmo de Huffman adaptativo consta de los siguientes Elementos: 1. Inicializacin (la decodificador).misma para el codificador y 2 Algoritmo de codificacin. 3. Algoritmo de decodificacin. 4. Proceso de actualizacin del rbol para que mantenga the sibling property.

Antes de describir estas partes comentaremos brevemente sobre la codificacin de los smbolos:

Codificacin de un smbolo que aparece por primera Vez: Salvo que sea el primero de todos lo smbolos de la secuencia, la codificacin de un smbolo que aparece por primera vez consta de la codificacin que proporciona el rbol del nodo NYT seguido de un cdigo fijo para el smbolo que deben conocer codificador y decodificador En el caso en que sea el primer smbolo que aparece en la secuencia no necesitamos transmitir el cdigo de NYT. Si el smbolo ya ha aparecido Utilizamos la codificacin que proporciona el rbol que vamos construyendo.

Algoritmo de codificacin para el cdigo Huffman adaptativo 1. Si encontramos un smbolo nuevo (ver nota) entonces generar el cdigo del nodo NYT seguido del cdigo fijo (ver nota) del smbolo. Aadir el nuevo smbolo al Arbol. 2. Si el smbolo ya est presente, generar su cdigo usando el rbol. 3. Actualizar el rbol para que siga conservando the sibling property.

Nota: Recordemos que para el primer smbolo no hace falta transmitir el cdigo de NYT. El cdigo fijo es conocido al principio por codificador y decodificador.

Algoritmo de decodificacin para el cdigo Huffman adaptativo 1. Decodificar el smbolo usando el rbol actual. 2. Si encontramos el nodo NYT, usar el cdigo fijo para decodificar el smbolo que viene a continuacin. Aadir el nuevo smbolo al rbol. 3. Actualizar el rbol para que siga conservando the sibling property.

Nota: recordar, de nuevo, que cdigo de NYT

Actualizacin del rbol para el cdigo Huffman adaptativo 1. Sea y la hoja (smbolo) con peso x. 2. Si y es la raz, aumentar x en 1 y salir 3. Intercambiar y con el nodo con el nmero mayor que tenga el mismo peso que l (salvo que sea su padre) 4. Aumentar x en 1 5. Sea y el padre que tiene su peso x (el que sea, no el definido en 4) ir al paso 2 del algoritmo

You might also like