LZMA
# LZMA

El Algoritmo de cadena de Lempel-Ziv-Markov (Lempel–Ziv–Markov chain algorithm) o LZMA, es un algoritmo de compresión de datos sin pérdidas.

Lleva desarrollándose desde 1996 o 1998 por Igor Pavlov y se utilizó por primera vez en el formato 7z del archivador 7-Zip. Este algoritmo utiliza un esquema de compresión de diccionario algo similar al algoritmo LZ77 publicado por Abraham Lempel y Jacob Ziv en 1977 y se caracteriza por un alto ratio de compresión (generalmente superior al de bzip2) y un tamaño de diccionario de compresión variable (hasta 4 GB), manteniendo una velocidad de descompresión similar a la de otros algoritmos de compresión de uso común.

LZMA2 es un formato contenedor simple que puede incluir tanto datos sin comprimir como datos LZMA, posiblemente con múltiples parámetros de codificación LZMA diferentes. LZMA2 soporta compresión y descompresión multihilo arbitrariamente escalable y compresión eficiente de datos que son parcialmente incompresibles.

## Descripción

LZMA utiliza un algoritmo de compresión por diccionario (una variante de LZ77 con diccionarios de gran tamaño y soporte especial para distancias de coincidencia utilizadas repetidamente), cuya salida se codifica después con un rango de codificación, utilizando un modelo complejo para hacer una predicción de probabilidad de cada bit. El compresor de diccionario encuentra coincidencias utilizando sofisticadas estructuras de datos de diccionario, y produce un flujo de símbolos literales y referencias de frases, que es codificado bit a bit por el codificador de rango: son posibles muchas codificaciones, y se utiliza un algoritmo de programación dinámica para seleccionar una óptima bajo ciertas aproximaciones.

