Demo del compresor LZ77
Observa cómo la ventana deslizante avanza de izquierda a derecha: en cada paso encuentra la referencia hacia atrás más larga dentro de la ventana de búsqueda y emite un token (desplazamiento, longitud, literal).
Sliding-Window Algorithmic Data Compression 🖖
The LZ77 compression algorithm eliminates structural redundancy by substituting repeating data sequences with relative mathematical pointers. Utilizing a sliding operational window, it encodes data as length-distance pairs referencing previously processed buffers. This deterministic referencing dictates the foundation of DEFLATE protocols. The algorithm relies strictly on the statistical probability of repetitive strings, maximizing entropy reduction without fundamentally altering the original mathematical information.
Copiar en vez de repetir 🖖
Cuando el algoritmo encuentra texto que ya ha leído, no vuelve a escribirlo letra por letra: anota algo breve como «retrocede offset caracteres y copia length de ellos». Aquí cada token es (offset, length, literal): una referencia hacia atrás más un carácter nuevo. En la práctica, un texto lleno de palabras o patrones repetidos se reduce mucho, mientras que los datos ya aleatorios apenas se comprimen.
Cuando un token se vuelve una serie larga 🖖
Una coincidencia puede apuntar solo un carácter atrás y aun así copiar más caracteres de los que existen todavía allí. Con offset 1, el decodificador copia cada byte en el mismo instante en que lo escribe, así que un único token como (1, 5, ...) despliega aaaaaa a partir de una sola a. Por eso la clásica codificación por longitud de series (RLE) surge gratis de LZ77: la «copia» se solapa con texto que aún se está generando. Prueba el ejemplo repetitivo para ver cómo una región de coincidencia se extiende más allá de la posición actual.
Problemas de ejemplo
- abracadabra → 6 tokens - "abracadabra": 6 tokens para 11 caracteres, la clásica demostración de referencias hacia atrás
- aabaabaabaab → 3 tokens - "aabaabaabaab": la alta repetición produce una compresión fuerte
- the quick brown fox → 16 tokens - "the quick brown fox": coincidencias escasas en un texto corto
- ATGATCGATCG → 5 tokens - "ATGATCGATCGATCG": motivo biológico repetitivo