SlideShare una empresa de Scribd logo
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

Procesamiento digital de señales con matlab
Procesamiento digital de señales con matlabProcesamiento digital de señales con matlab
Procesamiento digital de señales con matlabPercy Julio Chambi Pacco
 
Geometría Computacional: Interseccción de segmentos
Geometría Computacional: Interseccción de segmentosGeometría Computacional: Interseccción de segmentos
Geometría Computacional: Interseccción de segmentosMiguel Sancho
 
Codigo de bloques lineales
Codigo de bloques linealesCodigo de bloques lineales
Codigo de bloques linealesComunicaciones2
 
⭐⭐⭐⭐⭐ SOLUCIÓN EXAMEN SISTEMAS DIGITALES 2, 1er Parcial (2021PAO2)
⭐⭐⭐⭐⭐ SOLUCIÓN EXAMEN SISTEMAS DIGITALES 2, 1er Parcial (2021PAO2)⭐⭐⭐⭐⭐ SOLUCIÓN EXAMEN SISTEMAS DIGITALES 2, 1er Parcial (2021PAO2)
⭐⭐⭐⭐⭐ SOLUCIÓN EXAMEN SISTEMAS DIGITALES 2, 1er Parcial (2021PAO2)Victor Asanza
 
Codigos Corrector de Errores
Codigos Corrector de ErroresCodigos Corrector de Errores
Codigos Corrector de ErroresWalter Toledo
 
Lecture 21 detección de códigos de redundancia cíclicos. probabilidad de erro...
Lecture 21 detección de códigos de redundancia cíclicos. probabilidad de erro...Lecture 21 detección de códigos de redundancia cíclicos. probabilidad de erro...
Lecture 21 detección de códigos de redundancia cíclicos. probabilidad de erro...nica2009
 
Códigos bch, Reed Solomon, convolucionales
Códigos bch, Reed Solomon, convolucionalesCódigos bch, Reed Solomon, convolucionales
Códigos bch, Reed Solomon, convolucionalesEduardoMedrano19
 
Lecture 18 channel capacity
Lecture 18 channel capacityLecture 18 channel capacity
Lecture 18 channel capacitynica2009
 
Codificacion unipolar, polar y bipolar
Codificacion unipolar, polar y bipolarCodificacion unipolar, polar y bipolar
Codificacion unipolar, polar y bipolarthejp
 
Códigos de errores - Telecomunicaciones III
Códigos de errores - Telecomunicaciones IIICódigos de errores - Telecomunicaciones III
Códigos de errores - Telecomunicaciones IIIAndy Juan Sarango Veliz
 
Investigación Códigos INF 164
Investigación Códigos INF 164Investigación Códigos INF 164
Investigación Códigos INF 164EdualSarmiento
 
CIRCUITOS DIGITALES CI Unid II Simplificacion de Funciones Logicas Boole y M...
CIRCUITOS DIGITALES CI Unid II  Simplificacion de Funciones Logicas Boole y M...CIRCUITOS DIGITALES CI Unid II  Simplificacion de Funciones Logicas Boole y M...
CIRCUITOS DIGITALES CI Unid II Simplificacion de Funciones Logicas Boole y M...AVINADAD MENDEZ
 
Modulacion Digital de Señales Analogicas
Modulacion Digital de Señales AnalogicasModulacion Digital de Señales Analogicas
Modulacion Digital de Señales AnalogicasCarlos Toth
 

La actualidad más candente (20)

Reed Solomon
Reed SolomonReed Solomon
Reed Solomon
 
Codigo manchester
Codigo manchesterCodigo manchester
Codigo manchester
 
Procesamiento digital de señales con matlab
Procesamiento digital de señales con matlabProcesamiento digital de señales con matlab
Procesamiento digital de señales con matlab
 
Codificación de Huffman
Codificación de HuffmanCodificación de Huffman
Codificación de Huffman
 
Código Huffman
Código HuffmanCódigo Huffman
Código Huffman
 
Geometría Computacional: Interseccción de segmentos
Geometría Computacional: Interseccción de segmentosGeometría Computacional: Interseccción de segmentos
Geometría Computacional: Interseccción de segmentos
 
Codigos De Huffman
Codigos De HuffmanCodigos De Huffman
Codigos De Huffman
 
Codigo de bloques lineales
Codigo de bloques linealesCodigo de bloques lineales
Codigo de bloques lineales
 
⭐⭐⭐⭐⭐ SOLUCIÓN EXAMEN SISTEMAS DIGITALES 2, 1er Parcial (2021PAO2)
⭐⭐⭐⭐⭐ SOLUCIÓN EXAMEN SISTEMAS DIGITALES 2, 1er Parcial (2021PAO2)⭐⭐⭐⭐⭐ SOLUCIÓN EXAMEN SISTEMAS DIGITALES 2, 1er Parcial (2021PAO2)
⭐⭐⭐⭐⭐ SOLUCIÓN EXAMEN SISTEMAS DIGITALES 2, 1er Parcial (2021PAO2)
 
CODIGO DE HUFFMAN
CODIGO DE HUFFMANCODIGO DE HUFFMAN
CODIGO DE HUFFMAN
 
Codigos Corrector de Errores
Codigos Corrector de ErroresCodigos Corrector de Errores
Codigos Corrector de Errores
 
Lecture 21 detección de códigos de redundancia cíclicos. probabilidad de erro...
Lecture 21 detección de códigos de redundancia cíclicos. probabilidad de erro...Lecture 21 detección de códigos de redundancia cíclicos. probabilidad de erro...
Lecture 21 detección de códigos de redundancia cíclicos. probabilidad de erro...
 
Códigos bch, Reed Solomon, convolucionales
Códigos bch, Reed Solomon, convolucionalesCódigos bch, Reed Solomon, convolucionales
Códigos bch, Reed Solomon, convolucionales
 
Lecture 18 channel capacity
Lecture 18 channel capacityLecture 18 channel capacity
Lecture 18 channel capacity
 
Codificacion unipolar, polar y bipolar
Codificacion unipolar, polar y bipolarCodificacion unipolar, polar y bipolar
Codificacion unipolar, polar y bipolar
 
Códigos de errores - Telecomunicaciones III
Códigos de errores - Telecomunicaciones IIICódigos de errores - Telecomunicaciones III
Códigos de errores - Telecomunicaciones III
 
Investigación Códigos INF 164
Investigación Códigos INF 164Investigación Códigos INF 164
Investigación Códigos INF 164
 
CIRCUITOS DIGITALES CI Unid II Simplificacion de Funciones Logicas Boole y M...
CIRCUITOS DIGITALES CI Unid II  Simplificacion de Funciones Logicas Boole y M...CIRCUITOS DIGITALES CI Unid II  Simplificacion de Funciones Logicas Boole y M...
CIRCUITOS DIGITALES CI Unid II Simplificacion de Funciones Logicas Boole y M...
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativo
 
Modulacion Digital de Señales Analogicas
Modulacion Digital de Señales AnalogicasModulacion Digital de Señales Analogicas
Modulacion Digital de Señales Analogicas
 

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

Efecto. Fotovoltaico y paneles.pdf
Efecto.     Fotovoltaico  y  paneles.pdfEfecto.     Fotovoltaico  y  paneles.pdf
Efecto. Fotovoltaico y paneles.pdfadrianmunozriveros96
 
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdfDavidHunucoAlbornoz
 
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuariaBOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuariamesiassalazarpresent
 
CONTROL DE MOTORES DE CORRIENTE ALTERNA PPT
CONTROL DE MOTORES DE CORRIENTE ALTERNA  PPTCONTROL DE MOTORES DE CORRIENTE ALTERNA  PPT
CONTROL DE MOTORES DE CORRIENTE ALTERNA PPTLuisLobatoingaruca
 
Mecanismo de cuatro barras articuladas!!
Mecanismo de cuatro barras articuladas!!Mecanismo de cuatro barras articuladas!!
Mecanismo de cuatro barras articuladas!!shotter2005
 
PresentaciónReto_Equipo6 Explicacion del reto de freno electromagnetico
PresentaciónReto_Equipo6 Explicacion del reto de freno electromagneticoPresentaciónReto_Equipo6 Explicacion del reto de freno electromagnetico
PresentaciónReto_Equipo6 Explicacion del reto de freno electromagneticoa00834109
 
matematicas en la ingenieria de la construccion
matematicas en la ingenieria de la construccionmatematicas en la ingenieria de la construccion
matematicas en la ingenieria de la construccionalberto891871
 
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptxtema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptxDianaSG6
 
Mecanismos de transferencia de un generador de vapor
Mecanismos de transferencia de un generador de vaporMecanismos de transferencia de un generador de vapor
Mecanismos de transferencia de un generador de vaporalema3825
 
El abecedario constituye el conjunto de grafías que son utilizadas para repre...
El abecedario constituye el conjunto de grafías que son utilizadas para repre...El abecedario constituye el conjunto de grafías que son utilizadas para repre...
El abecedario constituye el conjunto de grafías que son utilizadas para repre...MarjorieDeLeon12
 
SISTEMA ARTICULADO DE CUATRO BARRAS .pdf
SISTEMA ARTICULADO DE CUATRO BARRAS .pdfSISTEMA ARTICULADO DE CUATRO BARRAS .pdf
SISTEMA ARTICULADO DE CUATRO BARRAS .pdfIvanIsraelPiaColina
 
PETROLEO triptico para estudiantes de educacion
PETROLEO triptico para estudiantes de educacionPETROLEO triptico para estudiantes de educacion
PETROLEO triptico para estudiantes de educacionctrlc3
 
Flujograma de gestión de pedidos de usuarios.
Flujograma de gestión de pedidos de usuarios.Flujograma de gestión de pedidos de usuarios.
Flujograma de gestión de pedidos de usuarios.thatycameron2004
 
GUIA DE SEGURIDAD PARA MAQUINAS Y HERRAMIENTAS
GUIA DE SEGURIDAD PARA MAQUINAS Y HERRAMIENTASGUIA DE SEGURIDAD PARA MAQUINAS Y HERRAMIENTAS
GUIA DE SEGURIDAD PARA MAQUINAS Y HERRAMIENTASClaudiaRamirez765933
 
ACT MECANISMO DE 4 BARRAS ARTICULADAS.PDF
ACT MECANISMO DE 4 BARRAS ARTICULADAS.PDFACT MECANISMO DE 4 BARRAS ARTICULADAS.PDF
ACT MECANISMO DE 4 BARRAS ARTICULADAS.PDFDavidMorales257484
 
habilidad para el manejo de estación total.pdf
habilidad para el manejo de estación total.pdfhabilidad para el manejo de estación total.pdf
habilidad para el manejo de estación total.pdfJosemanuelMayradamia
 
DISEÑO DE LOSAS EN UNA DIRECCION (CONCRETO ARMADO II )
DISEÑO DE LOSAS EN UNA DIRECCION  (CONCRETO ARMADO II )DISEÑO DE LOSAS EN UNA DIRECCION  (CONCRETO ARMADO II )
DISEÑO DE LOSAS EN UNA DIRECCION (CONCRETO ARMADO II )FELIXGUMERCINDOFLORE
 
Diagrama de flujo "Resolución de problemas".pdf
Diagrama de flujo "Resolución de problemas".pdfDiagrama de flujo "Resolución de problemas".pdf
Diagrama de flujo "Resolución de problemas".pdfjoseabachesoto
 
Joseph juran aportaciones al control de la calidad
Joseph juran aportaciones al control de la calidadJoseph juran aportaciones al control de la calidad
Joseph juran aportaciones al control de la calidadKevinCabrera96
 

Último (20)

Efecto. Fotovoltaico y paneles.pdf
Efecto.     Fotovoltaico  y  paneles.pdfEfecto.     Fotovoltaico  y  paneles.pdf
Efecto. Fotovoltaico y paneles.pdf
 
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
 
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuariaBOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
 
CONTROL DE MOTORES DE CORRIENTE ALTERNA PPT
CONTROL DE MOTORES DE CORRIENTE ALTERNA  PPTCONTROL DE MOTORES DE CORRIENTE ALTERNA  PPT
CONTROL DE MOTORES DE CORRIENTE ALTERNA PPT
 
Mecanismo de cuatro barras articuladas!!
Mecanismo de cuatro barras articuladas!!Mecanismo de cuatro barras articuladas!!
Mecanismo de cuatro barras articuladas!!
 
PresentaciónReto_Equipo6 Explicacion del reto de freno electromagnetico
PresentaciónReto_Equipo6 Explicacion del reto de freno electromagneticoPresentaciónReto_Equipo6 Explicacion del reto de freno electromagnetico
PresentaciónReto_Equipo6 Explicacion del reto de freno electromagnetico
 
matematicas en la ingenieria de la construccion
matematicas en la ingenieria de la construccionmatematicas en la ingenieria de la construccion
matematicas en la ingenieria de la construccion
 
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptxtema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
 
Mecanismos de transferencia de un generador de vapor
Mecanismos de transferencia de un generador de vaporMecanismos de transferencia de un generador de vapor
Mecanismos de transferencia de un generador de vapor
 
DESVIACION
DESVIACION DESVIACION
DESVIACION
 
El abecedario constituye el conjunto de grafías que son utilizadas para repre...
El abecedario constituye el conjunto de grafías que son utilizadas para repre...El abecedario constituye el conjunto de grafías que son utilizadas para repre...
El abecedario constituye el conjunto de grafías que son utilizadas para repre...
 
SISTEMA ARTICULADO DE CUATRO BARRAS .pdf
SISTEMA ARTICULADO DE CUATRO BARRAS .pdfSISTEMA ARTICULADO DE CUATRO BARRAS .pdf
SISTEMA ARTICULADO DE CUATRO BARRAS .pdf
 
PETROLEO triptico para estudiantes de educacion
PETROLEO triptico para estudiantes de educacionPETROLEO triptico para estudiantes de educacion
PETROLEO triptico para estudiantes de educacion
 
Flujograma de gestión de pedidos de usuarios.
Flujograma de gestión de pedidos de usuarios.Flujograma de gestión de pedidos de usuarios.
Flujograma de gestión de pedidos de usuarios.
 
GUIA DE SEGURIDAD PARA MAQUINAS Y HERRAMIENTAS
GUIA DE SEGURIDAD PARA MAQUINAS Y HERRAMIENTASGUIA DE SEGURIDAD PARA MAQUINAS Y HERRAMIENTAS
GUIA DE SEGURIDAD PARA MAQUINAS Y HERRAMIENTAS
 
ACT MECANISMO DE 4 BARRAS ARTICULADAS.PDF
ACT MECANISMO DE 4 BARRAS ARTICULADAS.PDFACT MECANISMO DE 4 BARRAS ARTICULADAS.PDF
ACT MECANISMO DE 4 BARRAS ARTICULADAS.PDF
 
habilidad para el manejo de estación total.pdf
habilidad para el manejo de estación total.pdfhabilidad para el manejo de estación total.pdf
habilidad para el manejo de estación total.pdf
 
DISEÑO DE LOSAS EN UNA DIRECCION (CONCRETO ARMADO II )
DISEÑO DE LOSAS EN UNA DIRECCION  (CONCRETO ARMADO II )DISEÑO DE LOSAS EN UNA DIRECCION  (CONCRETO ARMADO II )
DISEÑO DE LOSAS EN UNA DIRECCION (CONCRETO ARMADO II )
 
Diagrama de flujo "Resolución de problemas".pdf
Diagrama de flujo "Resolución de problemas".pdfDiagrama de flujo "Resolución de problemas".pdf
Diagrama de flujo "Resolución de problemas".pdf
 
Joseph juran aportaciones al control de la calidad
Joseph juran aportaciones al control de la calidadJoseph juran aportaciones al control de la calidad
Joseph juran aportaciones al control de la calidad
 

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