SlideShare a Scribd company logo
1 of 16
ALGORITMO DE COMPRESIÓN DE
HUFFMAN
Integrantes:
Paul Arévalo
Tania Landivar
David Valladarez
Universidad de Cuenca
Índice:
1. Introducción
2. Especificación del Algoritmo
3. Obtención del código prefijo
4. Proceso del código Huffman
5. Ejemplo
6. Bibliografía
INTRODUCCIÓN
Los caracteres o símbolos se pueden representar en codificación en binario, lo
que nos permite realizar una comprensión de datos que facilita la transmisión
de los mismos y ahorra espacio de memoria. Es fundamental en la comprensión
de ficheros de video y audio.
Busca asociar las cadenas de código binario de los caracteres mas frecuentes a
cadenas de código binario de menor longitud, permitiendo ahorrar memoria.
ESPECIFICACIÓN DEL ALGORITMO
El algoritmo de Huffman, utiliza un código prefijo que es un conjunto de cadenas
binarias asociadas a un conjunto de símbolos.
Algo importante de recalcar es que una cadena binaria no debe ser parte del
comienzo de otra cadena binaria.
x 1100
x 01
y 10
* 101 Error
OBTENCIÓN DEL CÓDIGO PREFIJO
Un código prefijo se obtiene a partir de un árbol dirigido con raíz.
PASOS:
1. Se construye un árbol binario dirigido con raíz.
2. Se etiqueta el arco de salida izquierdo de cada vértice con 0, y el arco de
salida derecho con 1.
3. Los vértices finales o que tienen grado de salida 0, se les etiqueta con los
caracteres o símbolos.
0 10
0 1
0 01 1
x * )
Grado de salida 0
0
0
1
1
(
y+
4. Recorro el árbol desde la raíz para obtener el código prefijo de cada carácter o símbolo.
x 01
( 001
y 0001
+ 0000
* 10
) 11
PROCESO DEL CÓDIGO HUFFMAN
1. Se obtiene las frecuencias de cada carácter o símbolo.
2. Se ordenan las frecuencias de menor a mayor en una lista.
3. Se localizan los dos valores más pequeños de la lista y estos forman un árbol donde la etiqueta de
la raíz será la suma de las frecuencias.
4. Se inserta en orden ascendente en la lista la suma de estos valores y se elimina los mismos.
(Repetir el paso 3 y 4 hasta solo quede un árbol).
5. Una vez obtenido el árbol, se procede a obtener los códigos prefijos.
EJEMPLO
Frecuencia de los caracteres:
Caracteres y j , * -
Frecuencia 5 10 25 3 20
Ordenar las Frecuencias:
3 5 10 20 25
Localizan los valores más pequeños de la lista:
3 5 10 20 25
Forma el árbol:
8
53
Reordeno la lista:
3 5 10 20 25
8 10 20 25
Localizó los valores más pequeños:
8 10 20 25
Forma el árbol:
8
53
18
1
0
Reordeno la lista:
8 10 20 25
18 20 25
Localizó los valores más pequeños:
18 20 25
Forma el árbol:
Reordeno la lista:
18 20 25
25 38
8
53
18
1
0
38
2
0
Llegamos a un solo árbol:
8
53
18
1
0
38
2
0
63
25
,
* y
j
-
0
0
0
0
1
1
1
1
Obtenemos el código prefijo:
8
53
18
1
0
38
2
0
63
25
,
* y
j
-
0
0
0
0
1
1
1
1
Carácter Código Prefijo
, 0
- 11
j 101
y 1001
* 1000
Caracteres y j , * -
Frecuencia 5 10 25 3 20
PARA MÁS INFORMACIÓN
• Código del método Huffman:
• https://github.com/DavidValladarez/algoritmoHuffman
BIBLIOGRAFÍA
1. Jordan Lluch, C. (Dirección). (2013). Teoría de Grafos en la vida real. Árboles. Codificación de
Huffman [Video]. Link:
https://www.youtube.com/watch?v=W6WZT12ruGQ&feature=youtu.be
2. Salomon, D. (2014). Compresión de datos.

More Related Content

What's hot

S8-EDD-4.2 Aplicaciones de árboles en informática
S8-EDD-4.2 Aplicaciones de árboles en informáticaS8-EDD-4.2 Aplicaciones de árboles en informática
S8-EDD-4.2 Aplicaciones de árboles en informáticaLuis Fernando Aguas Bucheli
 
Arboles binarios
Arboles binariosArboles binarios
Arboles binariosfavi_hola
 
What is SQL? | Edureka
What is SQL? | EdurekaWhat is SQL? | Edureka
What is SQL? | EdurekaEdureka!
 
Procesamiento de archivos
Procesamiento de archivosProcesamiento de archivos
Procesamiento de archivosTensor
 
Programacion estructura de arboles en c
Programacion estructura de arboles en cProgramacion estructura de arboles en c
Programacion estructura de arboles en cJessica Suarez
 
Análise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenaçãoAnálise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenaçãoGustavo Carvalho
 
Recursividad
RecursividadRecursividad
Recursividadbetzy
 
ESTRUCTURA DE DATOS Pilas y colas.pdf
ESTRUCTURA DE DATOS Pilas y colas.pdfESTRUCTURA DE DATOS Pilas y colas.pdf
ESTRUCTURA DE DATOS Pilas y colas.pdfKEVINDAVIDTOPONSALAZ
 
ALP Unidad 3: Tipos de datos estructurados y punteros
ALP Unidad 3: Tipos de datos estructurados y punterosALP Unidad 3: Tipos de datos estructurados y punteros
ALP Unidad 3: Tipos de datos estructurados y punterosFranklin Parrales Bravo
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..NANO-06
 
DDL And DML
DDL And DMLDDL And DML
DDL And DMLpnp @in
 
Data structure tries
Data structure triesData structure tries
Data structure triesMd. Naim khan
 
Nuevas tecnologías y aplicaciones de los sistemas de bases de datos
Nuevas tecnologías y aplicaciones de los sistemas de bases de datosNuevas tecnologías y aplicaciones de los sistemas de bases de datos
Nuevas tecnologías y aplicaciones de los sistemas de bases de datosHugo Alberto Rivera Diaz
 
Elementos de programación
Elementos de programaciónElementos de programación
Elementos de programaciónprisscampos
 

What's hot (20)

S8-EDD-4.2 Aplicaciones de árboles en informática
S8-EDD-4.2 Aplicaciones de árboles en informáticaS8-EDD-4.2 Aplicaciones de árboles en informática
S8-EDD-4.2 Aplicaciones de árboles en informática
 
Tipos de datos Java
Tipos de datos JavaTipos de datos Java
Tipos de datos Java
 
Arboles binarios
Arboles binariosArboles binarios
Arboles binarios
 
Mysql
MysqlMysql
Mysql
 
What is SQL? | Edureka
What is SQL? | EdurekaWhat is SQL? | Edureka
What is SQL? | Edureka
 
Procesamiento de archivos
Procesamiento de archivosProcesamiento de archivos
Procesamiento de archivos
 
Programacion estructura de arboles en c
Programacion estructura de arboles en cProgramacion estructura de arboles en c
Programacion estructura de arboles en c
 
Análise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenaçãoAnálise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenação
 
Recursividad
RecursividadRecursividad
Recursividad
 
Normal forms
Normal formsNormal forms
Normal forms
 
B tree
B treeB tree
B tree
 
ESTRUCTURA DE DATOS Pilas y colas.pdf
ESTRUCTURA DE DATOS Pilas y colas.pdfESTRUCTURA DE DATOS Pilas y colas.pdf
ESTRUCTURA DE DATOS Pilas y colas.pdf
 
ALP Unidad 3: Tipos de datos estructurados y punteros
ALP Unidad 3: Tipos de datos estructurados y punterosALP Unidad 3: Tipos de datos estructurados y punteros
ALP Unidad 3: Tipos de datos estructurados y punteros
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..
 
DDL And DML
DDL And DMLDDL And DML
DDL And DML
 
PLSQL
PLSQLPLSQL
PLSQL
 
Data structure tries
Data structure triesData structure tries
Data structure tries
 
Nuevas tecnologías y aplicaciones de los sistemas de bases de datos
Nuevas tecnologías y aplicaciones de los sistemas de bases de datosNuevas tecnologías y aplicaciones de los sistemas de bases de datos
Nuevas tecnologías y aplicaciones de los sistemas de bases de datos
 
Elementos de programación
Elementos de programaciónElementos de programación
Elementos de programación
 
Ejercicio 2
Ejercicio  2Ejercicio  2
Ejercicio 2
 

Similar to Algoritmo de compresión de huffman

Similar to Algoritmo de compresión de huffman (12)

CODIGO HUFFMAN-1.pptx
CODIGO HUFFMAN-1.pptxCODIGO HUFFMAN-1.pptx
CODIGO HUFFMAN-1.pptx
 
Grafos 9.2_2016
Grafos 9.2_2016Grafos 9.2_2016
Grafos 9.2_2016
 
Grafos 9.2 2016
Grafos 9.2 2016Grafos 9.2 2016
Grafos 9.2 2016
 
Grafos 9.2 2016
Grafos 9.2 2016Grafos 9.2 2016
Grafos 9.2 2016
 
Algoritmos compresión Cubi-Romero-Toledo
Algoritmos compresión Cubi-Romero-ToledoAlgoritmos compresión Cubi-Romero-Toledo
Algoritmos compresión Cubi-Romero-Toledo
 
Presentacion Foro eulises brazon Josue Baez
Presentacion Foro eulises brazon  Josue Baez Presentacion Foro eulises brazon  Josue Baez
Presentacion Foro eulises brazon Josue Baez
 
Huffman y-lzw
Huffman y-lzwHuffman y-lzw
Huffman y-lzw
 
Codificación de huffman
Codificación de huffmanCodificación de huffman
Codificación de huffman
 
Mac2wepkey (2011)
Mac2wepkey (2011)Mac2wepkey (2011)
Mac2wepkey (2011)
 
Algoritmos de compresión
Algoritmos de compresiónAlgoritmos de compresión
Algoritmos de compresión
 
Capa de enlace.
Capa de enlace.Capa de enlace.
Capa de enlace.
 
Lecture 3 codificación fuente
Lecture 3 codificación fuenteLecture 3 codificación fuente
Lecture 3 codificación fuente
 

Algoritmo de compresión de huffman

  • 1. ALGORITMO DE COMPRESIÓN DE HUFFMAN Integrantes: Paul Arévalo Tania Landivar David Valladarez Universidad de Cuenca
  • 2. Índice: 1. Introducción 2. Especificación del Algoritmo 3. Obtención del código prefijo 4. Proceso del código Huffman 5. Ejemplo 6. Bibliografía
  • 3. INTRODUCCIÓN Los caracteres o símbolos se pueden representar en codificación en binario, lo que nos permite realizar una comprensión de datos que facilita la transmisión de los mismos y ahorra espacio de memoria. Es fundamental en la comprensión de ficheros de video y audio. Busca asociar las cadenas de código binario de los caracteres mas frecuentes a cadenas de código binario de menor longitud, permitiendo ahorrar memoria.
  • 4. ESPECIFICACIÓN DEL ALGORITMO El algoritmo de Huffman, utiliza un código prefijo que es un conjunto de cadenas binarias asociadas a un conjunto de símbolos. Algo importante de recalcar es que una cadena binaria no debe ser parte del comienzo de otra cadena binaria. x 1100 x 01 y 10 * 101 Error
  • 5. OBTENCIÓN DEL CÓDIGO PREFIJO Un código prefijo se obtiene a partir de un árbol dirigido con raíz.
  • 6. PASOS: 1. Se construye un árbol binario dirigido con raíz. 2. Se etiqueta el arco de salida izquierdo de cada vértice con 0, y el arco de salida derecho con 1. 3. Los vértices finales o que tienen grado de salida 0, se les etiqueta con los caracteres o símbolos. 0 10
  • 7. 0 1 0 01 1 x * ) Grado de salida 0 0 0 1 1 ( y+ 4. Recorro el árbol desde la raíz para obtener el código prefijo de cada carácter o símbolo. x 01 ( 001 y 0001 + 0000 * 10 ) 11
  • 8. PROCESO DEL CÓDIGO HUFFMAN 1. Se obtiene las frecuencias de cada carácter o símbolo. 2. Se ordenan las frecuencias de menor a mayor en una lista. 3. Se localizan los dos valores más pequeños de la lista y estos forman un árbol donde la etiqueta de la raíz será la suma de las frecuencias. 4. Se inserta en orden ascendente en la lista la suma de estos valores y se elimina los mismos. (Repetir el paso 3 y 4 hasta solo quede un árbol). 5. Una vez obtenido el árbol, se procede a obtener los códigos prefijos.
  • 9. EJEMPLO Frecuencia de los caracteres: Caracteres y j , * - Frecuencia 5 10 25 3 20 Ordenar las Frecuencias: 3 5 10 20 25 Localizan los valores más pequeños de la lista: 3 5 10 20 25
  • 10. Forma el árbol: 8 53 Reordeno la lista: 3 5 10 20 25 8 10 20 25 Localizó los valores más pequeños: 8 10 20 25
  • 11. Forma el árbol: 8 53 18 1 0 Reordeno la lista: 8 10 20 25 18 20 25 Localizó los valores más pequeños: 18 20 25
  • 12. Forma el árbol: Reordeno la lista: 18 20 25 25 38 8 53 18 1 0 38 2 0
  • 13. Llegamos a un solo árbol: 8 53 18 1 0 38 2 0 63 25 , * y j - 0 0 0 0 1 1 1 1
  • 14. Obtenemos el código prefijo: 8 53 18 1 0 38 2 0 63 25 , * y j - 0 0 0 0 1 1 1 1 Carácter Código Prefijo , 0 - 11 j 101 y 1001 * 1000 Caracteres y j , * - Frecuencia 5 10 25 3 20
  • 15. PARA MÁS INFORMACIÓN • Código del método Huffman: • https://github.com/DavidValladarez/algoritmoHuffman
  • 16. BIBLIOGRAFÍA 1. Jordan Lluch, C. (Dirección). (2013). Teoría de Grafos en la vida real. Árboles. Codificación de Huffman [Video]. Link: https://www.youtube.com/watch?v=W6WZT12ruGQ&feature=youtu.be 2. Salomon, D. (2014). Compresión de datos.