SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
Compresión de Datos:
Huffman y Código Aritmético
Programación 3: Estructura de Archivos
Facultad de Ingeniería
Universidad de Cuenca
Realizado por:
Jorge Encalada, Jhon Flores, Edisson Reinozo
Autoría de Implementación:
José Alberto Benítez Andrades, Juan Antonio Valbuena López -
Universidad de León
Prof. F. Javier Gil Chica. - Universidad de Alicante
Contenido
- Codificación Huffman
- Implementación
- Codificación
- Descompresión
- Codificación Aritmética
- Algoritmo de codificación
- Algoritmo de decodificación
- Conclusiones
- Referencias
- Anexos
Huffman
Compresión de Huffman
Codificación Huffman
Representar un conjunto de símbolos, usando el menor
número de bits posibles.
Mapea cada símbolo de un alfabeto con un código de
longitud óptima. Para comprimir cada símbolo de la cadena.
Para conseguir una asignación óptima, los símbolos se
representan con códigos cuya longitud es inversamente
proporcional a la probabilidad del símbolo.
Frecuencia de letras (Inglés)
https://en.wikipedia.org/wiki/Letter_frequency
Se utiliza un método específico para elegir la representación de
cada símbolo, que da lugar a un código prefijo un símbolo en
particular nunca es prefijo de la cadena de bits de un símbolo
distinto).
Se puede realizar el proceso de manera lineal si las
probabilidades de los símbolos de entrada están ordenados.
Implementación
El algoritmo de Huffman consiste en la construcción de un
árbol.
La idea original de Huffman consiste en construir este arbol
desde las hojas hacia la raíz, en lugar
Estructura nodo
Las hojas están representadas por el tipo struct nodo
Cuenta : Número de veces que aparece cada
símbolo,
Vector Hojas[256], Hojas[j] .cuenta es el
número de apariciones del carácter j
bit (0, 1) Determinar el código
karacter contiene el valor del carácter j
codigo cadena, secuencia de 0’s y 1’s.
nbits número de bits que codifica el carácter
Estructura Hojas, Telar
1. Recorremos Tejar y localizamos los 2 elementos que menos se repiten
2. Creamos un nuevo Nodo, izq y der apuntan a estos nodos. (izq al
menor) nodo menor recibe bit = 0, la cuenta del nuevo nodo es la suma
de las cuentas de los nodos hijos.
3. Un puntero de Telar se hace NULL, y el otro apunta al nuevo nodo.
NSIMB - - ;
4. Repetimos recursivamente hasta que quede un solo puntero en Telar,
Este puntero apuntará a la raíz del árbol.
Codificación
Una vez construido el árbol, el proceso de compresión es
sencillo, y consta esencialmente de dos pasos:
● Escritura de la cabecera
● Compresión
Cabecera:
Número de apariciones de cada carácter. y numero de
carácter.
En el proceso de descompresión, esta información es
necesaria para poder abrir el archivo
Para cada carácter j de la cadena. Se recorre la lista y según se
encuentre un 0 o un 1 se establece 0 o 1 en el bit buffer. Cada
vez que se llena (nbit = 8) se escribe en el archivo destino
Descompresión
Una vez leída la cabecera, es posible reconstruir el árbol.
Se procede leyendo la corriente de bits del archivo origen.
Originalmente el puntero apunta a la raíz del árbol y se mueve
siguiendo los punteros de izq o der hasta alcanzar una hoja.
(node->izq== null || node->der == null).
Esta hoja se identifica mediante el campo karacter, este
proceso se realiza nuevamente, tantas como indica NBYTES
Pruebas - huffman vs gzip
Codificación
Aritmética
Codificación Aritmética
● La codificación aritmética es una técnica o método estadístico, que da a conocer
a priori las probabilidades de símbolo/caracter.
● Esta codificación no se trata de obtener un código sencillo para cada tipo de
símbolo. Este produce un código para un mensaje completo.
● Permite representar símbolos con un número de bits fraccionario.
Codificación Aritmética
Simbolo Frecuencia Probabilidad
A 2 2 / 4 = 0.50
C 1 1 / 4 = 0.25
S 1 1 / 4 = 0.25
Cadena de Ejemplo: CASA Longitud Cadena: 4
Codificación Aritmética
Simbolo Probabilidad Rango
A 0.50 [ 0.0 , 0.50 )
C 0.25 [ 0.50 , 0.75 )
S 0.25 [ 0.75 , 1.00 )
Cadena de Ejemplo: CASA Longitud Cadena: 4
Suma de las probabilidades siempre debe ser 1.00
Codificación Aritmética
Ahora se obtendrán los límites inferiores y superiores
INFERIOR = AI + ( AS - AI ) * NI
SUPERIOR = AI + ( AS - AI ) * NS
AI: Antiguo Inferior AS: Antiguo Superior
NI: Nuevo Inferior NS: Nuevo Superior
Codificación Aritmética
INFERIOR = AI + ( AS - AI ) * NI SUPERIOR = AI + ( AS - AI ) * NS
C Inf = 0.0 + ( 1.0 - 0.0 ) * 0.5 = 0.50 Viejo = [ 0.0 , 1.0 )
Sup = 0.0 + ( 1.0 - 0.0 ) * 0.75 = 0.75 Nuevo = [ 0.50 , 0.75 )
A Inf = 0.5 + ( 0.75 - 0.5 ) * 0.0 = 0.50 Viejo = [ 0.5 , 0.75 )
Sup = 0.5 + ( 0.75 - 0.5 ) * 0.50 = 0.625 Nuevo = [ 0.0 , 0.5 )
Codificación Aritmética
S Inf = 0.5 + ( 0.625 - 0.5 ) * 0.75 = 0.59375 Viejo = [ 0.50 , 0.625 )
Sup = 0.5 + ( 0.625 - 0.5 ) * 1.0 = 0.62205 Nuevo = [ 0.75 , 1.0 )
A Inf = 0.59375 + ( 0.62205 - 0.59375 ) * 0.0 = 0.59375
Sup = 0.59375 + ( 0.62205 - 0.59375 ) * 0.50 = 0,609375
Viejo = [ 0.59375 , 0.62205 )
Nuevo = [ 0.0 , 0.5 )
INFERIOR = AI + ( AS - AI ) * NI SUPERIOR = AI + ( AS - AI ) * NSINFERIOR = AI + ( AS - AI ) * NI SUPERIOR = AI + ( AS - AI ) * NS
Codificación Aritmética
Ahora usando el subintervalo Final:
[ 0.59375 , 0.609375 )
Al final se convierten estos números punto flotante en binario, para obtener el
valor binario que se encuentra entre los dos:
0.59375 = 0.10011 0.609375 = 0.1001101111
Se tomará en cuenta el valor: 0.10011
Decodificación Aritmética
Requisitos para la decodificación:
● El número del intervalo final en punto flotante(obtenido al codificar)
● Los niveles de codificación asociados
● La tabla de probabilidad
● Los intervalos
● Alfabeto de caracteres
Decodificación Aritmética
Primero identificamos el intervalo al pertenece el número flotante:
N=0.10011 -> 0.59375
Pertenece al intervalo
[ 0.50 , 0.75 ) C
Simbolo Probabilidad Rango
A 0.25 [ 0.0 , 0.50 )
C 0.50 [ 0.50 , 0.75 )
S 0.25 [ 0.75 , 1.00 )
Decodificación Aritmética
Después se debe obtener un nuevo número flotante con la siguiente
fórmula:
NUEVO NUMERO=(NUMERO- L)/K
[L, H) -> intervalo al que pertenece el número flotante
k -> probabilidad o longitud del intervalo
Decodificación Aritmética
N=0.10011 -> 0.59375
Pertenece al intervalo
[ 0.50 , 0.75 ) C
NUEVO=(0.59375 - 0.5)/0.25= 0.375
[ 0.00 , 0.50 ) A
NUEVO=(0.375- 0.0)/0.5= 0.75
[ 0.75 , 1.00 ) S
NUEVO=(0.75- 0.75)/0.25= 0.0
[ 0.00 , 0.50 ) A
NUEVO=(0.0- 0.0)/0.5= 0.0
C-A-S-A
Conclusiones
Podemos utilizar el algoritmo de huffman para representar un conjunto de símbolos con la menor cantidad de bits
posibles y además nos permite mapear cada símbolo de un alfabeto con un código de longitud óptima.
La codificación aritmética es ideal para pocos caracteres ya que al momento de decodificar se debe recorrer
tantas veces como el número de caracteres que tiene el archivo original y en cada recorrido hay que comparar la
lista de probabilidades y de intervalos con los datos que se van calculando en al algoritmo de decodificación, lo
cual hace que se demore demasiado.
Referencias
[1]"Codificación Aritmética". [Online]. Available:
http://arantxa.ii.uam.es/~jms/tdatos/2006-2007/p2/Guion_2_Codificacion_Aritmetica.pdf.
[2]"Compresión de mensajes: Huffman y Codificación Aritmética", Jose Alberto Benítez Andrades, 2014. [Online]. Available:
http://www.jabenitez.com/portfolio/compresion-de-mensajes-huffman-y-codificacion-aritmetica/
[3]"JPG y la Codificación Aritmética", Grupo Universitario de Informática | Foro, 2015. [Online]. Available:
http://foro.gui.uva.es/t/jpeg-y-la-codificacion-aritmetica/585.
[4]"Codificación aritmética", Es.wikipedia.org, 2016. [Online]. Available:
https://es.wikipedia.org/wiki/Codificaci%C3%B3n_aritm%C3%A9tica.
[5]"Introducción a la compresión de archivos", Archive.cnx.org. [Online]. Available:
http://archive.cnx.org/contents/6e755212-cda0-4db9-9d6b-88b776fb57e7@1.html.
[6]"Profesor F. Javier Gil Chica. Libros y otros trabajos", Dfists.ua.es. [Online]. Available: http://dfists.ua.es/~gil/libros.html.
Anexos
Repositorio Github (JAVA y C): https://github.com/edzzn/Algoritmos_Compresion
Generador de arboles binarios: http://huffman.ooz.ie
Programa para Usar Codificacion Aritmetica a JPG: http://jpegclub.org/jpegtran/
Huffman en C: http://dfists.ua.es/~gil/huffman.c

Más contenido relacionado

La actualidad más candente

Codificación Convolucional, Decodificador de Viterbi y Turbo Código
Codificación Convolucional, Decodificador de Viterbi y Turbo CódigoCodificación Convolucional, Decodificador de Viterbi y Turbo Código
Codificación Convolucional, Decodificador de Viterbi y Turbo CódigoOscar Javier Jimenez Revelo
 
21 conmutacion circuitos
21 conmutacion circuitos21 conmutacion circuitos
21 conmutacion circuitosRolando Aviza
 
6 Codificación de fuente.ppsx
6 Codificación de fuente.ppsx6 Codificación de fuente.ppsx
6 Codificación de fuente.ppsxJoseBiafore1
 
Program for hamming code using c
Program for hamming code using cProgram for hamming code using c
Program for hamming code using csnsanth
 
Sumadores,codificadores, decodificadores,multiplexores y demultiplexores
Sumadores,codificadores, decodificadores,multiplexores y demultiplexoresSumadores,codificadores, decodificadores,multiplexores y demultiplexores
Sumadores,codificadores, decodificadores,multiplexores y demultiplexoresJose Tomas Rodriguez Henriquez
 
Utp pds_s_lab4_procesamiento de señales con mat_lab i
 Utp pds_s_lab4_procesamiento de señales con mat_lab i Utp pds_s_lab4_procesamiento de señales con mat_lab i
Utp pds_s_lab4_procesamiento de señales con mat_lab ijcbenitezp
 
Capacidad de un canal
Capacidad de un canalCapacidad de un canal
Capacidad de un canalarquitectura5
 
Lecture 9 codificación de línea y psd
Lecture 9 codificación de línea y psdLecture 9 codificación de línea y psd
Lecture 9 codificación de línea y psdnica2009
 

La actualidad más candente (20)

Fuentes de informacion y entropia
Fuentes de informacion y entropiaFuentes de informacion y entropia
Fuentes de informacion y entropia
 
Codificacion BCH
Codificacion BCHCodificacion BCH
Codificacion BCH
 
TRABAJO-TEMA-01.docx
TRABAJO-TEMA-01.docxTRABAJO-TEMA-01.docx
TRABAJO-TEMA-01.docx
 
Codificación Convolucional, Decodificador de Viterbi y Turbo Código
Codificación Convolucional, Decodificador de Viterbi y Turbo CódigoCodificación Convolucional, Decodificador de Viterbi y Turbo Código
Codificación Convolucional, Decodificador de Viterbi y Turbo Código
 
Pcm
PcmPcm
Pcm
 
codificacion de linea
codificacion de lineacodificacion de linea
codificacion de linea
 
21 conmutacion circuitos
21 conmutacion circuitos21 conmutacion circuitos
21 conmutacion circuitos
 
Codificacion HUFFMAN en matlab
Codificacion HUFFMAN en matlabCodificacion HUFFMAN en matlab
Codificacion HUFFMAN en matlab
 
CodificacióN De Canal
CodificacióN De CanalCodificacióN De Canal
CodificacióN De Canal
 
6 Codificación de fuente.ppsx
6 Codificación de fuente.ppsx6 Codificación de fuente.ppsx
6 Codificación de fuente.ppsx
 
Program for hamming code using c
Program for hamming code using cProgram for hamming code using c
Program for hamming code using c
 
Sumadores,codificadores, decodificadores,multiplexores y demultiplexores
Sumadores,codificadores, decodificadores,multiplexores y demultiplexoresSumadores,codificadores, decodificadores,multiplexores y demultiplexores
Sumadores,codificadores, decodificadores,multiplexores y demultiplexores
 
Utp pds_s_lab4_procesamiento de señales con mat_lab i
 Utp pds_s_lab4_procesamiento de señales con mat_lab i Utp pds_s_lab4_procesamiento de señales con mat_lab i
Utp pds_s_lab4_procesamiento de señales con mat_lab i
 
Tecnicas codificacion digital
Tecnicas codificacion digitalTecnicas codificacion digital
Tecnicas codificacion digital
 
Codigos digitales
Codigos digitalesCodigos digitales
Codigos digitales
 
Modulacion ask
Modulacion askModulacion ask
Modulacion ask
 
Adders
AddersAdders
Adders
 
Código Huffman
Código HuffmanCódigo Huffman
Código Huffman
 
Capacidad de un canal
Capacidad de un canalCapacidad de un canal
Capacidad de un canal
 
Lecture 9 codificación de línea y psd
Lecture 9 codificación de línea y psdLecture 9 codificación de línea y psd
Lecture 9 codificación de línea y psd
 

Similar a Algoritmos de compresion

RepresentacióN Interna De La InformacióN (Ppt)
RepresentacióN Interna De La InformacióN (Ppt)RepresentacióN Interna De La InformacióN (Ppt)
RepresentacióN Interna De La InformacióN (Ppt)Somos Mas Que Pro
 
Diapositivas tecno
Diapositivas tecnoDiapositivas tecno
Diapositivas tecnodacumo
 
6 sistemas numeración
6 sistemas numeración6 sistemas numeración
6 sistemas numeraciónJorge Perez
 
Sistemas numericos y conversiones
Sistemas numericos y conversionesSistemas numericos y conversiones
Sistemas numericos y conversionesAngelX6
 
Trabajo de circuito combinacionales
Trabajo de circuito combinacionalesTrabajo de circuito combinacionales
Trabajo de circuito combinacionalesjennyx19
 
Informatica 2060 -_unidad_iv_-_sistemas_numericos
Informatica 2060 -_unidad_iv_-_sistemas_numericosInformatica 2060 -_unidad_iv_-_sistemas_numericos
Informatica 2060 -_unidad_iv_-_sistemas_numericosfulanito09
 
Sistemas de numeracion teoia
Sistemas de numeracion teoiaSistemas de numeracion teoia
Sistemas de numeracion teoiaFREDY ZAPATA
 
Suma de imagenes
Suma de imagenesSuma de imagenes
Suma de imagenesanar26
 
Documento tecnico de computacion
Documento tecnico de computacionDocumento tecnico de computacion
Documento tecnico de computacionFelipe Delgado
 
Sistemas numericos
Sistemas numericosSistemas numericos
Sistemas numericosOmar Sanchez
 
Resumen analisis numerico
Resumen analisis numericoResumen analisis numerico
Resumen analisis numericoLuis Caballero
 
Sistemas Numéricos
Sistemas NuméricosSistemas Numéricos
Sistemas NuméricosRamon
 
Sistema numérico Laboratorio 4
Sistema numérico Laboratorio 4Sistema numérico Laboratorio 4
Sistema numérico Laboratorio 4MilagrosAizprua
 
Tema 7 proyecto_4_abre
Tema 7 proyecto_4_abreTema 7 proyecto_4_abre
Tema 7 proyecto_4_abremarcial abre
 

Similar a Algoritmos de compresion (20)

RepresentacióN Interna De La InformacióN (Ppt)
RepresentacióN Interna De La InformacióN (Ppt)RepresentacióN Interna De La InformacióN (Ppt)
RepresentacióN Interna De La InformacióN (Ppt)
 
Asignacion #3
Asignacion  #3Asignacion  #3
Asignacion #3
 
Diapositivas tecno
Diapositivas tecnoDiapositivas tecno
Diapositivas tecno
 
Simulación - Unidad 2 numeros pseudoaleatorios
Simulación - Unidad 2 numeros pseudoaleatoriosSimulación - Unidad 2 numeros pseudoaleatorios
Simulación - Unidad 2 numeros pseudoaleatorios
 
6 sistemas numeración
6 sistemas numeración6 sistemas numeración
6 sistemas numeración
 
Sistemas numericos y conversiones
Sistemas numericos y conversionesSistemas numericos y conversiones
Sistemas numericos y conversiones
 
Trabajo de circuito combinacionales
Trabajo de circuito combinacionalesTrabajo de circuito combinacionales
Trabajo de circuito combinacionales
 
Informatica 2060 -_unidad_iv_-_sistemas_numericos
Informatica 2060 -_unidad_iv_-_sistemas_numericosInformatica 2060 -_unidad_iv_-_sistemas_numericos
Informatica 2060 -_unidad_iv_-_sistemas_numericos
 
SlE ADSI
SlE ADSISlE ADSI
SlE ADSI
 
Sistemas de numeracion teoia
Sistemas de numeracion teoiaSistemas de numeracion teoia
Sistemas de numeracion teoia
 
Suma de imagenes
Suma de imagenesSuma de imagenes
Suma de imagenes
 
Sistema Claudio
Sistema ClaudioSistema Claudio
Sistema Claudio
 
Documento tecnico de computacion
Documento tecnico de computacionDocumento tecnico de computacion
Documento tecnico de computacion
 
Sistemas numericos
Sistemas numericosSistemas numericos
Sistemas numericos
 
Resumen analisis numerico
Resumen analisis numericoResumen analisis numerico
Resumen analisis numerico
 
Folleto de todo
Folleto de todoFolleto de todo
Folleto de todo
 
Sistemas Numéricos
Sistemas NuméricosSistemas Numéricos
Sistemas Numéricos
 
Sistema numérico Laboratorio 4
Sistema numérico Laboratorio 4Sistema numérico Laboratorio 4
Sistema numérico Laboratorio 4
 
Sistemas numéricos
Sistemas numéricosSistemas numéricos
Sistemas numéricos
 
Tema 7 proyecto_4_abre
Tema 7 proyecto_4_abreTema 7 proyecto_4_abre
Tema 7 proyecto_4_abre
 

Último

04-circuitos-comparadores de amplificadores operacionales.pptx
04-circuitos-comparadores de amplificadores operacionales.pptx04-circuitos-comparadores de amplificadores operacionales.pptx
04-circuitos-comparadores de amplificadores operacionales.pptxHenryApaza12
 
MONOGRAFIA- EDAFOLOGIA - EL SUELO(1).docx
MONOGRAFIA- EDAFOLOGIA - EL SUELO(1).docxMONOGRAFIA- EDAFOLOGIA - EL SUELO(1).docx
MONOGRAFIA- EDAFOLOGIA - EL SUELO(1).docxValentinaRavelo5
 
SEMICONDUCTORES lafhnoealifsncknisz.pptx
SEMICONDUCTORES lafhnoealifsncknisz.pptxSEMICONDUCTORES lafhnoealifsncknisz.pptx
SEMICONDUCTORES lafhnoealifsncknisz.pptxOSCARADRIANMEDINADUR
 
movimiento circular univormemente variado
movimiento circular univormemente variadomovimiento circular univormemente variado
movimiento circular univormemente variadoEsthefaniaAuquilla1
 
Introduccion-a-los-tipos-de-cemento (1).pdf
Introduccion-a-los-tipos-de-cemento (1).pdfIntroduccion-a-los-tipos-de-cemento (1).pdf
Introduccion-a-los-tipos-de-cemento (1).pdfjhorbycoralsanchez
 
Análisis de Varianza- Anova y pruebas de estadística
Análisis de Varianza- Anova y pruebas de estadísticaAnálisis de Varianza- Anova y pruebas de estadística
Análisis de Varianza- Anova y pruebas de estadísticaJoellyAlejandraRodrg
 
Pueden_los_sistemas_de_informacion_ayudar_a_evitar_una_crisis_de_salud_public...
Pueden_los_sistemas_de_informacion_ayudar_a_evitar_una_crisis_de_salud_public...Pueden_los_sistemas_de_informacion_ayudar_a_evitar_una_crisis_de_salud_public...
Pueden_los_sistemas_de_informacion_ayudar_a_evitar_una_crisis_de_salud_public...jfmolina199
 
INFORME DE LA DE PROBLEMÁTICA AMBIENTAL 2 UNIDAD FINAL. PDF.pdf
INFORME DE LA DE PROBLEMÁTICA AMBIENTAL 2 UNIDAD FINAL. PDF.pdfINFORME DE LA DE PROBLEMÁTICA AMBIENTAL 2 UNIDAD FINAL. PDF.pdf
INFORME DE LA DE PROBLEMÁTICA AMBIENTAL 2 UNIDAD FINAL. PDF.pdfsolidalilaalvaradoro
 
METASISTEMA-EXPOSICIONfgertertertretr.ppt
METASISTEMA-EXPOSICIONfgertertertretr.pptMETASISTEMA-EXPOSICIONfgertertertretr.ppt
METASISTEMA-EXPOSICIONfgertertertretr.pptSANTOS400018
 
5. MATERIAL COMPLEMENTARIO - PPT de la Sesión 02.pptx
5. MATERIAL COMPLEMENTARIO - PPT  de la Sesión 02.pptx5. MATERIAL COMPLEMENTARIO - PPT  de la Sesión 02.pptx
5. MATERIAL COMPLEMENTARIO - PPT de la Sesión 02.pptxJOSLUISCALLATAENRIQU
 
TEMA 02 VISCOSIDAD DE MECÁNICA DE FLUIDOS .pdf
TEMA 02 VISCOSIDAD DE MECÁNICA DE FLUIDOS .pdfTEMA 02 VISCOSIDAD DE MECÁNICA DE FLUIDOS .pdf
TEMA 02 VISCOSIDAD DE MECÁNICA DE FLUIDOS .pdfJhonCongoraQuispe
 
EXPOSICION UNIDAD 3 MANTENIMIENTOO .pptx
EXPOSICION UNIDAD 3 MANTENIMIENTOO .pptxEXPOSICION UNIDAD 3 MANTENIMIENTOO .pptx
EXPOSICION UNIDAD 3 MANTENIMIENTOO .pptxKeylaArlethTorresOrt
 
Sales binarias y oxisales química inorganica
Sales binarias y oxisales química inorganicaSales binarias y oxisales química inorganica
Sales binarias y oxisales química inorganicakiaranoemi
 
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticasEJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticasEfrain Yungan
 
Unid 3 Extraccion 10-10-23 operaciones unitarias
Unid 3 Extraccion 10-10-23 operaciones unitariasUnid 3 Extraccion 10-10-23 operaciones unitarias
Unid 3 Extraccion 10-10-23 operaciones unitariasPatriciaRaimondi
 
TR-514 (3) - DOS COLUMNAS PASCUA 2024 3.4 8.4.24.pdf
TR-514 (3) - DOS COLUMNAS PASCUA 2024 3.4 8.4.24.pdfTR-514 (3) - DOS COLUMNAS PASCUA 2024 3.4 8.4.24.pdf
TR-514 (3) - DOS COLUMNAS PASCUA 2024 3.4 8.4.24.pdfFRANCISCOJUSTOSIERRA
 
Transporte y Manipulación de Explosivos - SUCAMEC
Transporte y Manipulación de Explosivos - SUCAMECTransporte y Manipulación de Explosivos - SUCAMEC
Transporte y Manipulación de Explosivos - SUCAMECamador030809
 
Capacitación Anexo 6 D.s. 023 seguridad y salud ocupacional
Capacitación Anexo 6 D.s. 023 seguridad y salud ocupacionalCapacitación Anexo 6 D.s. 023 seguridad y salud ocupacional
Capacitación Anexo 6 D.s. 023 seguridad y salud ocupacionalamador030809
 
R. Contraloria 432-2023-CG obras x AD.pdf
R. Contraloria 432-2023-CG obras x AD.pdfR. Contraloria 432-2023-CG obras x AD.pdf
R. Contraloria 432-2023-CG obras x AD.pdfrudy cabezas
 
PLANTILLA DE PP PREVENCIONISTA DE RIESGOS LABORALES (1).pptx.pdf
PLANTILLA DE PP PREVENCIONISTA DE RIESGOS LABORALES (1).pptx.pdfPLANTILLA DE PP PREVENCIONISTA DE RIESGOS LABORALES (1).pptx.pdf
PLANTILLA DE PP PREVENCIONISTA DE RIESGOS LABORALES (1).pptx.pdfmcamposa87
 

Último (20)

04-circuitos-comparadores de amplificadores operacionales.pptx
04-circuitos-comparadores de amplificadores operacionales.pptx04-circuitos-comparadores de amplificadores operacionales.pptx
04-circuitos-comparadores de amplificadores operacionales.pptx
 
MONOGRAFIA- EDAFOLOGIA - EL SUELO(1).docx
MONOGRAFIA- EDAFOLOGIA - EL SUELO(1).docxMONOGRAFIA- EDAFOLOGIA - EL SUELO(1).docx
MONOGRAFIA- EDAFOLOGIA - EL SUELO(1).docx
 
SEMICONDUCTORES lafhnoealifsncknisz.pptx
SEMICONDUCTORES lafhnoealifsncknisz.pptxSEMICONDUCTORES lafhnoealifsncknisz.pptx
SEMICONDUCTORES lafhnoealifsncknisz.pptx
 
movimiento circular univormemente variado
movimiento circular univormemente variadomovimiento circular univormemente variado
movimiento circular univormemente variado
 
Introduccion-a-los-tipos-de-cemento (1).pdf
Introduccion-a-los-tipos-de-cemento (1).pdfIntroduccion-a-los-tipos-de-cemento (1).pdf
Introduccion-a-los-tipos-de-cemento (1).pdf
 
Análisis de Varianza- Anova y pruebas de estadística
Análisis de Varianza- Anova y pruebas de estadísticaAnálisis de Varianza- Anova y pruebas de estadística
Análisis de Varianza- Anova y pruebas de estadística
 
Pueden_los_sistemas_de_informacion_ayudar_a_evitar_una_crisis_de_salud_public...
Pueden_los_sistemas_de_informacion_ayudar_a_evitar_una_crisis_de_salud_public...Pueden_los_sistemas_de_informacion_ayudar_a_evitar_una_crisis_de_salud_public...
Pueden_los_sistemas_de_informacion_ayudar_a_evitar_una_crisis_de_salud_public...
 
INFORME DE LA DE PROBLEMÁTICA AMBIENTAL 2 UNIDAD FINAL. PDF.pdf
INFORME DE LA DE PROBLEMÁTICA AMBIENTAL 2 UNIDAD FINAL. PDF.pdfINFORME DE LA DE PROBLEMÁTICA AMBIENTAL 2 UNIDAD FINAL. PDF.pdf
INFORME DE LA DE PROBLEMÁTICA AMBIENTAL 2 UNIDAD FINAL. PDF.pdf
 
METASISTEMA-EXPOSICIONfgertertertretr.ppt
METASISTEMA-EXPOSICIONfgertertertretr.pptMETASISTEMA-EXPOSICIONfgertertertretr.ppt
METASISTEMA-EXPOSICIONfgertertertretr.ppt
 
5. MATERIAL COMPLEMENTARIO - PPT de la Sesión 02.pptx
5. MATERIAL COMPLEMENTARIO - PPT  de la Sesión 02.pptx5. MATERIAL COMPLEMENTARIO - PPT  de la Sesión 02.pptx
5. MATERIAL COMPLEMENTARIO - PPT de la Sesión 02.pptx
 
TEMA 02 VISCOSIDAD DE MECÁNICA DE FLUIDOS .pdf
TEMA 02 VISCOSIDAD DE MECÁNICA DE FLUIDOS .pdfTEMA 02 VISCOSIDAD DE MECÁNICA DE FLUIDOS .pdf
TEMA 02 VISCOSIDAD DE MECÁNICA DE FLUIDOS .pdf
 
EXPOSICION UNIDAD 3 MANTENIMIENTOO .pptx
EXPOSICION UNIDAD 3 MANTENIMIENTOO .pptxEXPOSICION UNIDAD 3 MANTENIMIENTOO .pptx
EXPOSICION UNIDAD 3 MANTENIMIENTOO .pptx
 
Sales binarias y oxisales química inorganica
Sales binarias y oxisales química inorganicaSales binarias y oxisales química inorganica
Sales binarias y oxisales química inorganica
 
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticasEJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
 
Unid 3 Extraccion 10-10-23 operaciones unitarias
Unid 3 Extraccion 10-10-23 operaciones unitariasUnid 3 Extraccion 10-10-23 operaciones unitarias
Unid 3 Extraccion 10-10-23 operaciones unitarias
 
TR-514 (3) - DOS COLUMNAS PASCUA 2024 3.4 8.4.24.pdf
TR-514 (3) - DOS COLUMNAS PASCUA 2024 3.4 8.4.24.pdfTR-514 (3) - DOS COLUMNAS PASCUA 2024 3.4 8.4.24.pdf
TR-514 (3) - DOS COLUMNAS PASCUA 2024 3.4 8.4.24.pdf
 
Transporte y Manipulación de Explosivos - SUCAMEC
Transporte y Manipulación de Explosivos - SUCAMECTransporte y Manipulación de Explosivos - SUCAMEC
Transporte y Manipulación de Explosivos - SUCAMEC
 
Capacitación Anexo 6 D.s. 023 seguridad y salud ocupacional
Capacitación Anexo 6 D.s. 023 seguridad y salud ocupacionalCapacitación Anexo 6 D.s. 023 seguridad y salud ocupacional
Capacitación Anexo 6 D.s. 023 seguridad y salud ocupacional
 
R. Contraloria 432-2023-CG obras x AD.pdf
R. Contraloria 432-2023-CG obras x AD.pdfR. Contraloria 432-2023-CG obras x AD.pdf
R. Contraloria 432-2023-CG obras x AD.pdf
 
PLANTILLA DE PP PREVENCIONISTA DE RIESGOS LABORALES (1).pptx.pdf
PLANTILLA DE PP PREVENCIONISTA DE RIESGOS LABORALES (1).pptx.pdfPLANTILLA DE PP PREVENCIONISTA DE RIESGOS LABORALES (1).pptx.pdf
PLANTILLA DE PP PREVENCIONISTA DE RIESGOS LABORALES (1).pptx.pdf
 

Algoritmos de compresion

  • 1. Compresión de Datos: Huffman y Código Aritmético Programación 3: Estructura de Archivos Facultad de Ingeniería Universidad de Cuenca Realizado por: Jorge Encalada, Jhon Flores, Edisson Reinozo Autoría de Implementación: José Alberto Benítez Andrades, Juan Antonio Valbuena López - Universidad de León Prof. F. Javier Gil Chica. - Universidad de Alicante
  • 2. Contenido - Codificación Huffman - Implementación - Codificación - Descompresión - Codificación Aritmética - Algoritmo de codificación - Algoritmo de decodificación - Conclusiones - Referencias - Anexos
  • 4. Codificación Huffman Representar un conjunto de símbolos, usando el menor número de bits posibles. Mapea cada símbolo de un alfabeto con un código de longitud óptima. Para comprimir cada símbolo de la cadena. Para conseguir una asignación óptima, los símbolos se representan con códigos cuya longitud es inversamente proporcional a la probabilidad del símbolo.
  • 5. Frecuencia de letras (Inglés) https://en.wikipedia.org/wiki/Letter_frequency
  • 6. Se utiliza un método específico para elegir la representación de cada símbolo, que da lugar a un código prefijo un símbolo en particular nunca es prefijo de la cadena de bits de un símbolo distinto). Se puede realizar el proceso de manera lineal si las probabilidades de los símbolos de entrada están ordenados.
  • 7. Implementación El algoritmo de Huffman consiste en la construcción de un árbol. La idea original de Huffman consiste en construir este arbol desde las hojas hacia la raíz, en lugar
  • 8. Estructura nodo Las hojas están representadas por el tipo struct nodo
  • 9. Cuenta : Número de veces que aparece cada símbolo, Vector Hojas[256], Hojas[j] .cuenta es el número de apariciones del carácter j bit (0, 1) Determinar el código karacter contiene el valor del carácter j codigo cadena, secuencia de 0’s y 1’s. nbits número de bits que codifica el carácter
  • 10. Estructura Hojas, Telar 1. Recorremos Tejar y localizamos los 2 elementos que menos se repiten 2. Creamos un nuevo Nodo, izq y der apuntan a estos nodos. (izq al menor) nodo menor recibe bit = 0, la cuenta del nuevo nodo es la suma de las cuentas de los nodos hijos. 3. Un puntero de Telar se hace NULL, y el otro apunta al nuevo nodo. NSIMB - - ; 4. Repetimos recursivamente hasta que quede un solo puntero en Telar, Este puntero apuntará a la raíz del árbol.
  • 11.
  • 12. Codificación Una vez construido el árbol, el proceso de compresión es sencillo, y consta esencialmente de dos pasos: ● Escritura de la cabecera ● Compresión Cabecera: Número de apariciones de cada carácter. y numero de carácter.
  • 13. En el proceso de descompresión, esta información es necesaria para poder abrir el archivo Para cada carácter j de la cadena. Se recorre la lista y según se encuentre un 0 o un 1 se establece 0 o 1 en el bit buffer. Cada vez que se llena (nbit = 8) se escribe en el archivo destino
  • 14. Descompresión Una vez leída la cabecera, es posible reconstruir el árbol. Se procede leyendo la corriente de bits del archivo origen. Originalmente el puntero apunta a la raíz del árbol y se mueve siguiendo los punteros de izq o der hasta alcanzar una hoja. (node->izq== null || node->der == null). Esta hoja se identifica mediante el campo karacter, este proceso se realiza nuevamente, tantas como indica NBYTES
  • 15. Pruebas - huffman vs gzip
  • 17. Codificación Aritmética ● La codificación aritmética es una técnica o método estadístico, que da a conocer a priori las probabilidades de símbolo/caracter. ● Esta codificación no se trata de obtener un código sencillo para cada tipo de símbolo. Este produce un código para un mensaje completo. ● Permite representar símbolos con un número de bits fraccionario.
  • 18. Codificación Aritmética Simbolo Frecuencia Probabilidad A 2 2 / 4 = 0.50 C 1 1 / 4 = 0.25 S 1 1 / 4 = 0.25 Cadena de Ejemplo: CASA Longitud Cadena: 4
  • 19. Codificación Aritmética Simbolo Probabilidad Rango A 0.50 [ 0.0 , 0.50 ) C 0.25 [ 0.50 , 0.75 ) S 0.25 [ 0.75 , 1.00 ) Cadena de Ejemplo: CASA Longitud Cadena: 4 Suma de las probabilidades siempre debe ser 1.00
  • 20. Codificación Aritmética Ahora se obtendrán los límites inferiores y superiores INFERIOR = AI + ( AS - AI ) * NI SUPERIOR = AI + ( AS - AI ) * NS AI: Antiguo Inferior AS: Antiguo Superior NI: Nuevo Inferior NS: Nuevo Superior
  • 21. Codificación Aritmética INFERIOR = AI + ( AS - AI ) * NI SUPERIOR = AI + ( AS - AI ) * NS C Inf = 0.0 + ( 1.0 - 0.0 ) * 0.5 = 0.50 Viejo = [ 0.0 , 1.0 ) Sup = 0.0 + ( 1.0 - 0.0 ) * 0.75 = 0.75 Nuevo = [ 0.50 , 0.75 ) A Inf = 0.5 + ( 0.75 - 0.5 ) * 0.0 = 0.50 Viejo = [ 0.5 , 0.75 ) Sup = 0.5 + ( 0.75 - 0.5 ) * 0.50 = 0.625 Nuevo = [ 0.0 , 0.5 )
  • 22. Codificación Aritmética S Inf = 0.5 + ( 0.625 - 0.5 ) * 0.75 = 0.59375 Viejo = [ 0.50 , 0.625 ) Sup = 0.5 + ( 0.625 - 0.5 ) * 1.0 = 0.62205 Nuevo = [ 0.75 , 1.0 ) A Inf = 0.59375 + ( 0.62205 - 0.59375 ) * 0.0 = 0.59375 Sup = 0.59375 + ( 0.62205 - 0.59375 ) * 0.50 = 0,609375 Viejo = [ 0.59375 , 0.62205 ) Nuevo = [ 0.0 , 0.5 ) INFERIOR = AI + ( AS - AI ) * NI SUPERIOR = AI + ( AS - AI ) * NSINFERIOR = AI + ( AS - AI ) * NI SUPERIOR = AI + ( AS - AI ) * NS
  • 23. Codificación Aritmética Ahora usando el subintervalo Final: [ 0.59375 , 0.609375 ) Al final se convierten estos números punto flotante en binario, para obtener el valor binario que se encuentra entre los dos: 0.59375 = 0.10011 0.609375 = 0.1001101111 Se tomará en cuenta el valor: 0.10011
  • 24. Decodificación Aritmética Requisitos para la decodificación: ● El número del intervalo final en punto flotante(obtenido al codificar) ● Los niveles de codificación asociados ● La tabla de probabilidad ● Los intervalos ● Alfabeto de caracteres
  • 25. Decodificación Aritmética Primero identificamos el intervalo al pertenece el número flotante: N=0.10011 -> 0.59375 Pertenece al intervalo [ 0.50 , 0.75 ) C Simbolo Probabilidad Rango A 0.25 [ 0.0 , 0.50 ) C 0.50 [ 0.50 , 0.75 ) S 0.25 [ 0.75 , 1.00 )
  • 26. Decodificación Aritmética Después se debe obtener un nuevo número flotante con la siguiente fórmula: NUEVO NUMERO=(NUMERO- L)/K [L, H) -> intervalo al que pertenece el número flotante k -> probabilidad o longitud del intervalo
  • 27. Decodificación Aritmética N=0.10011 -> 0.59375 Pertenece al intervalo [ 0.50 , 0.75 ) C NUEVO=(0.59375 - 0.5)/0.25= 0.375 [ 0.00 , 0.50 ) A NUEVO=(0.375- 0.0)/0.5= 0.75 [ 0.75 , 1.00 ) S NUEVO=(0.75- 0.75)/0.25= 0.0 [ 0.00 , 0.50 ) A NUEVO=(0.0- 0.0)/0.5= 0.0 C-A-S-A
  • 28. Conclusiones Podemos utilizar el algoritmo de huffman para representar un conjunto de símbolos con la menor cantidad de bits posibles y además nos permite mapear cada símbolo de un alfabeto con un código de longitud óptima. La codificación aritmética es ideal para pocos caracteres ya que al momento de decodificar se debe recorrer tantas veces como el número de caracteres que tiene el archivo original y en cada recorrido hay que comparar la lista de probabilidades y de intervalos con los datos que se van calculando en al algoritmo de decodificación, lo cual hace que se demore demasiado.
  • 29. Referencias [1]"Codificación Aritmética". [Online]. Available: http://arantxa.ii.uam.es/~jms/tdatos/2006-2007/p2/Guion_2_Codificacion_Aritmetica.pdf. [2]"Compresión de mensajes: Huffman y Codificación Aritmética", Jose Alberto Benítez Andrades, 2014. [Online]. Available: http://www.jabenitez.com/portfolio/compresion-de-mensajes-huffman-y-codificacion-aritmetica/ [3]"JPG y la Codificación Aritmética", Grupo Universitario de Informática | Foro, 2015. [Online]. Available: http://foro.gui.uva.es/t/jpeg-y-la-codificacion-aritmetica/585. [4]"Codificación aritmética", Es.wikipedia.org, 2016. [Online]. Available: https://es.wikipedia.org/wiki/Codificaci%C3%B3n_aritm%C3%A9tica. [5]"Introducción a la compresión de archivos", Archive.cnx.org. [Online]. Available: http://archive.cnx.org/contents/6e755212-cda0-4db9-9d6b-88b776fb57e7@1.html. [6]"Profesor F. Javier Gil Chica. Libros y otros trabajos", Dfists.ua.es. [Online]. Available: http://dfists.ua.es/~gil/libros.html.
  • 30. Anexos Repositorio Github (JAVA y C): https://github.com/edzzn/Algoritmos_Compresion Generador de arboles binarios: http://huffman.ooz.ie Programa para Usar Codificacion Aritmetica a JPG: http://jpegclub.org/jpegtran/ Huffman en C: http://dfists.ua.es/~gil/huffman.c

Notas del editor

  1. codigo