algoritmo de compresión de huffman
TRANSCRIPT
![Page 1: Algoritmo de compresión de huffman](https://reader036.vdocuments.mx/reader036/viewer/2022062523/5877a66f1a28ab826e8b62c5/html5/thumbnails/1.jpg)
ALGORITMO DE COMPRESIÓN DE HUFFMANIntegrantes:Paul Arévalo
Tania LandivarDavid Valladarez
Universidad de Cuenca
![Page 2: Algoritmo de compresión de huffman](https://reader036.vdocuments.mx/reader036/viewer/2022062523/5877a66f1a28ab826e8b62c5/html5/thumbnails/2.jpg)
Índice:1. Introducción2. Especificación del Algoritmo3. Obtención del código prefijo4. Proceso del código Huffman5. Ejemplo6. Bibliografía
![Page 3: Algoritmo de compresión de huffman](https://reader036.vdocuments.mx/reader036/viewer/2022062523/5877a66f1a28ab826e8b62c5/html5/thumbnails/3.jpg)
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.
![Page 4: Algoritmo de compresión de huffman](https://reader036.vdocuments.mx/reader036/viewer/2022062523/5877a66f1a28ab826e8b62c5/html5/thumbnails/4.jpg)
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 01y 10* 101 Error
![Page 5: Algoritmo de compresión de huffman](https://reader036.vdocuments.mx/reader036/viewer/2022062523/5877a66f1a28ab826e8b62c5/html5/thumbnails/5.jpg)
OBTENCIÓN DEL CÓDIGO PREFIJOUn código prefijo se obtiene a partir de un árbol dirigido con raíz.
![Page 6: Algoritmo de compresión de huffman](https://reader036.vdocuments.mx/reader036/viewer/2022062523/5877a66f1a28ab826e8b62c5/html5/thumbnails/6.jpg)
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
![Page 7: Algoritmo de compresión de huffman](https://reader036.vdocuments.mx/reader036/viewer/2022062523/5877a66f1a28ab826e8b62c5/html5/thumbnails/7.jpg)
0 10 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
( 001y 0001 + 0000* 10) 11
![Page 8: Algoritmo de compresión de huffman](https://reader036.vdocuments.mx/reader036/viewer/2022062523/5877a66f1a28ab826e8b62c5/html5/thumbnails/8.jpg)
PROCESO DEL CÓDIGO HUFFMAN1. 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.
![Page 9: Algoritmo de compresión de huffman](https://reader036.vdocuments.mx/reader036/viewer/2022062523/5877a66f1a28ab826e8b62c5/html5/thumbnails/9.jpg)
EJEMPLOFrecuencia 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
![Page 10: Algoritmo de compresión de huffman](https://reader036.vdocuments.mx/reader036/viewer/2022062523/5877a66f1a28ab826e8b62c5/html5/thumbnails/10.jpg)
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
![Page 11: Algoritmo de compresión de huffman](https://reader036.vdocuments.mx/reader036/viewer/2022062523/5877a66f1a28ab826e8b62c5/html5/thumbnails/11.jpg)
Forma el árbol:
8
53
18
10
Reordeno la lista:
8 10 20 25
18 20 25
Localizó los valores más pequeños:
18 20 25
![Page 12: Algoritmo de compresión de huffman](https://reader036.vdocuments.mx/reader036/viewer/2022062523/5877a66f1a28ab826e8b62c5/html5/thumbnails/12.jpg)
Forma el árbol:
Reordeno la lista:
18 20 25
25 38
8
53
18
10
38
20
![Page 13: Algoritmo de compresión de huffman](https://reader036.vdocuments.mx/reader036/viewer/2022062523/5877a66f1a28ab826e8b62c5/html5/thumbnails/13.jpg)
Llegamos a un solo árbol:
8
53
18
10
38
20
63
25,
* y
j
-
0
0
0
0
1
1
1
1
![Page 14: Algoritmo de compresión de huffman](https://reader036.vdocuments.mx/reader036/viewer/2022062523/5877a66f1a28ab826e8b62c5/html5/thumbnails/14.jpg)
Obtenemos el código prefijo:
8
53
18
10
38
20
63
25,
* y
j
-
0
0
0
0
1
1
1
1
Carácter Código Prefijo, 0- 11j 101y 1001* 1000
Caracteres
y j , * -
Frecuencia 5 10 25 3 20
![Page 15: Algoritmo de compresión de huffman](https://reader036.vdocuments.mx/reader036/viewer/2022062523/5877a66f1a28ab826e8b62c5/html5/thumbnails/15.jpg)
PARA MÁS INFORMACIÓN
• Código del método Huffman:• https://github.com/DavidValladarez/algoritmoHuffman
![Page 16: Algoritmo de compresión de huffman](https://reader036.vdocuments.mx/reader036/viewer/2022062523/5877a66f1a28ab826e8b62c5/html5/thumbnails/16.jpg)
BIBLIOGRAFÍA1. 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.