SlideShare una empresa de Scribd logo
1 de 46
UNIVERSIDAD DE
CUENCA
Programación III
Estructura de Archivos
Codificación de Huffman y
Algoritmo de Compresión LZW
Integrantes:
● Christian Barreto
● Ronaldo Rendón
● Esteban Vizhñay
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.
PROCEDIMIENTO
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.
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.
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
L A P T O P
1
L A P T O P
1 1
L A P T O P
1 1 1
L A P T O P
1 1 1 1
L A P T O P
1 1 1 1 1
L A P T O P
1 1 1 1 1 2
L A T O P
1 1 1 1 2
• 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
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.
• 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
T
1
O
1
P
2
Null
2
L:1 A:1
• 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
• 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
• Volvemos a tomar los dos nodos siguientes y formamos el árbol.
Null:
4
P:2
Null:
2
L:1 A:1
• 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
Null:
6
Null:
2
Null:
4
T:1 O:1 P:2
Null:
2
L:1 A:1
• Volvemos a tomar los dos primeros nodos de
esta lista.
• 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
• Los valores de cada una de las letras son:
P : 10
T: 00
O: 01
A: 111
L: 110
• 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
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.
ALGORITMO DE
COMPRESIÓN SIN PÉRDIDA
LZW
LZW (Lempel-Ziv-Welch) es un algoritmo de compresión sin
pérdida desarrollado por Terry Welch en 1984
La clave del método LZW reside en que es posible crear sobre
la marcha, de manera automática y en una única pasada un
diccionario de cadenas que se encuentren dentro del texto a
comprimir mientras al mismo tiempo se procede a su
codificación. Dicho diccionario no es transmitido con el texto
comprimido, puesto que el descompresor puede reconstruirlo
usando la misma lógica con que lo hace el compresor y, si
está codificado correctamente, tendrá exactamente las
mismas cadenas que el diccionario del compresor tenía.
INTRODUCCIÓN
• Los códigos 0-255 de la tabla de códigos siempre
se asignan para representar bytes simples del
archivo de entrada.
• Cuando comienza la codificación, la tabla de
códigos contiene sólo las primeras 256 entradas,
siendo el resto de la tabla espacios en blanco.
• La compresión se consigue utilizando códigos 256
a 4095 para representar secuencias de bytes.
• A medida que la codificación continúa, LZW
identifica secuencias repetidas en los datos, y los
agrega a la tabla de códigos.
• La decodificación se logra tomando cada código
del archivo comprimido y traduciéndolo a través de
EJEMPLO: COMPRESIÓN LZW
Ejemplo: Uso del algoritmo de comprensión LZW con la cadena:
BABAABAAA
EJEMPLO: LZW COMPRESIÓN PASO 1
BABAABAAA P=A
C=empty
STRING TABLEENCODER OUTPUT
stringcodewordrepresentingoutput code
BA256B66
EJEMPLO: LZW COMPRESIÓN PASO 2
BABAABAAA P=B
C=empty
STRING TABLEENCODER OUTPUT
stringcodewordrepresentingoutput code
BA256B66
AB257A65
EJEMPLO: LZW COMPRESIÓN PASO 3
BABAABAAA P=A
C=empty
STRING TABLEENCODER OUTPUT
stringcodewordrepresentingoutput code
BA256B66
AB257A65
BAA258BA256
EJEMPLO: LZW COMPRESIÓN PASO 4
BABAABAAA P=A
C=empty
STRING TABLEENCODER OUTPUT
stringcodewordrepresentingoutput code
BA256B66
AB257A65
BAA258BA256
ABA259AB257
EJEMPLO: LZW COMPRESIÓN PASO 5
BABAABAAA P=A
C=A
STRING TABLEENCODER OUTPUT
stringcodewordrepresentingoutput code
BA256B66
AB257A65
BAA258BA256
ABA259AB257
AA260A65
EJEMPLO: LZW COMPRESIÓN PASO 6
BABAABAAA P=AA
C=empty
STRING TABLEENCODER OUTPUT
stringcodewordrepresentingoutput code
BA256B66
AB257A65
BAA258BA256
ABA259AB257
AA260A65
AA260
DESCOMPRESIÓN LZW
• El descompresor LZW crea la misma tabla de cadenas
durante la descompresión.
• Comienza con las primeras 256 entradas de tabla
inicializadas a caracteres individuales.
• La tabla de cadenas se actualiza para cada carácter en el
flujo de entrada, excepto el primero.
• La decodificación se logra leyendo códigos y traduciéndolos
a través de la tabla de códigos que se está construyendo.
EJEMPLO: LZW DESCOMPRESIÓN
Ejemplo: Usar LZW para descomprimir la secuencia de salida del ejemplo
de compresión anterior:
<66><65><256><257><65><260>.
EJEMPLO: LZW DESCOMPRESIÓN PASO 1
<66><65><256><257><65><260> Old = 65 S = A
New = 66 C = A
STRING TABLEENCODER OUTPUT
stringcodewordstring
B
BA256A
EJEMPLO: LZW DESCOMPRESIÓN PASO 2
<66><65><256><257><65><260> Old = 256 S = BA
New = 256 C = B
STRING TABLEENCODER OUTPUT
stringcodewordstring
B
BA256A
AB257BA
EJEMPLO: LZW DESCOMPRESIÓN PASO 3
<66><65><256><257><65><260> Old = 257 S = AB
New = 257 C = A
STRING TABLEENCODER OUTPUT
stringcodewordstring
B
BA256A
AB257BA
BAA258AB
EJEMPLO: LZW DESCOMPRESIÓN PASO 4
<66><65><256><257><65><260> Old = 65 S = A
New = 65 C = A
STRING TABLEENCODER OUTPUT
stringcodewordstring
B
BA256A
AB257BA
BAA258AB
ABA259A
EJEMPLO: LZW DESCOMPRESIÓN PASO 5
<66><65><256><257><65><260> Old = 260 S = AA
New = 260 C = A
STRING TABLEENCODER OUTPUT
stringcodewordstring
B
BA256A
AB257BA
BAA258AB
ABA259A
AA260AA
Este algoritmo comprime muy bien secuencias repetitivas
de datos.
Como las palabras de código son 12 bits, cualquier
carácter codificado único ampliará el tamaño de los datos
en lugar de reducirlo.
En este ejemplo, 72 bits están representados con 72 bits
de datos. Después de que se construye una tabla de
cadena razonable, la compresión mejora drásticamente.
Ventajas de LZW sobre Huffman:
LZW no requiere información previa sobre el flujo de datos
de entrada.
CONCLUSIONES
BIBLIOGRAFÍA
• Denecker Koen and Van Overloop Jeroen, An Experimental Comparison of several Lossless Image
Coders for Medical Images, 1068-0314/97, 1997 IEEE.
• Luis Gabriel Rueda, Manuel Osear Ortega, Un Modelo de Codificación Dinámica del Método de
Huffman, para la Compresión de Datos en Línea, 1er. Congreso Argentino de Ciencias de la
Computación, Domicilio: Ignacio de la Rosa y Meglioli (5400) San Juan.
• https://www.cs.duke.edu/csed/curious/compression/lzw.html
• http://es.ccm.net/contents/731-compresion-lzw
• http://www.grc.upv.es/docencia/tdm/practicas/P1.pdf
• http://joselu.webs.uvigo.es/material/Algoritmo%20de%20Huffman.pdf
• https://learn.yancyparedes.net/2013/10/an-implementation-of-the-huffman-code-for-
compressing-and-decompressing-strings
LINKS:
Algoritmo de compresión sin pérdida LZW:
https://github.com/EstebanViz/LZW-Ucuenca
Codificación de Huffman :
https://github.com/EstebanViz/Huffman-C-GUI-GTK-

Más contenido relacionado

La actualidad más candente

Configuracion De Eigrp Y Loopback
Configuracion De Eigrp Y LoopbackConfiguracion De Eigrp Y Loopback
Configuracion De Eigrp Y Loopback
César Nuñez
 
Automatas y compiladores clase3
Automatas y compiladores clase3Automatas y compiladores clase3
Automatas y compiladores clase3
Germania Rodriguez
 
Electrónica digital: Diseño de contador con flip-flop tipo JK y D haciendo de...
Electrónica digital: Diseño de contador con flip-flop tipo JK y D haciendo de...Electrónica digital: Diseño de contador con flip-flop tipo JK y D haciendo de...
Electrónica digital: Diseño de contador con flip-flop tipo JK y D haciendo de...
SANTIAGO PABLO ALBERTO
 
Repetidor regenerativo
Repetidor regenerativoRepetidor regenerativo
Repetidor regenerativo
Douglas
 
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
nica2009
 
Practica 1 Laboratorio Telecomunicaciones I
Practica 1 Laboratorio Telecomunicaciones IPractica 1 Laboratorio Telecomunicaciones I
Practica 1 Laboratorio Telecomunicaciones I
SAWERS S.R.L.
 
transmisión de datos, detección y corrección de errores y compresión de datos
transmisión de datos, detección y corrección de errores y compresión de datostransmisión de datos, detección y corrección de errores y compresión de datos
transmisión de datos, detección y corrección de errores y compresión de datos
edithvelasquez
 

La actualidad más candente (20)

Compresion de Datos - Telecomunicaciones III
Compresion de Datos - Telecomunicaciones IIICompresion de Datos - Telecomunicaciones III
Compresion de Datos - Telecomunicaciones III
 
Complemento a 1 y a 2
Complemento a 1 y a 2Complemento a 1 y a 2
Complemento a 1 y a 2
 
Códigos
Códigos Códigos
Códigos
 
Programacion en WinCupl
Programacion en WinCuplProgramacion en WinCupl
Programacion en WinCupl
 
Configuracion De Eigrp Y Loopback
Configuracion De Eigrp Y LoopbackConfiguracion De Eigrp Y Loopback
Configuracion De Eigrp Y Loopback
 
Practica6MoisesDaniel25378.docx
Practica6MoisesDaniel25378.docxPractica6MoisesDaniel25378.docx
Practica6MoisesDaniel25378.docx
 
Automatas y compiladores clase3
Automatas y compiladores clase3Automatas y compiladores clase3
Automatas y compiladores clase3
 
6 Codificación de fuente.ppsx
6 Codificación de fuente.ppsx6 Codificación de fuente.ppsx
6 Codificación de fuente.ppsx
 
Electrónica digital: Diseño de contador con flip-flop tipo JK y D haciendo de...
Electrónica digital: Diseño de contador con flip-flop tipo JK y D haciendo de...Electrónica digital: Diseño de contador con flip-flop tipo JK y D haciendo de...
Electrónica digital: Diseño de contador con flip-flop tipo JK y D haciendo de...
 
Repetidor regenerativo
Repetidor regenerativoRepetidor regenerativo
Repetidor regenerativo
 
Codigos De Huffman
Codigos De HuffmanCodigos De Huffman
Codigos De Huffman
 
Fenomeno gibbs
Fenomeno gibbsFenomeno gibbs
Fenomeno gibbs
 
Otras estructuras de datos (heap, tablas hash y diccionarios)
Otras estructuras de datos (heap, tablas hash y diccionarios)Otras estructuras de datos (heap, tablas hash y diccionarios)
Otras estructuras de datos (heap, tablas hash y diccionarios)
 
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
 
Puerto Serial o RS 232
Puerto Serial o RS 232Puerto Serial o RS 232
Puerto Serial o RS 232
 
Modelo osi
Modelo osiModelo osi
Modelo osi
 
Medicion de tasa de error binaria (ber)
Medicion de tasa de error binaria (ber)Medicion de tasa de error binaria (ber)
Medicion de tasa de error binaria (ber)
 
Practica 1 Laboratorio Telecomunicaciones I
Practica 1 Laboratorio Telecomunicaciones IPractica 1 Laboratorio Telecomunicaciones I
Practica 1 Laboratorio Telecomunicaciones I
 
transmisión de datos, detección y corrección de errores y compresión de datos
transmisión de datos, detección y corrección de errores y compresión de datostransmisión de datos, detección y corrección de errores y compresión de datos
transmisión de datos, detección y corrección de errores y compresión de datos
 
mdedep_01 (2).pdf
mdedep_01 (2).pdfmdedep_01 (2).pdf
mdedep_01 (2).pdf
 

Similar a Huffman y-lzw

CE143 - S06 Compresión de datos y ecuaciones en diferencias_c1 (1).pptx
CE143 - S06 Compresión de datos y ecuaciones en diferencias_c1 (1).pptxCE143 - S06 Compresión de datos y ecuaciones en diferencias_c1 (1).pptx
CE143 - S06 Compresión de datos y ecuaciones en diferencias_c1 (1).pptx
GustavoGonzales28
 
CE143 - S06 Compresión de datos y ecuaciones en diferencias_c1.pptx
CE143 - S06 Compresión de datos y ecuaciones en diferencias_c1.pptxCE143 - S06 Compresión de datos y ecuaciones en diferencias_c1.pptx
CE143 - S06 Compresión de datos y ecuaciones en diferencias_c1.pptx
GustavoGonzales28
 
Analisis lexico 2
Analisis lexico 2Analisis lexico 2
Analisis lexico 2
perlallamas
 
Diapositiva de l estructura de datos
Diapositiva de l estructura de datosDiapositiva de l estructura de datos
Diapositiva de l estructura de datos
mariajuly
 
UNIVERSIDAD TECNICA DE MANAB{I
UNIVERSIDAD TECNICA DE MANAB{IUNIVERSIDAD TECNICA DE MANAB{I
UNIVERSIDAD TECNICA DE MANAB{I
JULIO
 
Analisis Lexico
Analisis LexicoAnalisis Lexico
Analisis Lexico
FARIDROJAS
 

Similar a Huffman y-lzw (20)

Codificación de huffman
Codificación de huffmanCodificación de huffman
Codificación de huffman
 
Algoritmos de compresión
Algoritmos de compresiónAlgoritmos de compresión
Algoritmos de compresión
 
Sistema binario
Sistema binarioSistema binario
Sistema binario
 
Compuertas logicas
Compuertas logicasCompuertas logicas
Compuertas logicas
 
CE143 - S06 Compresión de datos y ecuaciones en diferencias_c1 (1).pptx
CE143 - S06 Compresión de datos y ecuaciones en diferencias_c1 (1).pptxCE143 - S06 Compresión de datos y ecuaciones en diferencias_c1 (1).pptx
CE143 - S06 Compresión de datos y ecuaciones en diferencias_c1 (1).pptx
 
CE143 - S06 Compresión de datos y ecuaciones en diferencias_c1.pptx
CE143 - S06 Compresión de datos y ecuaciones en diferencias_c1.pptxCE143 - S06 Compresión de datos y ecuaciones en diferencias_c1.pptx
CE143 - S06 Compresión de datos y ecuaciones en diferencias_c1.pptx
 
Presentacion Foro eulises brazon Josue Baez
Presentacion Foro eulises brazon  Josue Baez Presentacion Foro eulises brazon  Josue Baez
Presentacion Foro eulises brazon Josue Baez
 
Sistema ascii y binario
Sistema ascii y binarioSistema ascii y binario
Sistema ascii y binario
 
Algoritmo de compresión de huffman
Algoritmo de compresión de huffmanAlgoritmo de compresión de huffman
Algoritmo de compresión de huffman
 
El sistema binario
El sistema binarioEl sistema binario
El sistema binario
 
Capítulo 1 Qbasic entrada y salida básica
Capítulo 1  Qbasic entrada y salida básicaCapítulo 1  Qbasic entrada y salida básica
Capítulo 1 Qbasic entrada y salida básica
 
Analisis lexico 2
Analisis lexico 2Analisis lexico 2
Analisis lexico 2
 
Diapositiva de l estructura de datos
Diapositiva de l estructura de datosDiapositiva de l estructura de datos
Diapositiva de l estructura de datos
 
Algoritmos compresión Cubi-Romero-Toledo
Algoritmos compresión Cubi-Romero-ToledoAlgoritmos compresión Cubi-Romero-Toledo
Algoritmos compresión Cubi-Romero-Toledo
 
Examen De Estructura De Datos
Examen De Estructura De DatosExamen De Estructura De Datos
Examen De Estructura De Datos
 
UNIVERSIDAD TECNICA DE MANAB{I
UNIVERSIDAD TECNICA DE MANAB{IUNIVERSIDAD TECNICA DE MANAB{I
UNIVERSIDAD TECNICA DE MANAB{I
 
Sistema numérico Laboratorio 4
Sistema numérico Laboratorio 4Sistema numérico Laboratorio 4
Sistema numérico Laboratorio 4
 
Listas
ListasListas
Listas
 
Direccionamiento de red IPv4
Direccionamiento de red IPv4Direccionamiento de red IPv4
Direccionamiento de red IPv4
 
Analisis Lexico
Analisis LexicoAnalisis Lexico
Analisis Lexico
 

Último

NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
BRAYANJOSEPTSANJINEZ
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
evercoyla
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
bcondort
 

Último (20)

01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdf
 
Sistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión internaSistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión interna
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
 
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf  PARA TRABAJO SEGUROATS-FORMATO cara.pdf  PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
 
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
 
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelosFicha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
Six Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processSix Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo process
 
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSION
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSIONCALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSION
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSION
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
 
27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt
 
Ejemplos aplicados de flip flops para la ingenieria
Ejemplos aplicados de flip flops para la ingenieriaEjemplos aplicados de flip flops para la ingenieria
Ejemplos aplicados de flip flops para la ingenieria
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
 
UNIDAD II 2.pdf ingenieria civil lima upn
UNIDAD  II 2.pdf ingenieria civil lima upnUNIDAD  II 2.pdf ingenieria civil lima upn
UNIDAD II 2.pdf ingenieria civil lima upn
 
Sesion 6 _ Curso Integrador II_TSZVQJ.pdf
Sesion 6 _ Curso Integrador II_TSZVQJ.pdfSesion 6 _ Curso Integrador II_TSZVQJ.pdf
Sesion 6 _ Curso Integrador II_TSZVQJ.pdf
 
nomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestacionesnomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestaciones
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
 

Huffman y-lzw

  • 1. UNIVERSIDAD DE CUENCA Programación III Estructura de Archivos Codificación de Huffman y Algoritmo de Compresión LZW Integrantes: ● Christian Barreto ● Ronaldo Rendón ● Esteban Vizhñay
  • 3. 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.
  • 4. PROCEDIMIENTO 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.
  • 5. 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.
  • 6. 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
  • 7. L A P T O P 1
  • 8. L A P T O P 1 1
  • 9. L A P T O P 1 1 1
  • 10. L A P T O P 1 1 1 1
  • 11. L A P T O P 1 1 1 1 1
  • 12. L A P T O P 1 1 1 1 1 2
  • 13. L A T O P 1 1 1 1 2
  • 14. • 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
  • 15. 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.
  • 16. • 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
  • 18. • 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
  • 19. • 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
  • 20. • Volvemos a tomar los dos nodos siguientes y formamos el árbol. Null: 4 P:2 Null: 2 L:1 A:1
  • 21. • 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
  • 22. Null: 6 Null: 2 Null: 4 T:1 O:1 P:2 Null: 2 L:1 A:1 • Volvemos a tomar los dos primeros nodos de esta lista.
  • 23. • 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
  • 24. • Los valores de cada una de las letras son: P : 10 T: 00 O: 01 A: 111 L: 110
  • 25. • 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
  • 26. 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.
  • 28. LZW (Lempel-Ziv-Welch) es un algoritmo de compresión sin pérdida desarrollado por Terry Welch en 1984 La clave del método LZW reside en que es posible crear sobre la marcha, de manera automática y en una única pasada un diccionario de cadenas que se encuentren dentro del texto a comprimir mientras al mismo tiempo se procede a su codificación. Dicho diccionario no es transmitido con el texto comprimido, puesto que el descompresor puede reconstruirlo usando la misma lógica con que lo hace el compresor y, si está codificado correctamente, tendrá exactamente las mismas cadenas que el diccionario del compresor tenía. INTRODUCCIÓN
  • 29. • Los códigos 0-255 de la tabla de códigos siempre se asignan para representar bytes simples del archivo de entrada. • Cuando comienza la codificación, la tabla de códigos contiene sólo las primeras 256 entradas, siendo el resto de la tabla espacios en blanco. • La compresión se consigue utilizando códigos 256 a 4095 para representar secuencias de bytes. • A medida que la codificación continúa, LZW identifica secuencias repetidas en los datos, y los agrega a la tabla de códigos. • La decodificación se logra tomando cada código del archivo comprimido y traduciéndolo a través de
  • 30. EJEMPLO: COMPRESIÓN LZW Ejemplo: Uso del algoritmo de comprensión LZW con la cadena: BABAABAAA
  • 31. EJEMPLO: LZW COMPRESIÓN PASO 1 BABAABAAA P=A C=empty STRING TABLEENCODER OUTPUT stringcodewordrepresentingoutput code BA256B66
  • 32. EJEMPLO: LZW COMPRESIÓN PASO 2 BABAABAAA P=B C=empty STRING TABLEENCODER OUTPUT stringcodewordrepresentingoutput code BA256B66 AB257A65
  • 33. EJEMPLO: LZW COMPRESIÓN PASO 3 BABAABAAA P=A C=empty STRING TABLEENCODER OUTPUT stringcodewordrepresentingoutput code BA256B66 AB257A65 BAA258BA256
  • 34. EJEMPLO: LZW COMPRESIÓN PASO 4 BABAABAAA P=A C=empty STRING TABLEENCODER OUTPUT stringcodewordrepresentingoutput code BA256B66 AB257A65 BAA258BA256 ABA259AB257
  • 35. EJEMPLO: LZW COMPRESIÓN PASO 5 BABAABAAA P=A C=A STRING TABLEENCODER OUTPUT stringcodewordrepresentingoutput code BA256B66 AB257A65 BAA258BA256 ABA259AB257 AA260A65
  • 36. EJEMPLO: LZW COMPRESIÓN PASO 6 BABAABAAA P=AA C=empty STRING TABLEENCODER OUTPUT stringcodewordrepresentingoutput code BA256B66 AB257A65 BAA258BA256 ABA259AB257 AA260A65 AA260
  • 37. DESCOMPRESIÓN LZW • El descompresor LZW crea la misma tabla de cadenas durante la descompresión. • Comienza con las primeras 256 entradas de tabla inicializadas a caracteres individuales. • La tabla de cadenas se actualiza para cada carácter en el flujo de entrada, excepto el primero. • La decodificación se logra leyendo códigos y traduciéndolos a través de la tabla de códigos que se está construyendo.
  • 38. EJEMPLO: LZW DESCOMPRESIÓN Ejemplo: Usar LZW para descomprimir la secuencia de salida del ejemplo de compresión anterior: <66><65><256><257><65><260>.
  • 39. EJEMPLO: LZW DESCOMPRESIÓN PASO 1 <66><65><256><257><65><260> Old = 65 S = A New = 66 C = A STRING TABLEENCODER OUTPUT stringcodewordstring B BA256A
  • 40. EJEMPLO: LZW DESCOMPRESIÓN PASO 2 <66><65><256><257><65><260> Old = 256 S = BA New = 256 C = B STRING TABLEENCODER OUTPUT stringcodewordstring B BA256A AB257BA
  • 41. EJEMPLO: LZW DESCOMPRESIÓN PASO 3 <66><65><256><257><65><260> Old = 257 S = AB New = 257 C = A STRING TABLEENCODER OUTPUT stringcodewordstring B BA256A AB257BA BAA258AB
  • 42. EJEMPLO: LZW DESCOMPRESIÓN PASO 4 <66><65><256><257><65><260> Old = 65 S = A New = 65 C = A STRING TABLEENCODER OUTPUT stringcodewordstring B BA256A AB257BA BAA258AB ABA259A
  • 43. EJEMPLO: LZW DESCOMPRESIÓN PASO 5 <66><65><256><257><65><260> Old = 260 S = AA New = 260 C = A STRING TABLEENCODER OUTPUT stringcodewordstring B BA256A AB257BA BAA258AB ABA259A AA260AA
  • 44. Este algoritmo comprime muy bien secuencias repetitivas de datos. Como las palabras de código son 12 bits, cualquier carácter codificado único ampliará el tamaño de los datos en lugar de reducirlo. En este ejemplo, 72 bits están representados con 72 bits de datos. Después de que se construye una tabla de cadena razonable, la compresión mejora drásticamente. Ventajas de LZW sobre Huffman: LZW no requiere información previa sobre el flujo de datos de entrada. CONCLUSIONES
  • 45. BIBLIOGRAFÍA • Denecker Koen and Van Overloop Jeroen, An Experimental Comparison of several Lossless Image Coders for Medical Images, 1068-0314/97, 1997 IEEE. • Luis Gabriel Rueda, Manuel Osear Ortega, Un Modelo de Codificación Dinámica del Método de Huffman, para la Compresión de Datos en Línea, 1er. Congreso Argentino de Ciencias de la Computación, Domicilio: Ignacio de la Rosa y Meglioli (5400) San Juan. • https://www.cs.duke.edu/csed/curious/compression/lzw.html • http://es.ccm.net/contents/731-compresion-lzw • http://www.grc.upv.es/docencia/tdm/practicas/P1.pdf • http://joselu.webs.uvigo.es/material/Algoritmo%20de%20Huffman.pdf • https://learn.yancyparedes.net/2013/10/an-implementation-of-the-huffman-code-for- compressing-and-decompressing-strings
  • 46. LINKS: Algoritmo de compresión sin pérdida LZW: https://github.com/EstebanViz/LZW-Ucuenca Codificación de Huffman : https://github.com/EstebanViz/Huffman-C-GUI-GTK-