comprimeren | decomprimeren | analyseren

> lz77 | sliding | window <

// LZ77 – sliding-window-compressie met woordenboekverwijzingen

0 tekens
0 tekens

>> functies

[DICTIONARY]

Woordenboekcodering

Gebruik offset- en lengtereferenties voor herhaalde patronen.

[SLIDING]

Sliding-window

Houdt een bewegend venster bij om de langste match te vinden.

[FOUNDATION]

Kernalgoritme

Vormt de basis voor ZIP, GZIP, DEFLATE en PNG.

>> technische info

Hoe LZ77 werkt

LZ77 houdt een sliding-window bij met recent geziene data. Voor elke positie zoekt het algoritme in het venster naar de langste overeenkomende substring. Bij een match wordt een referentie (offset, lengte, volgend teken) uitgegeven; anders een literal (0,0,teken). Zo worden herhalingen vervangen door korte referenties en ontstaat verliesloze compressie.

LZ77-voorbeeld

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,)

Waarom LZ77 gebruiken?

  • Verliesloze compressie
  • Geen voorkennis van het dataformaat nodig
  • Past zich aan de patronen in de data aan
  • Relatief eenvoudige implementatie
  • Basis van veel moderne compressie-algoritmen

>> veelgestelde vragen

Wat is LZ77?

LZ77 is een universeel verliesloos datacompressie-algoritme, gepubliceerd door Abraham Lempel en Jacob Ziv in 1977. Het vervangt herhaalde sequenties in de datastroom door verwijzingen naar eerder verschenen delen van de on-gecomprimeerde stream.

Hoe werkt het sliding-window?

Het sliding-window bestaat uit een zoekbuffer (reeds verwerkte data) en een lookahead-buffer (data die nog gecomprimeerd moet worden). Het algoritme zoekt in de zoekbuffer naar de langste match met het begin van de lookahead-buffer en geeft vervolgens een referentie of een literal terug.

LZ77 vs moderne compressie?

LZ77 is de basis van veel moderne compressieschema's. DEFLATE, gebruikt in ZIP en GZIP, combineert LZ77 met Huffman-codering. LZSS vermindert redundantie in LZ77, terwijl LZ78 en LZW het woordenboek op een andere manier opbouwen maar op vergelijkbare principes steunen.

Welke venstergroottes zijn geschikt?

Voor algemene data liggen typische venstergroottes tussen 32 KB en 64 KB. Grotere vensters vinden meer matches maar gebruiken meer geheugen en tijd. DEFLATE gebruikt 32 KB. De lookahead-buffer is meestal 256–512 bytes. De optimale grootte hangt af van de herhalingspatronen in uw data.