Académique Documents
Professionnel Documents
Culture Documents
TIPOS DE INFORMACIN
Redundante: Informacin repetitiva o predecible.
TIPOS DE COMPRESIN
Sin prdidas reales: es decir, transmitiendo toda la entropa del mensaje
tiempo de proceso.
Una vez realizada la compresin, no se
compresin de texto.
CODIFICACIN
LEMPEL-LZ77
(VENTANA
DESLIZANTE)
CARACTERISTICAS
No utiliza diccionario, con lo que las implementaciones concretas
son muy diferentes
Se basa en una ventana deslizante (n)
La ventana se divide en dos: ventana de bsqueda (n-ls) y
ventana hacia delante (ls)
Se buscan coincidencias entre ventanas
Se manejan ternas (puntero, longitud y carcter)
Codificador
Checamos si el primer smbolo de la ventana hacia adelante se
encuentra en la ventana de bsqueda. Si no est, se forma la
terna (0,0,?) ?=primer smbolo de la ventana hacia adelante.
Las dos ventanas se desplazan a la izquierda longitud+1
posiciones.
Si est, veo si alguna de las secuencias que empiezan en l es
igual a alguna que comienza en la ventana. Busco la de mayor
longitud y se forma la tercia (p,l,?) p= posicion o puntero del
primer smbolo de la ventana de bsqueda que contiene la
cadena. Las dos ventanas se desplazan a la izquierda
longitud+1 posiciones.
EJEMPLO
Cadena a codificar: aababacbacbacbcacbacbbaa
Longitud de la ventana n=18
Longitud de la ventana hacia delante ls=6
aababacbacbacbcacbacbbaa
Calculamos el tamao de la ventana de bsqueda
ls=18-9=9
Ventana hacia delante ls=9
Ventana de
bsqueda
Ventana hacia
delante
a a b a b a c b a c b a c b c a c b a c b b a a
9 8 7 6 5 4 3 2 1
n-
Ventana hacia
delante
aababa
Ventana hacia
delante
Ventana hacia
delante
Resultado
Ventana de bsqueda: aababacba
(3, 5, c)
(7, 6, b)
(4, 1, a)
Decodificador
La ventana inicial es la ventana de bsqueda
Se lee la terna si la terna es (0,0,?). Se coloca el
smbolo ? Al final de la cadena
Si la terna es (p,l,c). Se colocan los l smbolos a
partir de la posicin p y se aade al final el
carcter c
a a b a b a c b a c b a c b c
9 8 7 6 5 4 3 2 1
a a b a b a c b a c b a c b c
9 8 7 6 5 4 3 2 1
a a b a b a c b a c b a c b c a c b a c b b
9 8 7 6 5 4 3 2 1
Smbolo
que
se
aade de la terna
a a b a b a c b a c b a c b c a c b a c b b
9 8 7 6 5 4 3 2 1
a a b a b a c b a c b a c b c a c b a c b b a a
9 8 7 6 5 4 3 2 1
Es la cadena de caracteres la cual se tenia al
principio
ALGORITMO LEMPEL-ZIVWELCH
LZW (Lempel-Ziv-Welch) es
un algoritmo de compresin
sin prdida desarrollado por
Terry Welch en 1984 como
una versin mejorada del
algoritmo LZ78 desarrollado
por Abraham Lempel y Jacob
Ziv
LZW
Abandona el concepto de ventana deslizante.
LZW es adaptativo, debido a que el contenido de las tablas se genera a
tratadas.
LA CLAVE
La clave del mtodo LZW reside en que es posible crear sobre la marcha,
APLICACIONES LZW
Lleg a ser utilizado en el programa compress , un programa de
COMPRESIN LZW
Asumir que las letras en un texto estn limitadas a D={a,b,c}
A cada letra, se les asigna un nmero consecutivo que empieza en 0
La tabla inicial sera:
Cdig 0
o
Clave a
COMPRESIN LZW
1.
2.
3.
4.
5.
Vaya al paso 2
COMPRESIN LZW
Texto Original= aababacbacbacbcacb
P=a
Pcod =0
C=a
Representamos a con 0 y se agrega a la tabla aa, con su respectivo cdigo.
Texto comprimido = 0
Cd 0
igo
Clav a
aa
COMPRESIN LZW
Texto Original= aababacbacbacbcacb
P=a
Pcod=0
C=b
Representamos a con 0 y se agrega a la tabla ab, con su respectivo cdigo.
Texto comprimido = 00
Cdi 0
go
Clave a
aa
ab
COMPRESIN LZW
Texto Original= aababacbacbacbcacb
P=b
Pcod=1
C=a
Representamos b con 1 y se agrega a la tabla ba, con su respectivo cdigo.
Texto comprimido = 0|0|1
Cdi 0
go
Clave a
aa
ab
ba
COMPRESIN LZW
Texto Original= aababacbacbacbcacb
P=ab
Pcod=4
C=a
Representamos ab con 4 y se agrega a la tabla aba, con su respectivo
cdigo.
Cdi 0 1
go
Clave a b
aa
ab
ba
aba
COMPRESIN LZW
Texto Original= aababacbacbacbcacb
P=a
Pcod=0
C=c
Representamos a con 0 y se agrega a la tabla ac, con su respectivo cdigo.
Texto comprimido = 0|0|1|4|0
Cdi 0 1
go
Clave a b
aa ab ba
ab
ac
COMPRESIN LZW
Texto Original= aababacbacbacbcacb
P=c
Pcod=2
C=b
Representamos c con 2 y se agrega a la tabla cb, con su respectivo cdigo.
Texto comprimido = 0|0|1|4|0|2|
Cdi 0 1
go
Clave a b
2 3
c aa ab ba ab ac cb
COMPRESIN LZW
Texto Original= aababacbacbacbcacb
P=ba
Pcod=5
C=c
Representamos ba con 5 y se agrega a la tabla bac, con su respectivo
cdigo.
Cdi 0 1 2 3 4 5 6 7 8 9
go
Clave a b c aa ab ba ab ac cb ba
COMPRESIN LZW
Texto Original= aababacbacbacbcacb
P=cb
Pcod=8
C=a
Representamos cb con 8 y se agrega a la tabla cba, con su respectivo
cdigo.
Cdig 0 1
o
Clave a b
2 3
c aa ab ba aba ac cb
10
ba
c
cb
a
COMPRESIN LZW
Texto Original= aababacbacbacbcacb
P=ac
Pcod=7
C=b
Representamos ac con 7 y se agrega a la tabla acb, con su respectivo
cdigo.
7 8 9 10 11
Cdig 0 1 2 3 4 5 6
o
Clave a b c aa ab ba ab ac cb ba cb ac
COMPRESIN LZW
Texto Original= aababacbacbacbcacb
P=b
Pcod=1
C=c
Representamos b con 1 y se agrega a la tabla bc, con su respectivo cdigo.
Texto comprimido = 0|0|1|4|0|2|5|8|7|1|
Cdi 0 1 2 3 4 5 6 7 8 9 10 11 12
go
Clave a b c aa ab ba ab ac cb ba cb ac bc
COMPRESIN LZW
Texto Original= aababacbacbacbcacb
P=c
Pcod=2
C=a
Representamos c con 2 y se agrega a la tabla ca, con su respectivo cdigo.
Texto comprimido = 0|0|1|4|0|2|5|8|7|1|2|
Cdi 0 1 2 3 4 5 6 7 8 9 10 11 12 13
go
Clave a b c aa ab ba ab ac cb ba cb ac bc ca
COMPRESIN LZW
Texto Original= aababacbacbacbcacb
P=ac
Pcod=7
C=b
Representamos ac con 7 y se agrega a la tabla acb, con su respectivo
cdigo.
Cdigo
0 1
10
11
12
13
14
Clave
a b
aa
ab
ba
aba
ac
cb
ca
acb
COMPRESIN LZW
Texto Original= aababacbacbacbcacb
P=b
Pcod=1
C=a
Representamos b con 1
Texto comprimido = 0|0|1|4|0|2|5|8|7|1|2|7|1|
Cdigo
0 1 2
12
1
3
14
Clave
a b
aa
ab
ba
aba
ac
cb
c
a
acb
10
11
COMPRESIN LZW
Texto Original= aababacbacbacbcacb
Texto comprimido
ab a
ba cb
ac
ac
DESCOMPRESIN LZW
La caracterstica ms importante de LZW consiste en que no es necesario
DESCOMPRESIN LZW
Texto Original= aababacbacbacbcacb
Texto comprimido = 0|0|1|4|0|2|5|8|7|1|2|7|1|
Convertir los cdigos de izquierda a derecha
0 representa a
Texto Descomprimido=a
Pcod=0 y p=a
p=a seguido del siguiente caracter (c) se agrega a la tabla
Cdi 0
go
Clave a
DESCOMPRESIN LZW
Texto Original= aababacbacbacbcacb
Texto comprimido = 0|0|1|4|0|2|5|8|7|1|2|7|1|
Convertir los cdigos de izquierda a derecha
0 representa a
Texto Descomprimido=aa
Pcod=0 y p=a
ultimop=a seguido del primer caracter de p(a) se agrega a la tabla
Cdi 0
go
Clave a
aa
DESCOMPRESIN LZW
Texto Original= aababacbacbacbcacb
Texto comprimido = 0|0|1|4|0|2|5|8|7|1|2|7|1|
Convertir los cdigos de izquierda a derecha
1 representa b
Texto Descomprimido=aab
Pcod=1 y p=b
ultimop=a seguido del primer caracter de p(b) se agrega a la tabla
Cdi 0
go
Clave a
aa
ab
DESCOMPRESIN LZW
Texto Original= aababacbacbacbcacb
Texto comprimido = 0|0|1|4|0|2|5|8|7|1|2|7|1|
Convertir los cdigos de izquierda a derecha
4 representa ab
Texto Descomprimido=aabab
Pcod=4 y p=ab
ultimop=b seguido del primer caracter de p(a) se agrega a la tabla
Cdi 0
go
Clave a
aa
ab
ba
DESCOMPRESIN LZW
Texto Original= aababacbacbacbcacb
Texto comprimido = 0|0|1|4|0|2|5|8|7|1|2|7|1|
Convertir los cdigos de izquierda a derecha
0 representa a
Texto Descomprimido=aababa
Pcod=0 y p=a
ultimop=ab seguido del primer caracter de p(a) se agrega a la tabla
Cdi 0 1
go
Clave a b
aa
ab
ba
aba
DESCOMPRESIN LZW
Texto Original= aababacbacbacbcacb
Texto comprimido = 0|0|1|4|0|2|5|8|7|1|2|7|1|
Convertir los cdigos de izquierda a derecha
2 representa c
Texto Descomprimido=aababac
Pcod=2 y p=c
ultimop=a seguido del primer caracter de p(c) se agrega a la tabla
Cdi 0 1
go
Clave a b
aa ab ba
ab
ac
DESCOMPRESIN LZW
Texto Original= aababacbacbacbcacb
Texto comprimido = 0|0|1|4|0|2|5|8|7|1|2|7|1|
Convertir los cdigos de izquierda a derecha
5 representa ba
Texto Descomprimido=aababacba
Pcod=5 y p=ba
ultimop=c seguido del primer caracter de p(b) se agrega a la tabla
Cdi 0 1
go
Clave a b
2 3
c aa ab ba ab ac cb
DESCOMPRESIN LZW
Texto Original= aababacbacbacbcacb
Texto comprimido = 0|0|1|4|0|2|5|8|7|1|2|7|1|
Convertir los cdigos de izquierda a derecha
5 representa ba
Texto Descomprimido=aababacba
Pcod=5 y p=ba
ultimop=ba seguido del primer caracter de p(c) se agrega a la tabla
Cdi 0 1 2 3 4 5 6 7 8 9
go
Clave a b c aa ab ba ab ac cb ba
DESCOMPRESIN LZW
Texto Original= aababacbacbacbcacb
Texto comprimido = 0|0|1|4|0|2|5|8|7|1|2|7|1|
Convertir los cdigos de izquierda a derecha
8 representa cb
Texto Descomprimido=aababacbacb
Pcod=8 y p=cb
ultimop=cb seguido del primer caracter de p(a) se agrega a la tabla
Cdig 0 1
o
Clave a b
2 3
c aa ab ba aba ac cb
10
ba
cb
DESCOMPRESIN LZW
Texto Original= aababacbacbacbcacb
Texto comprimido = 0|0|1|4|0|2|5|8|7|1|2|7|1|
Convertir los cdigos de izquierda a derecha
7 representa ac
Texto Descomprimido=aababacbacbac
Pcod=7 y p=ac
ultimop=ac seguido del primer caracter de p(b) se agrega a la tabla
7 8 9 10 11
Cdig 0 1 2 3 4 5 6
o
Clave a b c aa ab ba ab ac cb ba cb ac
DESCOMPRESIN LZW
Texto Original= aababacbacbacbcacb
Texto comprimido = 0|0|1|4|0|2|5|8|7|1|2|7|1|
Convertir los cdigos de izquierda a derecha
1 representa b
Texto Descomprimido=aababacbacbacb
Pcod=1 y p=b
ultimop=b seguido del primer caracter de p(c) se agrega a la tabla
Cdi 0 1 2 3 4 5 6 7 8 9 10 11 12
go
Clave a b c aa ab ba ab ac cb ba cb ac bc
DESCOMPRESIN LZW
Texto Original= aababacbacbacbcacb
Texto comprimido = 0|0|1|4|0|2|5|8|7|1|2|7|1|
Convertir los cdigos de izquierda a derecha
2 representa c
Texto Descomprimido=aababacbacbacbc
Pcod=2 y p=c
ultimop=c seguido del primer caracter de p(a) se agrega a la tabla
Cdi 0 1 2 3 4 5 6 7 8 9 10 11 12 13
go
Clave a b c aa ab ba ab ac cb ba cb ac bc ca
DESCOMPRESIN LZW
Texto Original= aababacbacbacbcacb
Texto comprimido = 0|0|1|4|0|2|5|8|7|1|2|7|1|
Convertir los cdigos de izquierda a derecha
7 representa ac
Texto Descomprimido=aababacbacbacbcac
Pcod=7 y p=ac
ultimop=ac seguido del primer caracter de p(b) se agrega a la tabla
Cdigo
0 1
10
11
12
13
14
Clave
a b
aa
ab
ba
aba
ac
cb
ca
acb