Un compresor LZ77 trabaja sustituyendo las cadenas que encuentra a laentrada por la referencia donde la cadena aparece en un diccionario. Si dichareferencia ocupa menos bits que la cadena en sí, se produce una compresiónde datos.
La secuencia de símbolos a codificar se procesa de forma secuencial. Para ello sedefine una ventana deslizante que consta de dos partes: (1) un diccionario y (2) un“buffer”. En el diccionario encontramos las cadenas que ya han sido codificadas yen el buffer, aquellas que van a codificarse.
El compresor emite un código de compresión formado por una terna de enteros ijk,donde i es la posición de la cadena dentro del diccionario, j es la longitud de lacadena y k es el siguiente símbolo que no forma parte de la cadena. A continuaciónla ventana deslizante se desplaza k + 1 posiciones hacia la dirección del fin de lasecuencia de símbolos.
Una descripción del algoritmo de compresion podría ser:
Sea I el tamaño del diccionario y J el tamaño del buffer, ambos medidosen símbolos.
Introducir los primeros J símbolos en el buffer.
Mientras existan símbolos por codificar:
Sea i la posición de los primeros j símbolos del buffer en eldiccionario y k el símbolo que hace que j no pueda ser mas grande.
Escribir ijk.
Introducir los siguientes j + 1 símbolos en el buffer.