LZSS

LZSS ( Lempel-Ziv-Storer-Szymanski , Lempel-Ziv-Storer-Szymansky [1] ) er en tabsfri datakomprimeringsalgoritme afledt af LZ77 -metoden . Skabt i 1982 af James Storer og Thomas Szymanski. LZSS blev beskrevet i artiklen "Data compression via textual substitution" (data compression through textual substitution), publiceret i tidsskriftet ACM (1982, PP. 928-951). [2]

LZSS er en ordbogskomprimeringsmetode. Den forsøger at erstatte gentagne tegnsekvenser med en ordbogsreference.

Hovedforskellen mellem den originale LZ77 og LZSS er, at i LZ77-metoden kan indtastningen af ​​en ordbogsreference være længere end den streng, den erstatter (det vil sige, at indtastningen af ​​en sådan reference gør det komprimerede fragment længere end det ukomprimerede) . I LZSS-metoden udelades sådanne referencer, hvis længden af ​​strengen er mindre end en eller anden indstilling ("break even"). Desuden bruger LZSS et one-bit flag til at angive, om det næste fragment af den komprimerede strøm er en literal (byte) eller en ordbogsreference (længde og offset værdipar).

Implementeringer

Mange populære arkivere fra 1990'erne - 2000'erne, såsom PKZip , ARJ , RAR , ZOO , LHarc bruger LZSS-metoden i stedet for LZ77 som den primære datapakningsalgoritme. Kodningsskemaer for bogstaver og længde-offset-par er ofte forskellige, men entropikodning ved hjælp af Huffman-koden er mere populær . Mange implementeringer er baseret på kode af Haruhiko Okumura fra 1989. [3] [4]

Kompressionseksempel

Input tekst, 177 bytes:

0: Jeg er Sam 9: 10: Sam jeg er 19: 20: Den Sam-jeg-er! 35: Den Sam-jeg-er! 50: Jeg kan ikke lide 64: den Sam-jeg-er! 79: 80: Kan du lide grønne æg og skinke? 112: 113: Jeg kan ikke lide dem, Sam-jeg-er. 143: Jeg kan ikke lide grønne æg og skinke.

Med et minimumsmatch på to bytes får vi 94 bytes (eksklusive 12 bytes af fragmenttypeflag). Par (offset, længde) er angivet i parentes:

0: Jeg er Sam 9: 10: (5,3) (0,4) 16: 17: Det(4,4)-jeg-er!(19,16) kan jeg ikke lide 45: t(21,14) 49: Har du(58,5) grønne æg og skinke? 78: (49.14) dem,(24.9).(112.15)(92.18).


Noter

  1. KEND INTUIT | Foredrag | Substitutions- eller ordbogsorienterede informationskomprimeringsalgoritmer. Lempel-Ziv metoder . Hentet 17. oktober 2018. Arkiveret fra originalen 17. oktober 2018.
  2. Storer, James A. Datakomprimering via tekstsubstitution  (ubestemt)  // Journal of the ACM . - 1982. - Oktober ( bind 29 , nr. 4 ). - S. 928-951 . - doi : 10.1145/322344.322346 .
  3. Simtel.net spejl. Haruhiko Okumura implementering af 1989. Arkiveret den 3. februar 1999.
  4. Haruhiko Okumura. Historien om datakomprimering i Japan. Arkiveret den 10. januar 2016.

Links

Kildekoden til implementering af LZSS-algoritmen