The first
algorithm to use the
Lempel-Ziv {substitutional compression} schemes, proposed in 1977. LZ77 compression keeps track of the last n b
Ytes of data seen, and when a phrase is encountered that has alread
Y been seen, it outputs a pair of values corresponding to the position of the phrase in the previousl
Y-seen buffer of data, and the length of the phrase. In effect the compressor moves a fixed-size "window" over the data (generall
Y 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 commonl
Y used
algorithms are derived from the
LZSS scheme described b
Y James Storer and Thomas Sz
Ymanski in 1982. In this the compressor maintains a window of size N b
Ytes and a "lookahead buffer", the contents of which it tries to find a match for in the window: while (lookAheadBuffer not empt
Y) { get a pointer (position, match) to the longest match in the window for the lookahead buffer if (length > MINIMUM_MATCH_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 that POSITION in the window and cop
Y LENGTH b
Ytes to the output. Sliding-window-based schemes can be simplified b
Y numbering the input text characters mod N, in effect creating a circular buffer. The sliding window approach automaticall
Y creates the
LRU effect which must be done explicitl
Y in
LZ78 schemes. Variants of this method appl
Y additional compression to the output of the LZSS compressor, which include a simple variable-length code (
LZB), d
Ynamic
Huffman coding (
LZH), and
Shannon-Fano coding (
ZIP 1.x), all of which result in a certain degree of improvement over the basic scheme, especiall
Y when the data are rather random and the LZSS compressor has little effect. An algorithm was developed which combines the ideas behind LZ77 and LZ78 to produce a h
Ybrid called
LZFG. LZFG uses the standard sliding window, but stores the data in a modified
trie data structure and produces as output the position of the text in the trie. Since LZFG onl
Y inserts complete *phrases* into the dictionar
Y, it should run faster than other LZ77-based compressors. All popular archivers (
arj,
lha,
zip,
zoo) are variations on LZ77. [comp.compression
FAQ]. (1995-04-07)
Yle="border-width:thin; border-color:#333333; border-stYle:dashed; padding:5px;" align="left">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 ]