
PAQ es una serie de archivadores de compresión de datos sin pérdida que han pasado por un desarrollo colaborativo para alcanzar los primeros puestos en varios benchmarks que miden la relación de compresión (aunque a costa de la velocidad y el uso de memoria). Versiones especializadas de PAQ han ganado el Premio Hutter y el Desafío Calgary . [ 1 ] PAQ es software libre distribuido bajo la Licencia Pública General GNU . [ 2 ]
Algoritmo
PAQ utiliza un algoritmo de mezcla de contextos . La mezcla de contextos está relacionada con la predicción por coincidencia parcial (PPM) en que el compresor se divide en un predictor y un codificador aritmético , pero se diferencia en que la predicción del siguiente símbolo se calcula utilizando una combinación ponderada de estimaciones de probabilidad de un gran número de modelos condicionados a diferentes contextos. A diferencia de PPM, un contexto no necesita ser contiguo. La mayoría de las versiones de PAQ recopilan estadísticas del siguiente símbolo para los siguientes contextos:
- n -gramas ; el contexto son los últimos n bytes antes del símbolo predicho (como en PPM);
- n -gramas de palabras completas , sin tener en cuenta mayúsculas ni minúsculas ni caracteres no alfabéticos (útil en archivos de texto);
- contextos "dispersos", por ejemplo, el segundo y el cuarto byte que preceden al símbolo previsto (útil en algunos formatos binarios);
- Contextos "analógicos", que consisten en los bits de orden superior de palabras anteriores de 8 o 16 bits (útiles para archivos multimedia);
- contextos bidimensionales (útiles para imágenes, tablas y hojas de cálculo); la longitud de la fila se determina hallando la longitud del paso de los patrones de bytes repetitivos;
- Modelos especializados, como ejecutables x86 , imágenes BMP , TIFF o JPEG ; estos modelos solo se activan cuando se detecta el tipo de archivo específico.
Todas las versiones de PAQ predicen y comprimen un bit a la vez, pero difieren en los detalles de los modelos y en cómo se combinan y procesan las predicciones. Una vez determinada la probabilidad del siguiente bit, se codifica mediante codificación aritmética . Existen tres métodos para combinar las predicciones, según la versión:
- En PAQ1 a PAQ3, cada predicción se representa como un par de recuentos de bits.Estos recuentos se combinan mediante una suma ponderada, otorgando mayor peso a los contextos más largos.
- En los apartados PAQ4 a PAQ6, las predicciones se combinan como antes, pero los pesos asignados a cada modelo se ajustan para favorecer a los modelos más precisos.
- En PAQ7 y versiones posteriores, cada modelo genera una probabilidad en lugar de un par de recuentos. Las probabilidades se combinan mediante una red neuronal artificial .
PAQ1SSE y versiones posteriores procesan la predicción mediante estimación de símbolos secundarios (SSE). La predicción combinada con un contexto breve se utiliza para buscar una nueva predicción en una tabla. Tras codificar el bit, se ajusta la entrada de la tabla para reducir el error de predicción. Las etapas de SSE pueden procesarse en paralelo con diferentes contextos o calcularse simultáneamente, promediando las salidas.
Codificación aritmética
Una cadena s se comprime a la cadena de bytes más corta que representa un número x en base 256 big-endian en el rango [0, 1] tal que P( r < s ) ≤ x < P( r ≤ s ), donde P( r < s ) es la probabilidad de que una cadena aleatoria r con la misma longitud que s sea lexicográficamente menor que s . Siempre es posible encontrar un x tal que la longitud de x sea como máximo un byte mayor que el límite de Shannon , −log 2 P( r = s ) bits. La longitud de s se almacena en el encabezado del archivo.
El codificador aritmético en PAQ se implementa manteniendo, para cada predicción, un límite inferior y superior para x , inicialmente [0, 1]. Después de cada predicción, el rango actual se divide en dos partes en proporción a P(0) y P(1), la probabilidad de que el siguiente bit de s sea 0 o 1 respectivamente, dados los bits anteriores de s . El siguiente bit se codifica seleccionando el subrango correspondiente como el nuevo rango.
El número x se descomprime de nuevo a la cadena s mediante una serie idéntica de predicciones de bits (ya que se conocen los bits anteriores de s ). El rango se divide como en la compresión. La porción que contiene x se convierte en el nuevo rango, y el bit correspondiente se añade a s .
En PAQ, los límites inferior y superior del rango se representan en tres partes. Los dígitos más significativos en base 256 son idénticos, por lo que se pueden escribir como los bytes iniciales de x . Los siguientes 4 bytes se almacenan en memoria, de modo que el byte inicial es diferente. Se asume que los bits finales son todos ceros para el límite inferior y todos unos para el límite superior. La compresión finaliza escribiendo un byte más del límite inferior.
Ponderación adaptativa del modelo
En las versiones de PAQ hasta PAQ6, cada modelo asigna un conjunto de contextos distintos a un par de recuentos,, un recuento de bits cero, y, un recuento de 1 bit. Para favorecer el historial reciente, se descarta la mitad del recuento superior a 2 cuando se observa el bit opuesto. Por ejemplo, si el estado actual asociado a un contexto esy se observa un 1, entonces los recuentos se actualizan a (7, 4).
Un bit se codifica aritméticamente con un espacio proporcional a su probabilidad, ya sea P(1) o P(0) = 1 − P(1). Las probabilidades se calculan mediante la suma ponderada de los recuentos de 0 y 1:
- S 0 = Σ i w i n 0 i ,
- S 1 = Σ i w i n 1 i ,
- S = S 0 + S 1 ,
- P(0) = S 0 / S ,
- P(1) = S 1 / S ,
donde w i es el peso del i -ésimo modelo. Hasta PAQ3, los pesos eran fijos y se establecían de forma ad hoc. (Los contextos de orden n tenían un peso de n² ) . A partir de PAQ4, los pesos se ajustaron de forma adaptativa en la dirección que reduciría los errores futuros en el mismo conjunto de contextos. Si el bit a codificar es y , entonces el ajuste del peso es:
- n i = n 0 i + n 1 i ,
- error = y – P(1),
- w i ← w i + [( S n 1 i − S 1 n i ) / ( S 0 S 1 )] error.
Mezcla de redes neuronales
A partir de PAQ7, cada modelo genera una predicción (en lugar de un par de recuentos). Estas predicciones se promedian en el dominio logístico:
- x i = estirar(P i (1)),
- P(1) = aplastar(Σ i w i x i ) ,
donde P(1) es la probabilidad de que el siguiente bit sea un 1, P i (1) es la probabilidad estimada por el i -ésimo modelo, y
- estiramiento( x ) = ln( x / (1 − x )),
- squash( x ) = 1 / (1 + e − x ) (inverso de stretch).
Tras cada predicción, el modelo se actualiza ajustando los pesos para minimizar el coste de codificación:
- w i ← w i + η x i ( y − P(1)),
donde η es la tasa de aprendizaje (normalmente de 0,002 a 0,01), y es el bit predicho y ( y − P(1)) es el error de predicción. El algoritmo de actualización de pesos difiere de la retropropagación en que se omiten los términos P(1)P(0). Esto se debe a que el objetivo de la red neuronal es minimizar el coste de codificación, no el error cuadrático medio .
La mayoría de las versiones de PAQ utilizan un contexto pequeño para seleccionar entre conjuntos de pesos para la red neuronal. Algunas versiones utilizan múltiples redes cuyas salidas se combinan con otra red antes de las etapas SSE. Además, para cada predicción de entrada puede haber varias entradas que son funciones no lineales de P i (1) además de stretch(P(1)).
Modelado de contexto
Cada modelo divide los bits conocidos de s en un conjunto de contextos y asigna a cada contexto un historial de bits representado por un estado de 8 bits. En las versiones hasta PAQ6, el estado representa un par de contadores ( n₀ , n₁ ) . En PAQ7 y versiones posteriores, bajo ciertas condiciones, el estado también representa el valor del último bit o de toda la secuencia. Los estados se asignan a probabilidades mediante una tabla de 256 entradas para cada modelo. Tras una predicción del modelo, la entrada de la tabla se ajusta ligeramente (normalmente en un 0,4 %) para reducir el error de predicción.
En todas las versiones de PAQ8, los estados representables son los siguientes:
- La secuencia exacta de bits para hasta 4 bits.
- Un par de contadores y un indicador del bit más reciente para secuencias de 5 a 15 bits.
- Un par de recuentos para secuencias de 16 a 41 bits.
Para mantener el número de estados en 256, se establecen los siguientes límites para los recuentos representables: (41, 0), (40, 1), (12, 2), (5, 3), (4, 4), (3, 5), (2, 12), (1, 40), (0, 41). Si un recuento excede este límite, el siguiente estado se elige de manera que tenga una proporción similar de n 0 a n 1. Por lo tanto, si el estado actual es ( n 0 = 4, n 1 = 4, último bit = 0) y se observa un 1, el nuevo estado no es ( n 0 = 4, n 1 = 5, último bit = 1). En cambio, es ( n 0 = 3, n 1 = 4, último bit = 1).
La mayoría de los modelos de contexto se implementan como tablas hash . Algunos contextos pequeños se implementan como tablas de búsqueda directa .
Preprocesamiento de texto
Algunas versiones de PAQ, en particular PAsQDa, PAQAR (ambas derivadas de PAQ6) y PAQ8HP1 a PAQ8HP8 (derivadas de PAQ8 y galardonadas con el premio Hutter ), preprocesan los archivos de texto buscando palabras en un diccionario externo y reemplazándolas con códigos de 1 a 3 bytes. Además, las letras mayúsculas se codifican con un carácter especial seguido de la letra minúscula. En la serie PAQ8HP, el diccionario se organiza agrupando palabras relacionadas sintáctica y semánticamente. Esto permite que los modelos utilicen solo los bits más significativos de los códigos del diccionario como contexto.
Comparación
La siguiente tabla es un ejemplo de la prueba de rendimiento de compresión de texto grande realizada por Matt Mahoney, que consiste en un archivo de 10⁹ bytes (1 GB o 0,931 GiB ) de texto de la Wikipedia en inglés .
Consulte la sección de pruebas de compresión sin pérdidas para obtener una lista de pruebas de compresión de archivos.
Historia
A continuación se detallan las principales mejoras introducidas en el algoritmo PAQ. Además, se han implementado numerosas mejoras incrementales, las cuales se omiten.
- PAQ1 fue lanzado el 6 de enero de 2002 por Matt Mahoney. Utilizaba pesos fijos y no incluía un modelo analógico o disperso.
- El PAQ1SSE/PAQ2 fue lanzado el 11 de mayo de 2003 por Serge Osnach. Mejoró significativamente la compresión al añadir una etapa de Estimación de Símbolos Secundarios (SSE) entre el predictor y el codificador. La SSE recibe como entrada un contexto breve y la predicción actual, y genera una nueva predicción a partir de una tabla. Posteriormente, la entrada de la tabla se ajusta para reflejar el valor real del bit.
- PAQ3N , publicado el 9 de octubre de 2003, añadió un modelo disperso.
- PAQ4 , lanzado el 15 de noviembre de 2003 por Matt Mahoney, utilizaba ponderación adaptativa. PAQ5 (18 de diciembre de 2003) y PAQ6 (30 de diciembre de 2003) fueron mejoras menores, incluyendo un nuevo modelo analógico. En este punto, PAQ era competitivo con los mejores compresores PPM y atrajo la atención de la comunidad de compresión de datos, lo que resultó en una gran cantidad de mejoras incrementales hasta abril de 2004. Berto Destasio ajustó los modelos y el esquema de descuento del conteo de bits. Johan de Bock hizo mejoras en la interfaz de usuario. David A. Scott hizo mejoras en el codificador aritmético. Fabio Buffoni hizo mejoras de velocidad.
- Entre el 20 de mayo y el 27 de julio de 2004, Alexander Ratushnyak lanzó siete versiones de PAQAR , que introdujeron mejoras significativas en la compresión mediante la incorporación de nuevos modelos, múltiples mezcladores con ponderaciones seleccionadas según el contexto, una etapa SSE en cada salida del mezclador y un preprocesador para mejorar la compresión de archivos ejecutables de Intel. PAQAR se mantuvo como el compresor mejor clasificado hasta finales de 2004, pero era considerablemente más lento que las versiones anteriores de PAQ.
- Entre el 18 de enero y el 7 de febrero de 2005, Przemyslaw Skibinski publicó cuatro versiones de PASqDa , basadas en PAQ6 y PAQAR, con la adición de un preprocesador de diccionario en inglés. Obtuvo la mejor clasificación en el corpus de Calgary, pero no en la mayoría de los demás benchmarks.
- Una versión modificada de PAQ6 ganó el Desafío de Calgary el 10 de enero de 2004, gracias a Matt Mahoney. Posteriormente, Alexander Ratushnyak la superó con diez versiones de PAQAR. La más reciente se presentó el 5 de junio de 2006 y constaba de datos comprimidos y código fuente del programa, con un total de 589.862 bytes.
- PAQ7 fue lanzado en diciembre de 2005 por Matt Mahoney. PAQ7 es una reescritura completa de PAQ6 y sus variantes (PAQAR, PAsQDa). La relación de compresión era similar a la de PAQAR, pero tres veces más rápida. Sin embargo, carecía de compatibilidad con x86 y un diccionario, por lo que no comprimía los ejecutables de Windows ni los archivos de texto en inglés tan bien como PAsQDa. Incluye modelos para archivos BMP, TIFF y JPEG en color, por lo que los comprime mejor. La principal diferencia con PAQ6 es que utiliza una red neuronal para combinar modelos en lugar de un mezclador de descenso de gradiente. Otra característica es la capacidad de PAQ7 para comprimir imágenes JPEG y de mapa de bits incrustadas en archivos de Excel, Word y PDF.
- PAQ8A se publicó el 27 de enero de 2006 y PAQ8C el 13 de febrero de 2006. Estas fueron versiones experimentales previas al lanzamiento de PAQ8. Corrigieron varios problemas de PAQ7 (compresión deficiente en algunos casos). PAQ8A también incluyó un modelo para comprimir ejecutables (x86).
- PAQ8F se lanzó el 28 de febrero de 2006. PAQ8F presentaba tres mejoras con respecto a PAQ8A: un modelo de contexto más eficiente en cuanto al uso de memoria, un nuevo modelo de contexto indirecto para mejorar la compresión y una nueva interfaz de usuario compatible con la función de arrastrar y soltar en Windows. A diferencia de las variantes PAQ8B/C/D/E, no utiliza un diccionario de inglés.
- PAQ8G fue lanzado el 3 de marzo de 2006 por Przemyslaw Skibinski. PAQ8G es PAQ8F con diccionarios añadidos y otras mejoras, como un TextFilter rediseñado (que no disminuye el rendimiento de compresión en archivos que no son de texto).
- El PAQ8H fue lanzado el 22 de marzo de 2006 por Alexander Ratushnyak y actualizado el 24 de marzo de 2006. El PAQ8H se basa en el PAQ8G con algunas mejoras en el modelo.
- El PAQ8I fue lanzado el 18 de agosto de 2006 por Pavel L. Holoborodko, con correcciones de errores el 24 de agosto, el 4 de septiembre y el 13 de septiembre. Añadió un modelo de imagen en escala de grises para archivos PGM .
- El PAQ8J fue lanzado el 13 de noviembre de 2006 por Bill Pettis. Se basó en el PAQ8F con algunas mejoras en el modelo de texto tomadas del PAQ8HP5. Por lo tanto, no incluyó los diccionarios de texto del PAQ8G ni el modelo PGM del PAQ8I .
- Serge Osnach lanzó una serie de mejoras en el modelado: PAQ8JA el 16 de noviembre de 2006, PAQ8JB el 21 de noviembre y PAQ8JC el 28 de noviembre.
- PAQ8JD fue lanzado el 30 de diciembre de 2006 por Bill Pettis. Esta versión ha sido posteriormente adaptada a Windows de 32 bits para varios procesadores, y a Linux de 32 y 64 bits .
- PAQ8K fue lanzado el 13 de febrero de 2007 por Bill Pettis. Incluye modelos adicionales para archivos binarios.
- El PAQ8L fue lanzado el 8 de marzo de 2007 por Matt Mahoney. Está basado en el PAQ8JD y añade un modelo DMC .
- PAQ8O fue lanzado el 24 de agosto de 2007 por Andreas Morphis. Incluye modelos BMP y JPEG mejorados con respecto a PAQ8L. Opcionalmente, puede compilarse con soporte SSE2 y para Linux de 64 bits. El algoritmo ofrece un rendimiento notablemente superior en sistemas operativos de 64 bits.
- PAQ8P fue lanzado el 25 de agosto de 2008 por Andreas Morphis. Contiene un modelo BMP mejorado y añade un modelo WAV .
- El PAQ8PX fue lanzado el 25 de abril de 2009 por Jan Ondrus. A diferencia de la mayoría de las variantes de PAQ, ha seguido recibiendo actualizaciones de múltiples colaboradores y ha evolucionado a través de muchas versiones. [ 3 ]
- El PAQ8KX fue lanzado el 15 de julio de 2009 por Jan Ondrus. Es una combinación del PAQ8K con el PAQ8PX.
- PAQ8PF fue lanzado el 9 de septiembre de 2009 por LovePimple sin el código fuente (requisito de la licencia GPL ). Su compresión es un 7 % inferior, pero es 7 veces más rápido que PAQ8PX v66 (medido con 1 MB de texto en inglés).
- PAQ9A fue lanzado el 31 de diciembre de 2007 por Matt Mahoney. Se trata de una nueva versión experimental. No incluye modelos para tipos de archivo específicos, cuenta con un preprocesador LZP y admite archivos de más de 2 GB.
- ZPAQ fue lanzado el 12 de marzo de 2009 por Matt Mahoney. Utiliza un nuevo formato de archivo diseñado para que el programa ZPAQ actual pueda descomprimir archivos creados por futuras versiones de ZPAQ [ 4 ] (las distintas variantes de PAQ mencionadas anteriormente no son compatibles con versiones posteriores de esta manera). Esto se logra especificando el algoritmo de descompresión en un programa de código de bytes que se almacena en cada archivo de archivo creado. [ 5 ]
Premios Hutter
La serie PAQ8HP1 a PAQ8HP8 fue publicada por Alexander Ratushnyak entre el 21 de agosto de 2006 y el 18 de enero de 2007 como propuestas para el Premio Hutter . El Premio Hutter es un concurso de compresión de texto que utiliza un conjunto de datos en inglés y XML de 100 MB derivado de la fuente de Wikipedia. La serie PAQ8HP se derivó de PAQ8H. Los programas incluyen diccionarios de preprocesamiento de texto y modelos ajustados específicamente al benchmark. Se eliminaron todos los modelos que no eran de texto. Los diccionarios se organizaron para agrupar palabras relacionadas sintáctica y semánticamente, y para agrupar palabras por sufijo común. La primera estrategia mejora la compresión porque las palabras relacionadas (que probablemente aparezcan en un contexto similar) se pueden modelar en los bits de orden superior de sus códigos de diccionario. La segunda estrategia facilita la compresión del diccionario. El tamaño del programa de descompresión y del diccionario comprimido se incluye en la clasificación del concurso.
El 27 de octubre de 2006 se anunció [ 6 ] que PAQ8HP5 ganó un premio Hutter por compresión sin pérdidas del conocimiento humano de 3.416 € .
El 30 de junio de 2007, el PAQ8HP12 de Ratushnyak recibió un segundo premio Hutter de 1732 €, [ 7 ] mejorando su récord anterior en un 3,46 %.
Derivaciones de PAQ
Al ser software libre , PAQ puede ser modificado y redistribuido por cualquier persona que posea una copia. Esto ha permitido a otros autores bifurcar el motor de compresión de PAQ y añadir nuevas funciones, como una interfaz gráfica de usuario o una mayor velocidad (a costa de la relación de compresión). Entre los derivados más destacados de PAQ se incluyen:
- WinUDA 0.291 , basado en PAQ6 pero más rápido [ 8 ]
- UDA 0.301 , basado en el algoritmo PAQ8I [ 8 ]
- KGB , basado en PAQ6 [ 9 ] (la versión beta se basa en PAQ7).
- Emilcont basado en PAQ6 [ 10 ]
- PeaZip Interfaz gráfica de usuario (para Windows y Linux) para LPAQ , [ 11 ] ZPAQ y varios algoritmos PAQ8* [ 12 ]
- PWCM (PAQ weighted context mixing) es una implementación de código cerrado desarrollada de forma independiente del algoritmo PAQ utilizado en WinRK. [ 13 ]
- PAQCompress es una interfaz gráfica de usuario para varias versiones recientes de PAQ, incluidas las últimas versiones de PAQ8PX, PAQ8PXD y PAQ8PXV. Se actualiza cada vez que se lanza una nueva versión. El software añade automáticamente una extensión al nombre del archivo, la cual puede utilizar para descomprimirlo con la versión correcta de PAQ. El software es de código abierto. [ 14 ]
- PerfectCompress [ 15 ] Es un software de compresión que incluye UCA (ULTRA Compressed Archive). Un formato de compresión que incluía PAQ8PX v42 a v65 y que ahora puede usar PAQ8PF, PAQ8KX o PAQ8PXPRE como compresor UCA predeterminado. Además, PerfectCompress puede comprimir archivos a PAQ8PX v42 a v67 y ZPAQ, y a partir de la versión 6.0, puede comprimir archivos a LPAQ y PAQ8PF beta 1 a beta 3. PerfectCompress v6.10 introdujo soporte para la compresión del recientemente lanzado PAQ8PXPRE. PerfectCompress 6.12 introduce soporte para la serie PAQ8KX. [ 16 ]
- FrontPAQ , una pequeña interfaz gráfica para PAQ. La última versión es FrontPAQ v8, compatible con PAQ8PX, PAQ8PF y FP8. El software ya no se actualiza y se recomienda a los usuarios utilizar PAQCompress, que implementa las últimas versiones de PAQ. [ 17 ]
Véase también
Referencias
- ↑ "El desafío de la compresión/SHA-1" . Mailcom.com . Consultado el 19 de mayo de 2010 .
- ↑ "Página principal de los compresores PAQ" . Consultado el 10 de julio de 2007. Puede
descargar, usar, copiar, modificar y distribuir estos programas bajo los términos de la licencia pública general GNU.
- ↑ "Repositorio PAQ8PX en GitHub" . Consultado el 5 de marzo de 2026 .
- ↑ «Página de manual de Ubuntu: zpaq - Compresor máximo estándar abierto PAQ» . páginas de manual.ubuntu.com .
- ↑ "Especificación ZPAQ Nivel 1" (PDF) . Consultado el 3 de septiembre de 2010 .
- ↑ James Bowery. Alexander Ratushnyak gana su primer premio Hutter . Publicado el 27 de octubre de 2006. Consultado el 30 de octubre de 2006.
- ↑ "Premio a la compresión del conocimiento humano" . Archivado del original el 8 de julio de 2007.
- 1 2 Página principal de dwing Archivada el 24 de febrero de 2007 en Wayback Machine
- ↑ "Página principal del Archivador de la KGB" . Kgbarchiver.net. Archivado del original el 5 de enero de 2009. Consultado el 19 de mayo de 2010 .
- ↑ "EmilCont Ultracompresión" . Freewebs.com. Archivado del original el 10 de septiembre de 2010. Consultado el 19 de mayo de 2010 .
- ↑ Matt Mahoney (2007). "LPAQ" . Consultado el 29 de diciembre de 2013 .
- ↑ "PeaZip" . PeaZip . Consultado el 6 de octubre de 2013 .
- ↑ "Comparativa de compresión de datos de archivos individuales, ordenada por índice de compresión" . Maximumcompression.com. 14 de abril de 2007. Archivado del original el 17 de abril de 2009. Consultado el 19 de mayo de 2010 .
- ↑ Cardona, Moises (10 de septiembre de 2022). "PAQCompress" . moisespr123/PAQCompress . Consultado el 28 de marzo de 2025 .
- ↑ "Sitio web oficial de PerfectCompress" . Moises-studios.110mb.com. 3 de abril de 2010. Archivado del original el 24 de agosto de 2013. Consultado el 19 de mayo de 2010 .
- ↑ "Página oficial de PerfectCompress en Facebook" . Facebook.com. Archivado del original el 9 de enero de 2016. Consultado el 19 de mayo de 2010 .
- ↑ "FrontPAQ - Interfaz gráfica de usuario para PAQ8PF y PAQ8PX" . encode.su . Consultado el 26 de julio de 2019 .
Lecturas adicionales
- David Salomon, Giovanni Motta, (con contribuciones de David Bryant), Manual de compresión de datos , 5.ª edición, Springer, 2009, ISBN 1-84882-902-7, 5.15 PAQ, págs. 314 – 319
- Byron Knoll, Nando de Freitas, Una perspectiva de aprendizaje automático sobre la codificación predictiva con PAQ , Universidad de Columbia Británica, Vancouver, Canadá, 17 de agosto de 2011
Enlaces externos
- Sitio web oficial
- Binarios Linux compilados : descarga de ejecutables de línea de comandos para Linux.
- Software gratuito de compresión de datos
- Algoritmos de compresión sin pérdidas
- Compresión de datos