Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Milla
VII
2015
TPICOS I
COMPRESIN LZ77
INDICE
Historia: ............................................................................ 2
Funcionamiento: .............................................................. 2
Algoritmo de Comprensin .............................................. 2
Ejemplo de compresin: ................................................ 3
Algoritmo de Descompresin .......................................... 6
Ejemplo de descompresin: .......................................... 6
Ventajas del LZ77 ............................................................. 9
Problemas De LZ77........................................................... 9
Actualidad ........................................................................ 9
Bibliografa ..................................................................... 10
Pgina 1 de 10
TPICOS I
Historia:
Los creadores de este clsico algoritmo de compresin fueron Abraham Lempel y Jakob
Ziv; 1977 Abraham Lempel y Jacob Ziv presentaron su modelo de compresin basado en
diccionario, esta compresin de texto se refiere a la compresin sin prdida para
cualquier tipo de datos. Hasta la fecha todos los algoritmos de compresin desarrollados
eran bsicamente compresores estticos. El nuevo modelo fue llamado lz77 (lz son la
iniciales de sus creadores y 77 el ao en que se cre).
Funcionamiento:
En este algoritmo el codificador analiza el texto como una secuencia de caracteres,
mediante una ventana deslizable compuesta por dos partes; un buffer de anticipacin
que es la opcin que est a punto de ser codificada y un buffer de bsqueda (la ventana
en s), que es la parte dnde se buscan secuencias iguales a las existentes en el buffer
de anticipacin. Para codificar el contenido, o parte de l, del buffer de anticipacin, se
busca la secuencia igual en el buffer de bsqueda y la codificacin resulta en indicar esta
repeticin como una tripleta:
Algoritmo de Comprensin
Pgina 2 de 10
TPICOS I
Los pasos para el desarrollo del algoritmo son los siguientes:
1. El codificador recorre la ventana de bsqueda hacia atrs, de derecha a
izquierda. Busca una cadena de caracteres que sea igual a la cadena de
caracteres de la ventana de adelante o a un prefijo de esta cadena. Si en el search
buffer hay 2 o ms cadenas iguales se pueden elegir cualquiera ya que esto no
afecta al decodificador.
a) Si el codificador encuentra una cadena coincidente como se explic
antes, entonces genera una terna (tripleta) del tipo (puntero, longitud,
carcter). Puntero es la distancia que hay (contada en caracteres) desde
el final de la ventana de bsqueda (el extremo derecho) hacia atrs, hasta
el comienzo de la cadena que se ha encontrado. Longitud es la longitud
de la cadena hallada. Carcter es, el carcter dentro de la ventana look ahead, que sigue a la cadena coincidente.
b) Si no se encontr ninguna cadena coincidente entonces se genera una
terna en donde puntero y longitud valen 0 y carcter es el primer carcter
de la ventana de adelante.
2. Las dos ventanas (buffers) se desplazan hacia adelante una distancia igual a
longitud + 1.
El tamao de la ventana de bsqueda es mucho mayor que el tamao de la
ventana en avance, lo cual resulta lgico teniendo en cuenta que la ventana de
bsqueda es el diccionario en s. En la prctica la ventana de bsqueda puede
tener algunos miles de caracteres de longitud mientras que la ventana en avance
tiene algunas decenas de caracteres.
Ejemplo de compresin:
Ejemplo 1
La cadena es: AAACCCDDDAAABCCDD
Ventana de Bsqueda: 9
Ventana de avance: 3
Pgina 3 de 10
TPICOS I
Ventana de Bsqueda
1
4
C
6
5
C
5
6
C
4
7
D
3
Ventana
de Avance
8
D
2
9
D
1
10
11
12
13
B
14
C
15
C
16
D
17
D
[9, 3, B]
Ahora corremos longitud + 1 (3+1) posiciones para establecer la nueva ventana de
bsqueda y ventana de avance.
Ventana de Bsqueda
1
A
2
A
3
A
4
C
8
D
6
9
D
5
10
A
4
11
A
3
Ventana
de Avance
12
A
2
13
B
1
14
15
16
17
D
La subcadena coincidente esta desde la 9,8 y 7 que es CCD con coincide con la ventana
de avance.
Generamos el segundo triplete que sera
[9, 3, D]
Ya no podemos desplazarnos ms porque ya llegamos al tope de la cadena.
El comprimido seria:
La ventana de Bsqueda + los tripletes
9 + (2*3)=15
TPICOS I
Ejemplo 2
La cadena es:
Ventana de Bsqueda: 9
Ventana de avance: 6
Ventana de Bsqueda
1
A
9
2
C
8
3
C
7
6
D
4
B A
6
7
A
3
Ventana de Avance
8
C
2
9
C
1
10 11 12 13 14 15 16 17 18 19
B A C C B A C C G I
[6, 2, C]
El desplazamiento seria longitud ms 1 (2+1):
Ventana de Bsqueda
1
A
2
C
3
C
4
B
9
5
A
8
6
D
7
7
A
6
8
C
5
Ventana de Avance
10 11 12 13 14 15 16 17 18 19
B A C C B A C C G I
3 2 1
C
4
[4, 5, G]
La ventana completa se desplaza 6 lugares (longitud + 1).
1
A
2
C
3
C
4
B
5
A
6
D
7
A
8
C
9
C
Ventana de Bsqueda
Ventana
de
Avance
10 11 12 13 14 15 16 17 18
B A C C B A C C G
9 8 7 6 5 4 3 2 1
19
Vemos que nuestra ventana de avance solo puede tener un solo elemento.
Adems tambin vemos que no hay ninguna coincidencia por la tanto:
Pgina 5 de 10
TPICOS I
Generamos el tercer triplete que sera
[0, 0, I]
El comprimido seria:
La ventana de Bsqueda + los tripletes
9 + (3*3) = 18
Su ganancia es:
Ganancia= ((152-144)/152)*100
Ganancia = 5.2631%
Algoritmo de Descompresin
El decodificador lee cada tripleta T = [P, L, C]. Se dan dos casos para L:
a. L es igual a cero:
b. L es diferente de cero:
Si P < L entonces:
Se copia letra por letra empezando desde la posicin P (de
derecha a izquierda) y que se copien L veces.
Ejemplo de descompresin:
Para este ejemplo tomamos el valor comprimido del ejemplo de compresin 2 que sera
el siguiente:
Pgina 6 de 10
TPICOS I
La cadena codificada:
A C
C B A D A C
Pasamos a decodificar:
A C
C B A D A C
6 5 4 3 2
C
1
[6, 2, C]
A C
C B A D A C
6 5 4 3 2
C B A C
1
A C
C B A D A C
C B A C
4 3 2 1
[4, 5, G]
A C
C B A D A C
C B A C
4 3 2 1
Iteracin 2:
Pgina 7 de 10
TPICOS I
A C
C B A D A C
C B A C
4 3 2 1
C B
C B A C
4 3 2 1
C B A
C B A C
4 3 2 1
C B A C
C B A C
4 3 2 1
C B A C
C B A C
C G
Iteracin 3:
A C
C B A D A C
Iteracin 4:
A C
C B A D A C
Iteracin 5:
A C
C B A D A C
A C
C B A D A C
C B A C
4 3 2 1
A C C B A D A C C B A C C B A C C G
[0, 0, I]
En este caso la posicin y la longitud son ceros entonces solo se suma el tercer valor del
triplete quedando la cadena de la siguiente manera:
A C C B A D A C C B A C C B A C C G I
A C C B A D A C C B A C C B A C C G I
La efectividad de un compresor basado en LZ77 depende del tamao de ventana
considerado. Con tamaos ms grandes de ventana se mantiene un histrico mayor de
informacin y, por tanto, se aumenta la probabilidad de que secuencias de mayor
Pgina 8 de 10
TPICOS I
longitud (en el lookahead buffer) estn representadas en la ventana. Sin embargo, el
incremento del tamao de ventana tambin supone un aumento en el rango de valores
utilizado para la representacin de los desplazamientos. Generalmente se utilizan 12
bits para la representacin de la posicin (lo que supone una ventana de 4096
posiciones) y 4 para la longitud de la secuencia. Adems, se debe considerar una
longitud mnima de secuencia con el fin de compensar el coste de representacin del
triple. Generalmente se considera una longitud mnima de 3 caracteres. Esto supone la
utilizacin de 2 bytes para la representacin de los pares desplazamiento-longitud a los
que hay que sumar un tercer byte para la representacin de s.
Fcil de implementar.
En procesos de descompresin es muy simple lo cual ayuda a afectividad y
rapidez del proceso general.
Problemas De LZ77
Actualidad
Es ms utilizado que el LZ78 (posiblemente por tener menos problemas de propiedad).
Es una tcnica presente en multitud de modelos de compresin pues tiene tantas
decisiones de diseo que cada uno es implementado de manera distinta a los dems.
Esto hace que no se puedan patentar o que se puedan saltar de una forma u otra las
Pgina 9 de 10
TPICOS I
patentes actuales. Como ejemplo de compresores que lo usan sera: ARJ, PKZIP, RAR,
etc.
Bibliografa
Arcgis.com. (s.f.).
http://help.arcgis.com/es/arcgisdesktop/10.0/help/index.html#//009t00000021000
000.
Chiral, R. M. (s.f.). http://ocw.udl.cat/enginyeria-i-arquitectura/codificacio-i-transport-de-lainfomacio/Contenidos/2/CompSinPerd.pdf.
Definicin, A. (s.f.). http://clickdefinicion.com/letra-l/lz77.php.
ecured. (s.f.). http://www.ecured.cu/index.php/Lz77.
estndares, F. d. (s.f.).
https://books.google.com.pe/books?id=cjsHVSwbHwoC&pg=PA169&lpg=PA169&dq
=EJEMPLO+LZ77&source=bl&ots=ZnyK14E5PC&sig=L9mjboNo0NyQ1SkCvyg4ZJ9HoQ&hl=es419&sa=X&ei=eGRyVcfeAcKxggTSqIC4Bw&redir_esc=y#v=onepage&q=EJEMPLO%20
LZ77&f=false.
gedlc. (s.f.). http://www.gedlc.ulpgc.es/docencia/seminarios/cd/Diccionarios/tsld015.htm.
Pea, R. S. (s.f.).
http://iaci.unq.edu.ar/materias/comunicacion/archivos/apuntes/Compresion%20po
r%20diccionarios.pdf.
Prieto, M. (s.f.). http://www.infor.uva.es/~migumar2/docs/tesis.pdf.
Sandoval, M. M. (s.f.).
http://www.tamps.cinvestav.mx/~mmorales/documents/Compre.pdf.
wikipedia. (s.f.). http://es.wikipedia.org/wiki/LZSS.
Pgina 10 de 10