Top Banner
Universidad de Cuenca Programación III Estructura de Archivos Codificación de Huffman Integrantes: Jefferson Arias Daniel Gomez Jonnathan Peñaranda Gabriela Verdugo
36

Codificación de Huffman

Apr 15, 2017

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Codificación de Huffman

Universidad de Cuenca

Programación IIIEstructura de Archivos

Codificación de Huffman

Integrantes:● Jefferson Arias● Daniel Gomez● Jonnathan Peñaranda● Gabriela Verdugo

Page 2: Codificación de Huffman

Concepto

● La codificación Huffman es un algoritmo usado para compresión de datos.● El algoritmo de codificación/compresión Huffman se propuso en 1952 como

una forma sencilla y óptima de mapear cada símbolo de un alfabeto con un código (codeword) de longitud óptima.

● 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.

Page 3: Codificación de Huffman

Procedimiento de asignación

● El proceso de asignación de códigos se lleva a cabo mediante la construcción de un árbol binario:○ Recorrer el árbol en pre-orden hacia el nodo que contiene el carácter con

su frecuencia.○ Los nodos menos probables se unen sucesivamente para formar otro

nodo de mayor probabilidad, de forma que cada uno de los enlaces añade un bit al código de los símbolos que estamos juntando.

○ Este proceso termina cuando sólo se dispone de un nodo, de forma que éste representa la raíz del árbol.

Page 4: Codificación de Huffman

Ejemplo 1.

● Palabra a codificar : LAPTOP

1. Contar el número de peticiones de cada carácter es decir el número de repeticiones de cada uno de los caracteres

L A P T O P

Page 5: Codificación de Huffman

L A P T O P

1

Page 6: Codificación de Huffman

L A P T O P

1 1

Page 7: Codificación de Huffman

L A P T O P

1 1 1

Page 8: Codificación de Huffman

L A P T O P

1 1 1 1

Page 9: Codificación de Huffman

L A P T O P

1 1 1 1 1

Page 10: Codificación de Huffman

L A P T O P

1 1 1 1 1 2

Page 11: Codificación de Huffman

L A T O P

1 1 1 1 2

Page 12: Codificación de Huffman

● Se pone en una lista enlazada los caracteres y sus frecuencias. Y eliminamos los que se repiten (Se deja uno solo).

● El siguiente paso es crear un nuevo árbol binario pasando los dos primeros nodos como hojas del árbol.

L 1 A 1 T 1 O 1 P 2

Page 13: Codificación de Huffman

Null:2

L:1 A:1

El nodo raíz se guarda como null junto con la suma de las frecuencias de los nodos hijos.

Page 14: Codificación de Huffman

● La lista quedaría de esta manera:

● El siguiente paso es insertar nuestro árbol a la lista de nodos de forma ordenada; como la frecuencia de nuestro nodo raíz es dos, entonces se colocaría al final de la lista ya que en este caso no hay frecuencias más altas.

T 1 O 1 P 2

Page 15: Codificación de Huffman

T 1 O 1 P 2 Null 2

L:1 A:1

Page 16: Codificación de Huffman

● Repetimos el mismo paso volvemos a tomar los dos primero nodos de la lista y formamos el árbol con el nodo raíz que en la frecuencia es la suma de los hijos.

Null:2

T:1 O:1

Page 17: Codificación de Huffman

● Ahora insertamos el árbol de manera ordenada en la lista de nodos que teníamos definida anteriormente.

P 2 Null 2 Null 2

L:1 A:1 T:1 O:1

Page 18: Codificación de Huffman

● Volvemos a tomar los dos nodos siguientes y formamos el árbol.

Null:4

P:2 Null:2

L:1 A:1

Page 19: Codificación de Huffman

● Ahora insertamos el árbol de manera ordenada a nuestra lista.

Null 2 Null 4

T:1 O:1 P:2 Null:2

L:1 A:1

Page 20: Codificación de Huffman

● Volvemos a tomar los dos primeros nodos de esta lista.

Null:6

Null:2 Null:4

T:1 O:1 P:2 Null:2

L:1 A:1

Page 21: Codificación de Huffman

● Ahora es momento de poner los pesos de nuestro árbol.

Null:6

Null:3 Null:3

T:1 O:1 Null:2

L:1 A:1

P:2

0 1

0 1

0

1

1

0

Page 22: Codificación de Huffman

● Los valores de cada una de las letras son:

P : 10

T: 00

O: 01

A: 111

L: 110

Page 23: Codificación de Huffman

● Entonces la palabra entera es la unión de el valor de cada letra.

L A P T O P

110 111 10 00 01 10

CODIFICACIÓN DE HUFFMAN

Page 24: Codificación de Huffman

Ejemplo 2.

● Palabra a codificar : LAPTOP

● A cada una de las letras le ponemos las frecuencia con la que se repiten tomándolo del procedimiento anterior quedaría de la siguiente forma.

L A P T O P

Page 25: Codificación de Huffman

L A P T O P

1 1 1 1 1 2

Page 26: Codificación de Huffman

● Para formar el árbol tomamos los nodos de dos en dos con los menores pesos y vamos formando los árboles.

Null:2

L:1 A:1

Null:2

T:1 O:1

Page 27: Codificación de Huffman

Null:2

P:2

● Lo siguiente que se debe hacer es tomar los árboles de dos en dos para formar un solo árbol

Page 28: Codificación de Huffman

Null:2

L:1 A:1

Null:2

T:1 O:1

Null:4

Page 29: Codificación de Huffman

Null:2

L:1 A:1

Null:2

T:1 O:1

Null:4

Null:2

P:2

Null:6

Page 30: Codificación de Huffman

● Ahora debemos etiquetar cada una de las aristas.

Page 31: Codificación de Huffman

Null:2

L:1 A:1

Null:2

T:1 O:1

Null:4

Null:2

P:2

Null:60 1

10

0 00

1 1

Page 32: Codificación de Huffman

● Los valores de cada una de las letras son:

P : 10

T: 010

O: 011

A: 001

L: 000

Page 33: Codificación de Huffman

● Entonces la palabra entera es la unión de el valor de cada letra.

L A P T O P

000 001 10 010 10 10

CODIFICACIÓN DE HUFFMAN

Page 34: Codificación de Huffman

Factor de Comprensión.

● La compresión de datos es la reducción del volumen de datos tratables para representar una determinada información empleando una menor cantidad de espacio.

● El espacio que ocupa una información codificada (datos, señal digital, etc.) sin compresión es el cociente entre la frecuencia de muestreo y la resolución. Por tanto, cuantos más bits se empleen mayor será el tamaño del archivo.

Page 35: Codificación de Huffman

Conclusiones.

● La codificación de Huffman es útil para la codificación de las palabras y ponerlas en binario ya que el árbol que se forma para la codificación es binario.

● Los resultados de la codificación en algunos casos son diferentes dependiendo del recorrido que se use para el árbol pero existe coincidencia en algunas letras que es el mismo resultado en binario.