Вы находитесь на странице: 1из 4

FUNDAMENTOS DE TRANSMISIN DE DATOS

Ingeniera Telemtica

1.- Descripcin El algoritmo de Huffman se basa en la asignacin de cdigos de longitud variable a cada uno de los smbolos de una fuente de mensajes. Se trata de un codificador ptimo, por lo que puede ser utilizado para la compresin de ficheros. Otra aplicacin de este codificador es la de encriptacin de datos. La capacidad de compresin de la informacin se debe a la asignacin de cdigos de menor longitud a los smbolos que aparecen con ms probabilidad en la fuente, consiguiendo con ello la reduccin de la longitud media de las palabras cdigo asociadas a los mensajes. Para realizar la codificacin, se ordenan los smbolos en orden decreciente de sus probabilidades. Los dos smbolos menos probables se agrupan en un pseudosmbolo cuya probabilidad es la suma de las probabilidades de los smbolos fusionados (la palabra cdigo asignada a estos smbolos difiere solamente en la ltima posicin). Los restantes smbolos-pseudosmbolos son nuevamente ordenados en funcin de sus probabilidades, combinando los dos menos probables y sumando sus probabilidades en un nuevo pseudosmbolo. El proceso se repite hasta que todo el rbol generado se reduce a un smbolo con probabilidad igual a la unidad. Para recuperar el fichero original es necesario conocer el cdigo asignado a cada carcter, as como su longitud en bits. Si esta informacin se omite, y el receptor del fichero la conoce, podr recuperar la informacin original. De este modo es posible utilizar el algoritmo para encriptar ficheros. 2.- Realizacin del algoritmo El procedimiento a seguir en la realizacin del algoritmo de compresin sera el siguiente:
x Contar cuantas veces aparece cada carcter en la secuencia a comprimir y

crear una lista enlazada con la informacin de caracteres y frecuencias.

x Ordenar la lista de menor a mayor en funcin de la frecuencia. x Convertir cada elemento de la lista en un rbol. x Fusionar todos estos rboles en uno nico. Para hacerlo se sigue el siguiente

proceso: o Mientras la lista de rboles contenga ms de un elemento: Con los dos primeros rboles formar un nuevo rbol, cada uno de los rboles originales en una rama. Sumar las frecuencias de cada rama en el nuevo elemento rbol. Insertar el nuevo rbol en el lugar adecuado de la lista segn la suma de frecuencias obtenida. x Para asignar el nuevo cdigo binario de cada carcter slo hay que seguir el camino adecuado a travs del rbol. Si se toma una rama cero, se aade un cero al cdigo, si se toma una rama uno, se aade un uno. x Se recodifica el fichero segn los nuevos cdigos.

FUNDAMENTOS DE TRANSMISIN DE DATOS

Ingeniera Telemtica

3.- Ejemplo de realizacin Como ejemplo de implementacin se va a codificar la transmisin de las calificaciones de un grupo de alumnos de acuerdo al siguiente criterio: D = No presentado S = Suspenso A = Aprobado N = Notable B = Sobresaliente M = Matricula de honor La transmisin a realizar ser la siguiente: NNBMDSMDANMBMBBMDNSMN 1.- Se cuenta el nmero de veces que aparece cada carcter D(3),S(2),A(1),N(5),B(4),M(6) 2.- Se ordena por orden creciente de probabilidades A(1) - S(2) - D(3) - B(4) - N(5) - M(6) 3.- Se agrupan los dos primeros nodos (rboles) en un nuevo rbol, sumando sus frecuencias y colocndolos en el lugar correspondiente (3) - D(3) - B(4) - N(5) - M(6) A(1) - S(2) 4.- Se repite el proceso de forma similar hasta que el nodo raz contiene el nmero total de caracteres B(4) N(5) (6) - N(15) - A(20) D(3) - (3) A(1) - S(2)

FUNDAMENTOS DE TRANSMISIN DE DATOS

Ingeniera Telemtica

El resultado final de la construccin del rbol sera: (21) (12) (9) (9) M(6) (6) M(6) (6) N(5) B(4) M(6) N(5) B(4) D(3) (3) M(6) N(5) B(4) D(3) S(2) A(1)

5.- Para la codificacin se asignan ceros a las ramas de la izquierda y unos a las ramas de la derecha en la estructura anterior, quedando: (21)

0 0 0 0 1 1
M(6) (6) N(5) B(4) M(6) N(5) B(4) D(3) (3)

(12) (9)

(9) M(6) (6)

0
M(6) N(5) B(4) D(3) S(2) A(1)

Reagrupando los cdigos, las palabras cdigo asignadas a cada smbolo son: A 0111 S 0110 D 010 B 11 N 10 M 00

6.- La traduccin de la secuencia a enviar ser: NNBMDSMDANMBMBBMDNSMN 101011000100110000100111010011001111000100101100001

FUNDAMENTOS DE TRANSMISIN DE DATOS

Ingeniera Telemtica

7.- Combinando los bits en octetos (bytes), la secuencia comprimida queda de la siguiente forma 10101100 0xAC 01001100 0x8C 00100111 0x27 01001100 0x4C 11110001 0xF1 00101100 0x2C 00100000 0x20

Se transmiten en total 8 bytes de los 21 iniciales. Calculando la entropa de la fuente y la longitud media del cdigo se obtiene: Entropa: 2.3983 bits/smbolo Longitud media: 2.4286 bits/smbolo 4.- Realizacin prctica Se pretende codificar la informacin transmitida por una fuente que genera nmeros hexadecimales (0 a F). Se deber realizar un programa MATLAB que realice las siguientes operaciones: 1.- Entrada de datos a comprimir 2.- Cdigo asignado a cada dgito de entrada 3.- Longitud media del cdigo generado 4.- Entropa de la fuente 5.- Secuencia binaria a transmitir 6.- Conversin de la secuencia binaria en octetos y comparacin con secuencia original Tngase en cuenta que una eleccin adecuada de las estructuras de datos simplifica la tarea de programacin del algoritmo. Se recomienda, por tanto, disear la estructura antes de comenzar el desarrollo del programa. Un mtodo alternativo de programacin, aunque ms complejo, consiste en aprovechar la naturaleza recursiva del algoritmo de Huffman.

Вам также может понравиться