compresser | décompresser | analyser

> lz77 | sliding | window <

// LZ77 – compression à fenêtre glissante avec références de dictionnaire

0 caractères
0 caractères

>> fonctionnalités

[DICTIONARY]

Codage par dictionnaire

Réutilise les motifs répétés via des références de décalage et de longueur.

[SLIDING]

Fenêtre glissante

Maintient une fenêtre mobile pour trouver les plus longues correspondances.

[FOUNDATION]

Algorithme de base

Constitue la base de ZIP, GZIP, DEFLATE et PNG.

>> informations techniques

Comment fonctionne LZ77

LZ77 maintient une fenêtre glissante de données récemment vues. Pour chaque position, l’algorithme cherche dans la fenêtre la sous-chaîne la plus longue qui correspond. S’il en trouve une, il émet une référence (décalage, longueur, caractère suivant). Sinon, il émet un littéral (0,0,caractère). Les motifs répétés sont ainsi remplacés par de courtes références, ce qui permet une compression sans perte.

Exemple LZ77

Text: "ABCABCABC"
Window=4, Lookahead=4

Position 0: 'A' - no match
  → (0,0,A)

Position 1: 'B' - no match
  → (0,0,B)

Position 2: 'C' - no match
  → (0,0,C)

Position 3: 'ABC' - matches at offset 3
  → (3,3,A)

Position 7: 'BC' - matches at offset 3
  → (3,2,)

Output: (0,0,A)(0,0,B)(0,0,C)(3,3,A)(3,2,)

Pourquoi utiliser LZ77 ?

  • Compression sans perte
  • Aucune connaissance préalable des données requise
  • S’adapte aux motifs de vos données
  • Implémentation relativement simple
  • Base de nombreux algorithmes de compression modernes

>> questions fréquentes

Qu’est-ce que LZ77 ?

LZ77 est un algorithme universel de compression de données sans perte publié par Abraham Lempel et Jacob Ziv en 1977. Il remplace les répétitions dans le flux par des références à une copie unique déjà présente dans le flux non compressé.

Comment fonctionne la fenêtre glissante ?

La fenêtre glissante est composée d’un tampon de recherche (données déjà traitées) et d’un tampon de lookahead (données à compresser). L’algorithme cherche dans le tampon de recherche la plus longue correspondance avec le début du tampon de lookahead, puis émet une référence ou un littéral.

LZ77 vs algorithmes modernes ?

LZ77 est la base de nombreux algorithmes de compression modernes. DEFLATE, utilisé dans ZIP et GZIP, combine LZ77 avec le codage de Huffman. LZSS réduit la redondance de LZ77, tandis que LZ78 et LZW construisent le dictionnaire différemment tout en suivant les mêmes principes.

Quelles tailles de fenêtre choisir ?

Les tailles de fenêtre typiques varient entre 32 et 64 Ko pour des données générales. Des fenêtres plus grandes trouvent plus de correspondances mais consomment davantage de mémoire et de temps. DEFLATE utilise 32 Ko. Le tampon de lookahead est souvent de 256 à 512 octets. La taille idéale dépend des motifs de répétition de vos données.