The first
algorithm to use the
Lempel-Ziv {substitutional compression} schemes, proposed in 1977. LZ77 compression keeps track of the last n bytes of d
ATa seen, and when a phrase is encountered th
AT has already been seen, it outputs a pair of values corresponding to the position of the phrase in the previously-seen buffer of d
ATa, and the length of the phrase. In effect the compressor moves a fixed-size "window" over the d
ATa (generally referred to as a "sliding window"), with the position part of the (position, length) pair referring to the position of the phrase within the window. The most commonly used
algorithms are derived from the
LZSS scheme described by James Storer and Thomas Szymanski in 1982. In this the compressor maintains a window of size N bytes and a "lookahead buffer", the contents of which it tries to find a m
ATch for in the window: while (lookAheadBuffer not empty) { get a pointer (position, m
ATch) to the longest m
ATch in the window for the lookahead buffer if (length > MINIMUM_M
ATCH_LENGTH) { output a (position, length) pair shift the window length characters along } else { output the first character in the lookahead buffer shift the window 1 character along } } Decompression is simple and fast: whenever a (POSITION, LENGTH) pair is encountered, go to th
AT POSITION in the window and copy LENGTH bytes to the output. Sliding-window-based schemes can be simplified by numbering the input text characters mod N, in effect cre
ATing a circular buffer. The sliding window approach autom
ATically cre
ATes the
LRU effect which must be done explicitly in
LZ78 schemes. Variants of this method apply additional compression to the output of the LZSS compressor, which include a simple variable-length code (
LZB), dynamic
Huffman coding (
LZH), and
Shannon-Fano coding (
ZIP 1.x), all of which result in a certain degree of improvement over the basic scheme, especially when the d
ATa are r
ATher random and the LZSS compressor has little effect. An algorithm was developed which combines the ideas behind LZ77 and LZ78 to produce a hybrid called
LZFG. LZFG uses the standard sliding window, but stores the d
ATa in a modified
trie d
ATa structure and produces as output the position of the text in the trie. Since LZFG only inserts complete *phrases* into the dictionary, it should run faster than other LZ77-based compressors. All popular archivers (
arj,
lha,
zip,
zoo) are vari
ATions on LZ77. [comp.compression
FAQ]. (1995-04-07)
In addition suitable contents:
[ 2 ] [ = ] [ ad ] [ ai ] [ al ] [ algorithm ] [ am ] [ an ] [ app ] [ ar ] [ arc ] [ archive ] [ arj ] [ as ] [ AT ] [ AT ] [ au ] [ B ] [ b ] [ ba ] [ base ] [ be ] [ bi ] [ br ] [ bs ] [ buffer ] [ by ] [ byte ] [ C ] [ ca ] [ ch ] [ char ] [ character ] [ ci ] [ circular buffer ] [ ck ] [ cl ] [ co ] [ code ] [ com ] [ complete ] [ compress ] [ compression ] [ con ] [ cr ] [ cu ] [ D ] [ dATa ] [ dATa structure ] [ dd ] [ de ] [ degree ] [ ding ] [ do ] [ du ] [ E ] [ ec ] [ ed ] [ ee ] [ eg ] [ eh ] [ er ] [ era ] [ es ] [ et ] [ FAQ ] [ fas ] [ fi ] [ file ] [ fix ] [ fm ] [ fo ] [ for ] [ fr ] [ G ] [ ge ] [ gen ] [ gr ] [ gt ] [ h ] [ hAT ] [ hm ] [ hr ] [ id ] [ ie ] [ il ] [ in ] [ inc ] [ include ] [ input ] [ int ] [ IO ] [ io ] [ IP ] [ ir ] [ is ] [ IT ] [ it ] [ J ] [ ke ] [ ki ] [ la ] [ ld ] [ Lex ] [ lha ] [ li ] [ lr ] [ LRU ] [ ls ] [ lt ] [ lu ] [ ly ] [ M ] [ ma ] [ man ] [ method ] [ mm ] [ mo ] [ mod ] [ module ] [ mp ] [ mu ] [ N ] [ na ] [ nc ] [ ne ] [ ng ] [ nl ] [ nn ] [ no ] [ np ] [ ns ] [ nu ] [ O ] [ om ] [ op ] [ OS ] [ OSI ] [ output ] [ pa ] [ pe ] [ ph ] [ pl ] [ ply ] [ point ] [ pointer ] [ pop ] [ POS ] [ pr ] [ pt ] [ py ] [ Q ] [ query ] [ random ] [ rc ] [ re ] [ ro ] [ roach ] [ ru ] [ run ] [ S ] [ sc ] [ se ] [ sh ] [ SI ] [ si ] [ sit ] [ sk ] [ sl ] [ so ] [ spec ] [ st ] [ standard ] [ store ] [ struct ] [ su ] [ T ] [ tc ] [ text ] [ th ] [ Thomas ] [ to ] [ tp ] [ tr ] [ track ] [ tt ] [ um ] [ us ] [ V ] [ va ] [ value ] [ var ] [ variable ] [ ve ] [ vi ] [ while ] [ win ] [ yt ] [ Z ] [ zip ] [ zoo ]