Knowledge

LZ77 and LZ78

Source đź“ť

2342: 2332: 567:, where index is the index to a dictionary entry representing a previously seen sequence, and token is the next token from the input that makes this entry unique in the dictionary. Note how the algorithm is greedy, and so nothing is added to the table until a unique making token is found. The algorithm is to initialize last matching index = 0 and next available index = 1 and then, for each token of the input stream, the dictionary searched for a match: 694:-structured dictionary is full, a simple re-use/recovery algorithm is used to ensure that the dictionary can keep adapting to changing data. A counter cycles through the dictionary. When a new entry is needed, the counter steps through the dictionary until a leaf node is found (a node with no dependents). This is deleted and the space re-used for the new entry. This is simpler to implement than LRU or LFU and achieves equivalent performance. 1054: 1042: 346:
characters from that position into the current position". How can ten characters be copied over when only four of them are actually in the buffer? Tackling one byte at a time, there is no problem serving this request, because as a byte is copied over, it may be fed again as input to the copy command.
562:
The LZ78 algorithms compress sequential data by building a dictionary of token sequences from the input, and then replacing the second and subsequent occurrence of the sequence in the data stream with a reference to the dictionary entry. The observation is that the number of repeated sequences is a
530:
In the PalmDoc format, a length–distance pair is always encoded by a two-byte sequence. Of the 16 bits that make up these two bytes, 11 bits go to encoding the distance, 3 go to encoding the length, and the remaining two are used to make sure the decoder can identify the first byte as the beginning
553:. Literals, lengths, and a symbol to indicate the end of the current block of data are all placed together into one alphabet. Distances can be safely placed into a separate alphabet; because a distance only occurs just after a length, it cannot be mistaken for another kind of symbol or vice versa. 511:
Even though all LZ77 algorithms work by definition on the same basic principle, they can vary widely in how they encode their compressed data to vary the numerical ranges of a length–distance pair, alter the number of bits consumed for a length–distance pair, and distinguish their length–distance
454:
Considering the above, especially if the compression of data runs is expected to predominate, the window search should begin at the end of the window and proceed backwards, since run patterns, if they exist, will be found first and allow the search to terminate, absolutely if the current maximal
130:
that can be achieved. It is then shown that there exists finite lossless encoders for every sequence that achieve this bound as the length of the sequence grows to infinity. In this sense an algorithm based on this scheme produces asymptotically optimal encodings. This result can be proven more
102:
Since LZ77 encodes and decodes from a sliding window over previously seen characters, decompression must always start at the beginning of the input. Conceptually, LZ78 decompression could allow random access to the input if the entire dictionary were known in advance. However, in practice the
520:
The algorithm illustrated in Lempel and Ziv's original 1977 article outputs all its data three values at a time: the length and distance of the longest match found in the buffer, and the literal that followed that match. If two successive characters in the input stream could be encoded only as
351:
of the copy-from position. The operation is thus equivalent to the statement "copy the data you were given and repetitively paste it until it fits". As this type of pair repeats a single copy of data multiple times, it can be used to incorporate a flexible and easy form of
335:. The encoder needs to keep this data to look for matches, and the decoder needs to keep this data to interpret the matches the encoder refers to. The larger the sliding window is, the longer back the encoder may search for creating references. 374:. Then as the search pointer proceeds past the search window and forward, as far as the run pattern repeats in the input, the search and input pointers will be in sync and match characters until the run pattern is interrupted. Then 671:
is that when a match is not found, the current input stream character is assumed to be the first character of an existing string in the dictionary (since the dictionary is initialized with all possible characters), so only the
299:
LZ77 algorithms achieve compression by replacing repeated occurrences of data with references to a single copy of that data existing earlier in the uncompressed data stream. A match is encoded by a pair of numbers called a
563:
good measure of the non random nature of a sequence. The algorithms represent the dictionary as an n-ary tree where n is the number of tokens used to form token sequences. Each dictionary entry is of the form
256: 571:. If a match is found, then last matching index is set to the index of the matching entry, nothing is output, and last matching index is left representing the input so far. Input is processed until a match is 538:, the size in bytes of a length–distance pair can be specified inside the first byte of the length–distance pair itself; depending on whether the first byte begins with a 0, 10, 110, or 111 (when read in 601:
is longer than the original input but compression ratio improves considerably as the dictionary grows, and in binary the indexes need not be represented by any more than the minimum number of bits.
440:
characters are read. But mirroring the encoding process, since the pattern is repetitive, the read pointer need only trail in sync with the write pointer by a fixed distance equal to the run length
359:
Another way to see things is as follows: While encoding, for the search pointer to continue finding matched pairs past the end of the search window, all characters from the first match at offset
455:
matching sequence length is met, or judiciously, if a sufficient length is met, and finally for the simple possibility that the data is more recent and may correlate better with the next input.
1073: 579:, and the algorithm outputs last matching index, followed by token, then resets last matching index = 0 and increments next available index. As an example consider the sequence of tokens 407:
characters are read to the output, this corresponds to a single run unit appended to the output buffer. At this point, the read pointer could be thought of as only needing to return int(
527:
improves on LZ77 by using a 1-bit flag to indicate whether the next chunk of data is a literal or a length–distance pair, and using literals if a length–distance pair would be longer.
338:
It is not only acceptable but frequently useful to allow length-distance pairs to specify a length that actually exceeds the distance. As a copy command, this is puzzling: "Go back
667:
is an LZ78-based algorithm that uses a dictionary pre-initialized with all possible characters (symbols) or emulation of a pre-initialized dictionary. The main improvement of
285: 363:
and forward to the end of the search window must have matched input, and these are the (previously seen) characters that comprise a single run unit of length
166: 171: 122:
In the second of the two papers that introduced these algorithms they are analyzed as encoders defined by finite-state machines. A measure analogous to
862: 1095: 1065: 1121: 686:
is an LZ78-based algorithm that was developed for use in real-time communications systems (originally modems) and standardized by CCITT/ITU as
593:. Note that the last A is not represented yet as the algorithm cannot know what comes next. In practice an EOF marker is added to the input – 628:. The token "B" is output, preceded by the sequence represented by dictionary entry 1. Entry 1 is an 'A' (followed by "entry 0" – nothing) so 1166: 836: 676:
is output (which may be the pre-initialized dictionary index corresponding to the previous (or the initial) input character). Refer to the
1834: 1645: 1534: 72:
and others. Besides their academic influence, these algorithms formed the basis of several ubiquitous compression schemes, including
69: 914: 2376: 2040: 1863: 1657: 1348: 787: 733: 524: 65: 2045: 1622: 683: 347:
When the copy-from position makes it to the initial destination position, it is consequently fed data that was pasted from the
955: 1775: 885: 854: 481:
d := distance to start of match l := length of match c := char following match in input
2152: 1890: 1829: 1640: 1590: 1413: 1273: 1258: 1159: 2265: 2275: 2113: 1964: 1883: 1677: 1058: 1046: 126:
is developed for individual sequences (as opposed to probabilistic ensembles). This measure gives a bound on the
2248: 1868: 1662: 1450: 17: 2345: 1381: 323:
To spot matches, the encoder must keep track of some amount of the most recent data, such as the last 2 
2010: 1103: 1077: 2335: 2238: 1780: 1338: 1152: 1129: 823: 99:
constructed by LZ78—however, they are only equivalent when the entire data is intended to be decompressed.
2381: 1328: 1323: 103:
dictionary is created during encoding and decoding by creating a new phrase whenever a token is output.
2270: 2197: 2035: 2015: 1959: 1617: 1408: 1211: 2371: 2280: 2221: 2147: 1995: 1585: 1580: 1435: 1278: 604:
Decompression consists of rebuilding the dictionary from the compressed sequence. From the sequence
81: 38: 747: 2285: 1858: 1652: 1353: 801: 677: 668: 664: 95:. LZ77 maintains a sliding window during compression. This was later shown to be equivalent to the 61: 2226: 1597: 1484: 1440: 1253: 1236: 1226: 703: 107: 1851: 1602: 1386: 1231: 796: 742: 127: 2123: 1025: 2255: 1128:. Faculty of Electrical Engineering and Computing, University of Zagreb. 1997. Archived from 1102:. Faculty of Electrical Engineering and Computing, University of Zagreb. 1997. Archived from 516:(raw data encoded as itself, rather than as part of a length–distance pair). A few examples: 463:
The following pseudocode is a reproduction of the LZ77 compression algorithm sliding window.
1939: 1401: 1363: 1184: 8: 2170: 2061: 2020: 2005: 1974: 1969: 1878: 1785: 1718: 1687: 1672: 1455: 353: 123: 111: 2243: 2213: 2192: 2098: 2030: 1924: 1612: 1428: 1418: 1313: 1293: 1288: 760: 1824: 921: 261: 2187: 2175: 2157: 2025: 1909: 1846: 1692: 1607: 1563: 1524: 1206: 951: 640:, and B (preceded by nothing) is added to the output. Finally a dictionary entry for 85: 542:
bit orientation), the length of the entire length–distance pair can be 1 to 4 bytes.
2162: 2118: 2091: 2086: 1944: 1929: 1839: 1748: 1743: 1572: 1305: 1283: 1175: 1003: 806: 764: 752: 151: 92: 785:(September 1978). "Compression of Individual Sequences via Variable-Rate Coding". 2081: 1895: 1819: 1800: 1770: 1738: 1704: 1263: 1201: 535: 327:, 4 KB, or 32 KB. The structure in which this data is held is called a 60:
respectively. These two algorithms form the basis for many variations including
1873: 1667: 1396: 1391: 1248: 1221: 1193: 782: 728: 550: 45: 2365: 2180: 2128: 1795: 1790: 1765: 1697: 1216: 810: 756: 473:
match := longest repeated occurrence of input that begins in window
436:
characters (or maybe fewer on the last return), and repeat until a total of
2301: 1268: 1243: 1144: 485:
d := 0 l := 0 c := first char of input
2260: 2138: 1934: 1810: 1760: 971: 2317: 2108: 2103: 1990: 1949: 1755: 910: 539: 132: 1074:
Faculty of Electrical Engineering and Computing, University of Zagreb
997: 778: 731:(May 1977). "A Universal Algorithm for Sequential Data Compression". 724: 49: 41: 826:
Adaptive data compression system with systolic string matching logic
251:{\displaystyle \limsup _{n}{\frac {1}{n}}l_{LZ78}(X_{1:n})\leq h(X)} 2231: 2076: 1733: 324: 2000: 1474: 1423: 687: 546: 77: 886:"IEEE Medal of Honor Goes to Data Compression Pioneer Jacob Ziv" 1514: 1053: 1041: 429:≠ 0) times to the start of that single buffered run unit, read 545:
As of 2008, the most popular LZ77-based compression method is
2349: 1954: 1547: 1494: 500:+ 1 chars from front of input append s to back of window 521:
literals, the length of the length–distance pair would be 0.
1504: 1358: 1343: 1333: 1026:
https://math.mit.edu/~goemans/18310S15/lempel-ziv-notes.pdf
691: 620:
is added to the output. The second pair from the input is
291:
Similar theorems apply to other versions of LZ algorithm.
1479: 1445: 304:, which is equivalent to the statement "each of the next 73: 890:
IEEE Spectrum: Technology, Engineering, and Science News
855:"Milestones:Lempel–Ziv Data Compression Algorithm, 1977" 589:
and the output sequence of the compressed data would be
168:
is a binary source that is stationary and ergodic, then
312:
characters behind it in the uncompressed stream". (The
1126:
Data Compression Reference Center: RASIP working group
1100:
Data Compression Reference Center: RASIP working group
1070:
Data Compression Reference Center: RASIP working group
264: 154: 597:
for example. Note also that in this case the output
174: 950:(2nd ed.). Hoboken, N.J: Wiley-Interscience. 279: 250: 160: 863:Institute of Electrical and Electronics Engineers 624:and results in entry number 2 in the dictionary, 496:+ 1 chars from front of window s := pop 2363: 451:characters have been copied to output in total. 176: 575:found. Then a new dictionary entry is created, 636:is added to the dictionary as the next entry, 308:characters is equal to the characters exactly 1160: 534:In the implementation used for many games by 1174: 945: 612:, and the first from the sequence would be 110:in 2004. In 2021 Jacob Ziv was awarded the 1167: 1153: 909: 114:for his involvement in their development. 998:"An Explanation of the Deflate Algorithm" 946:Cover, Thomas M.; Thomas, Joy A. (2006). 800: 777: 746: 723: 608:the first entry is always the terminator 577:dictionary = {last matching index, token} 117: 52:in 1977 and 1978. They are also known as 995: 331:, which is why LZ77 is sometimes called 788:IEEE Transactions on Information Theory 734:IEEE Transactions on Information Theory 378:characters have been matched in total, 14: 2364: 1148: 583:which would assemble the dictionary; 131:directly, as for example in notes by 996:Feldspar, Antaeus (23 August 1997). 680:article for implementation details. 656:removing the spaces and EOF marker. 27:Lossless data compression algorithms 287:is the entropy rate of the source. 24: 883: 506: 25: 2393: 1034: 837:"Lossless Data Compression: LZ78" 2341: 2340: 2331: 2330: 1052: 1040: 2377:Lossless compression algorithms 1019: 989: 586:0 {0,_} 1 {0,A} 2 {1,B} 3 {0,B} 964: 948:Elements of information theory 939: 903: 877: 847: 829: 817: 771: 717: 632:is added to the output. Next 274: 268: 245: 239: 230: 211: 143:LZ78 is universal and entropic 138:Formally, (Theorem 13.5.2 ). 13: 1: 710: 458: 106:The algorithms were named an 569:{last matching index, token} 531:of such a two-byte sequence. 91:They are both theoretically 7: 972:"QFS Compression (RefPack)" 859:IEEE Global History Network 697: 565:dictionary = {index, token} 10: 2398: 2222:Compressed data structures 1544:RLE + BWT + MTF + Huffman 1212:Asymmetric numeral systems 333:sliding-window compression 2326: 2310: 2294: 2212: 2137: 2069: 2060: 1983: 1917: 1908: 1809: 1726: 1717: 1633: 1581:Discrete cosine transform 1571: 1562: 1511:LZ77 + Huffman + context 1464: 1374: 1304: 1192: 1183: 576: 568: 564: 258:with probability 1. Here 39:lossless data compression 2286:Smallest grammar problem 811:10.1109/TIT.1978.1055934 757:10.1109/TIT.1977.1055714 549:; it combines LZSS with 316:is sometimes called the 2227:Compressed suffix array 1776:Nyquist–Shannon theorem 648:is output resulting in 557: 389:Upon decoding , again, 294: 44:published in papers by 1076:. 1997. Archived from 659: 492:(d, l, c) discard 281: 252: 162: 128:data compression ratio 118:Theoretical efficiency 2256:Kolmogorov complexity 2124:Video characteristics 1501:LZ77 + Huffman + ANS 824:US Patent No. 5532693 282: 253: 163: 2346:Compression software 1940:Compression artifact 1896:Psychoacoustic model 1096:"The LZ78 algorithm" 1066:"The LZ77 algorithm" 1061:at Wikimedia Commons 1049:at Wikimedia Commons 386:, and the code is . 342:characters and copy 302:length-distance pair 262: 172: 152: 2336:Compression formats 1975:Texture compression 1970:Standard test image 1786:Silence compression 1122:"The LZW algorithm" 913:(14 October 2005). 674:last matching index 469:input is not empty 370:, which must equal 354:run-length encoding 146: —  124:information entropy 112:IEEE Medal of Honor 97:explicit dictionary 2382:Israeli inventions 2244:Information theory 2099:Display resolution 1925:Chroma subsampling 1314:Byte pair encoding 1259:Shannon–Fano–Elias 915:"Lempel–Ziv notes" 884:Joanna, Goodrich. 400:. When the first 277: 248: 184: 158: 144: 80:algorithm used in 2359: 2358: 2208: 2207: 2158:Deblocking filter 2056: 2055: 1904: 1903: 1713: 1712: 1558: 1557: 1132:on 7 January 2013 1106:on 7 January 2013 1080:on 7 January 2013 1057:Media related to 1045:Media related to 1002:comp.compression 957:978-0-471-24195-9 280:{\textstyle h(X)} 193: 175: 142: 93:dictionary coders 16:(Redirected from 2389: 2372:Data compression 2344: 2343: 2334: 2333: 2163:Lapped transform 2067: 2066: 1945:Image resolution 1930:Coding tree unit 1915: 1914: 1724: 1723: 1569: 1568: 1190: 1189: 1176:Data compression 1169: 1162: 1155: 1146: 1145: 1141: 1139: 1137: 1115: 1113: 1111: 1089: 1087: 1085: 1056: 1044: 1028: 1023: 1017: 1016: 1014: 1012: 993: 987: 986: 984: 982: 968: 962: 961: 943: 937: 936: 934: 932: 926: 920:. Archived from 919: 907: 901: 900: 898: 896: 881: 875: 874: 872: 870: 851: 845: 844: 833: 827: 821: 815: 814: 804: 775: 769: 768: 750: 721: 655: 651: 647: 643: 639: 635: 631: 627: 623: 619: 615: 611: 607: 600: 596: 592: 582: 578: 570: 566: 286: 284: 283: 278: 257: 255: 254: 249: 229: 228: 210: 209: 194: 186: 183: 167: 165: 164: 159: 147: 21: 2397: 2396: 2392: 2391: 2390: 2388: 2387: 2386: 2362: 2361: 2360: 2355: 2322: 2306: 2290: 2271:Rate–distortion 2204: 2133: 2052: 1979: 1900: 1805: 1801:Sub-band coding 1709: 1634:Predictive type 1629: 1554: 1521:LZSS + Huffman 1471:LZ77 + Huffman 1460: 1370: 1306:Dictionary type 1300: 1202:Adaptive coding 1179: 1173: 1135: 1133: 1120: 1109: 1107: 1094: 1083: 1081: 1064: 1037: 1032: 1031: 1024: 1020: 1010: 1008: 994: 990: 980: 978: 970: 969: 965: 958: 944: 940: 930: 928: 924: 917: 908: 904: 894: 892: 882: 878: 868: 866: 853: 852: 848: 841:cs.stanford.edu 835: 834: 830: 822: 818: 783:Lempel, Abraham 776: 772: 748:10.1.1.118.8921 729:Lempel, Abraham 722: 718: 713: 704:Lempel–Ziv–Stac 700: 662: 653: 649: 645: 644:is created and 641: 637: 633: 629: 625: 621: 617: 613: 609: 605: 598: 594: 590: 587: 580: 560: 536:Electronic Arts 509: 507:Implementations 504: 461: 446: 435: 428: 417: 406: 399: 369: 297: 289: 263: 260: 259: 218: 214: 199: 195: 185: 179: 173: 170: 169: 153: 150: 149: 145: 120: 28: 23: 22: 15: 12: 11: 5: 2395: 2385: 2384: 2379: 2374: 2357: 2356: 2354: 2353: 2338: 2327: 2324: 2323: 2321: 2320: 2314: 2312: 2308: 2307: 2305: 2304: 2298: 2296: 2292: 2291: 2289: 2288: 2283: 2278: 2273: 2268: 2263: 2258: 2253: 2252: 2251: 2241: 2236: 2235: 2234: 2229: 2218: 2216: 2210: 2209: 2206: 2205: 2203: 2202: 2201: 2200: 2195: 2185: 2184: 2183: 2178: 2173: 2165: 2160: 2155: 2150: 2144: 2142: 2135: 2134: 2132: 2131: 2126: 2121: 2116: 2111: 2106: 2101: 2096: 2095: 2094: 2089: 2084: 2073: 2071: 2064: 2058: 2057: 2054: 2053: 2051: 2050: 2049: 2048: 2043: 2038: 2033: 2023: 2018: 2013: 2008: 2003: 1998: 1993: 1987: 1985: 1981: 1980: 1978: 1977: 1972: 1967: 1962: 1957: 1952: 1947: 1942: 1937: 1932: 1927: 1921: 1919: 1912: 1906: 1905: 1902: 1901: 1899: 1898: 1893: 1888: 1887: 1886: 1881: 1876: 1871: 1866: 1856: 1855: 1854: 1844: 1843: 1842: 1837: 1827: 1822: 1816: 1814: 1807: 1806: 1804: 1803: 1798: 1793: 1788: 1783: 1778: 1773: 1768: 1763: 1758: 1753: 1752: 1751: 1746: 1741: 1730: 1728: 1721: 1715: 1714: 1711: 1710: 1708: 1707: 1705:Psychoacoustic 1702: 1701: 1700: 1695: 1690: 1682: 1681: 1680: 1675: 1670: 1665: 1660: 1650: 1649: 1648: 1637: 1635: 1631: 1630: 1628: 1627: 1626: 1625: 1620: 1615: 1605: 1600: 1595: 1594: 1593: 1588: 1577: 1575: 1573:Transform type 1566: 1560: 1559: 1556: 1555: 1553: 1552: 1551: 1550: 1542: 1541: 1540: 1537: 1529: 1528: 1527: 1519: 1518: 1517: 1509: 1508: 1507: 1499: 1498: 1497: 1489: 1488: 1487: 1482: 1477: 1468: 1466: 1462: 1461: 1459: 1458: 1453: 1448: 1443: 1438: 1433: 1432: 1431: 1426: 1416: 1411: 1406: 1405: 1404: 1394: 1389: 1384: 1378: 1376: 1372: 1371: 1369: 1368: 1367: 1366: 1361: 1356: 1351: 1346: 1341: 1336: 1331: 1326: 1316: 1310: 1308: 1302: 1301: 1299: 1298: 1297: 1296: 1291: 1286: 1281: 1271: 1266: 1261: 1256: 1251: 1246: 1241: 1240: 1239: 1234: 1229: 1219: 1214: 1209: 1204: 1198: 1196: 1187: 1181: 1180: 1172: 1171: 1164: 1157: 1149: 1143: 1142: 1117: 1116: 1091: 1090: 1062: 1059:LZ78 algorithm 1050: 1047:LZ77 algorithm 1036: 1035:External links 1033: 1030: 1029: 1018: 988: 963: 956: 938: 927:on 28 May 2021 902: 876: 865:. 22 July 2014 846: 828: 816: 802:10.1.1.14.2892 795:(5): 530–536. 770: 741:(3): 337–343. 715: 714: 712: 709: 708: 707: 699: 696: 661: 658: 585: 559: 556: 555: 554: 551:Huffman coding 543: 532: 528: 522: 508: 505: 465: 460: 457: 444: 433: 426: 415: 404: 397: 367: 329:sliding window 296: 293: 276: 273: 270: 267: 247: 244: 241: 238: 235: 232: 227: 224: 221: 217: 213: 208: 205: 202: 198: 192: 189: 182: 178: 177:lim sup 161:{\textstyle X} 157: 140: 119: 116: 108:IEEE Milestone 46:Abraham Lempel 26: 9: 6: 4: 3: 2: 2394: 2383: 2380: 2378: 2375: 2373: 2370: 2369: 2367: 2351: 2347: 2339: 2337: 2329: 2328: 2325: 2319: 2316: 2315: 2313: 2309: 2303: 2300: 2299: 2297: 2293: 2287: 2284: 2282: 2279: 2277: 2274: 2272: 2269: 2267: 2264: 2262: 2259: 2257: 2254: 2250: 2247: 2246: 2245: 2242: 2240: 2237: 2233: 2230: 2228: 2225: 2224: 2223: 2220: 2219: 2217: 2215: 2211: 2199: 2196: 2194: 2191: 2190: 2189: 2186: 2182: 2179: 2177: 2174: 2172: 2169: 2168: 2166: 2164: 2161: 2159: 2156: 2154: 2151: 2149: 2146: 2145: 2143: 2140: 2136: 2130: 2129:Video quality 2127: 2125: 2122: 2120: 2117: 2115: 2112: 2110: 2107: 2105: 2102: 2100: 2097: 2093: 2090: 2088: 2085: 2083: 2080: 2079: 2078: 2075: 2074: 2072: 2068: 2065: 2063: 2059: 2047: 2044: 2042: 2039: 2037: 2034: 2032: 2029: 2028: 2027: 2024: 2022: 2019: 2017: 2014: 2012: 2009: 2007: 2004: 2002: 1999: 1997: 1994: 1992: 1989: 1988: 1986: 1982: 1976: 1973: 1971: 1968: 1966: 1963: 1961: 1958: 1956: 1953: 1951: 1948: 1946: 1943: 1941: 1938: 1936: 1933: 1931: 1928: 1926: 1923: 1922: 1920: 1916: 1913: 1911: 1907: 1897: 1894: 1892: 1889: 1885: 1882: 1880: 1877: 1875: 1872: 1870: 1867: 1865: 1862: 1861: 1860: 1857: 1853: 1850: 1849: 1848: 1845: 1841: 1838: 1836: 1833: 1832: 1831: 1828: 1826: 1823: 1821: 1818: 1817: 1815: 1812: 1808: 1802: 1799: 1797: 1796:Speech coding 1794: 1792: 1791:Sound quality 1789: 1787: 1784: 1782: 1779: 1777: 1774: 1772: 1769: 1767: 1766:Dynamic range 1764: 1762: 1759: 1757: 1754: 1750: 1747: 1745: 1742: 1740: 1737: 1736: 1735: 1732: 1731: 1729: 1725: 1722: 1720: 1716: 1706: 1703: 1699: 1696: 1694: 1691: 1689: 1686: 1685: 1683: 1679: 1676: 1674: 1671: 1669: 1666: 1664: 1661: 1659: 1656: 1655: 1654: 1651: 1647: 1644: 1643: 1642: 1639: 1638: 1636: 1632: 1624: 1621: 1619: 1616: 1614: 1611: 1610: 1609: 1606: 1604: 1601: 1599: 1596: 1592: 1589: 1587: 1584: 1583: 1582: 1579: 1578: 1576: 1574: 1570: 1567: 1565: 1561: 1549: 1546: 1545: 1543: 1538: 1536: 1533: 1532: 1531:LZ77 + Range 1530: 1526: 1523: 1522: 1520: 1516: 1513: 1512: 1510: 1506: 1503: 1502: 1500: 1496: 1493: 1492: 1490: 1486: 1483: 1481: 1478: 1476: 1473: 1472: 1470: 1469: 1467: 1463: 1457: 1454: 1452: 1449: 1447: 1444: 1442: 1439: 1437: 1434: 1430: 1427: 1425: 1422: 1421: 1420: 1417: 1415: 1412: 1410: 1407: 1403: 1400: 1399: 1398: 1395: 1393: 1390: 1388: 1385: 1383: 1380: 1379: 1377: 1373: 1365: 1362: 1360: 1357: 1355: 1352: 1350: 1347: 1345: 1342: 1340: 1337: 1335: 1332: 1330: 1327: 1325: 1322: 1321: 1320: 1317: 1315: 1312: 1311: 1309: 1307: 1303: 1295: 1292: 1290: 1287: 1285: 1282: 1280: 1277: 1276: 1275: 1272: 1270: 1267: 1265: 1262: 1260: 1257: 1255: 1252: 1250: 1247: 1245: 1242: 1238: 1235: 1233: 1230: 1228: 1225: 1224: 1223: 1220: 1218: 1215: 1213: 1210: 1208: 1205: 1203: 1200: 1199: 1197: 1195: 1191: 1188: 1186: 1182: 1177: 1170: 1165: 1163: 1158: 1156: 1151: 1150: 1147: 1131: 1127: 1123: 1119: 1118: 1105: 1101: 1097: 1093: 1092: 1079: 1075: 1071: 1067: 1063: 1060: 1055: 1051: 1048: 1043: 1039: 1038: 1027: 1022: 1006: 1005: 999: 992: 977: 973: 967: 959: 953: 949: 942: 923: 916: 912: 906: 891: 887: 880: 864: 860: 856: 850: 842: 838: 832: 825: 820: 812: 808: 803: 798: 794: 790: 789: 784: 780: 774: 766: 762: 758: 754: 749: 744: 740: 736: 735: 730: 726: 720: 716: 705: 702: 701: 695: 693: 689: 685: 681: 679: 675: 670: 666: 657: 602: 584: 574: 552: 548: 544: 541: 537: 533: 529: 526: 523: 519: 518: 517: 515: 503: 499: 495: 491: 488: 484: 480: 477:match exists 476: 472: 468: 464: 456: 452: 450: 443: 439: 432: 425: 421: 414: 410: 403: 396: 392: 387: 385: 381: 377: 373: 366: 362: 357: 355: 350: 345: 341: 336: 334: 330: 326: 321: 319: 315: 311: 307: 303: 292: 288: 271: 265: 242: 236: 233: 225: 222: 219: 215: 206: 203: 200: 196: 190: 187: 180: 155: 139: 136: 134: 129: 125: 115: 113: 109: 104: 100: 98: 94: 89: 87: 83: 79: 75: 71: 67: 63: 59: 55: 51: 47: 43: 40: 36: 32: 19: 2302:Hutter Prize 2266:Quantization 2171:Compensation 1965:Quantization 1688:Compensation 1318: 1254:Shannon–Fano 1194:Entropy type 1134:. Retrieved 1130:the original 1125: 1108:. Retrieved 1104:the original 1099: 1082:. Retrieved 1078:the original 1069: 1021: 1009:. Retrieved 1001: 991: 979:. Retrieved 975: 966: 947: 941: 929:. Retrieved 922:the original 905: 893:. Retrieved 889: 879: 867:. Retrieved 858: 849: 840: 831: 819: 792: 786: 773: 738: 732: 719: 682: 673: 663: 603: 588: 572: 561: 513: 510: 501: 497: 493: 489: 486: 482: 478: 474: 470: 466: 462: 453: 448: 441: 437: 430: 423: 419: 412: 408: 401: 394: 390: 388: 383: 379: 375: 371: 364: 360: 358: 348: 343: 339: 337: 332: 328: 322: 317: 313: 309: 305: 301: 298: 290: 141: 137: 121: 105: 101: 96: 90: 57: 53: 37:are the two 34: 30: 29: 2261:Prefix code 2114:Frame types 1935:Color space 1761:Convolution 1491:LZ77 + ANS 1402:Incremental 1375:Other types 1294:Levenshtein 976:Niotso Wiki 690:. When the 512:pairs from 2366:Categories 2318:Mark Adler 2276:Redundancy 2193:Daubechies 2176:Estimation 2109:Frame rate 2031:Daubechies 1991:Chain code 1950:Macroblock 1756:Companding 1693:Estimation 1613:Daubechies 1319:Lempel–Ziv 1279:Exp-Golomb 1207:Arithmetic 1011:9 November 1007:. zlib.net 981:9 November 931:9 November 911:Peter Shor 895:18 January 869:9 November 779:Ziv, Jacob 725:Ziv, Jacob 711:References 650:A AB B A$ 540:big-endian 459:Pseudocode 418:) + (1 if 320:instead.) 133:Peter Shor 42:algorithms 18:Lempel–Ziv 2295:Community 2119:Interlace 1505:Zstandard 1284:Fibonacci 1274:Universal 1232:Canonical 1004:newsgroup 797:CiteSeerX 743:CiteSeerX 606:0A1B0B1$ 599:0A1B0B1$ 349:beginning 234:≤ 50:Jacob Ziv 2281:Symmetry 2249:Timeline 2232:FM-index 2077:Bit rate 2070:Concepts 1918:Concepts 1781:Sampling 1734:Bit rate 1727:Concepts 1429:Sequitur 1264:Tunstall 1237:Modified 1227:Adaptive 1185:Lossless 698:See also 638:3 {0,B} 614:1 {0,A} 610:0 {...} 514:literals 314:distance 310:distance 76:and the 2239:Entropy 2188:Wavelet 2167:Motion 2026:Wavelet 2006:Fractal 2001:Deflate 1984:Methods 1771:Latency 1684:Motion 1608:Wavelet 1525:LHA/LZH 1475:Deflate 1424:Re-Pair 1419:Grammar 1249:Shannon 1222:Huffman 1178:methods 1136:22 June 1110:22 June 1084:22 June 765:9267632 688:V.42bis 595:AABBA$ 547:DEFLATE 78:DEFLATE 2350:codecs 2311:People 2214:Theory 2181:Vector 1698:Vector 1515:Brotli 1465:Hybrid 1364:Snappy 1217:Golomb 954:  799:  763:  745:  616:. The 591:0A1B0B 502:repeat 490:output 487:end if 447:until 318:offset 306:length 2141:parts 2139:Codec 2104:Frame 2062:Video 2046:SPIHT 1955:Pixel 1910:Image 1864:ACELP 1835:ADPCM 1825:ÎĽ-law 1820:A-law 1813:parts 1811:Codec 1719:Audio 1658:ACELP 1646:ADPCM 1623:SPIHT 1564:Lossy 1548:bzip2 1539:LZHAM 1495:LZFSE 1397:Delta 1289:Gamma 1269:Unary 1244:Range 925:(PDF) 918:(PDF) 761:S2CID 706:(LZS) 654:AABBA 626:{1,B} 581:AABBA 467:while 382:> 2153:DPCM 1960:PSNR 1891:MDCT 1884:WLPC 1869:CELP 1830:DPCM 1678:WLPC 1663:CELP 1641:DPCM 1591:MDCT 1535:LZMA 1436:LDCT 1414:DPCM 1359:LZWL 1349:LZSS 1344:LZRW 1334:LZJB 1138:2012 1112:2012 1086:2012 1013:2014 983:2014 952:ISBN 933:2014 897:2021 871:2014 692:trie 684:BTLZ 558:LZ78 525:LZSS 483:else 479:then 422:mod 340:four 295:LZ77 84:and 70:LZMA 66:LZSS 56:and 48:and 35:LZ78 33:and 31:LZ77 2198:DWT 2148:DCT 2092:VBR 2087:CBR 2082:ABR 2041:EZW 2036:DWT 2021:RLE 2011:KLT 1996:DCT 1879:LSP 1874:LAR 1859:LPC 1852:FFT 1749:VBR 1744:CBR 1739:ABR 1673:LSP 1668:LAR 1653:LPC 1618:DWT 1603:FFT 1598:DST 1586:DCT 1485:LZS 1480:LZX 1456:RLE 1451:PPM 1446:PAQ 1441:MTF 1409:DMC 1387:CTW 1382:BWT 1354:LZW 1339:LZO 1329:LZ4 1324:842 807:doi 753:doi 678:LZW 669:LZW 665:LZW 660:LZW 652:or 646:A$ 642:1$ 573:not 344:ten 148:If 86:ZIP 82:PNG 74:GIF 62:LZW 58:LZ2 54:LZ1 2368:: 2016:LP 1847:FT 1840:DM 1392:CM 1124:. 1098:. 1072:. 1068:. 1000:. 974:. 888:. 861:. 857:. 839:. 805:. 793:24 791:. 781:; 759:. 751:. 739:23 737:. 727:; 634:0B 630:AB 622:1B 475:if 471:do 393:= 356:. 325:KB 207:78 135:. 88:. 68:, 64:, 2352:) 2348:( 1168:e 1161:t 1154:v 1140:. 1114:. 1088:. 1015:. 985:. 960:. 935:. 899:. 873:. 843:. 813:. 809:: 767:. 755:: 618:A 498:l 494:l 449:L 445:R 442:L 438:L 434:R 431:L 427:R 424:L 420:L 416:R 413:L 411:/ 409:L 405:R 402:L 398:R 395:L 391:D 384:D 380:L 376:L 372:D 368:R 365:L 361:D 275:) 272:X 269:( 266:h 246:) 243:X 240:( 237:h 231:) 226:n 223:: 220:1 216:X 212:( 204:Z 201:L 197:l 191:n 188:1 181:n 156:X 20:)

Index

Lempel–Ziv
lossless data compression
algorithms
Abraham Lempel
Jacob Ziv
LZW
LZSS
LZMA
GIF
DEFLATE
PNG
ZIP
dictionary coders
IEEE Milestone
IEEE Medal of Honor
information entropy
data compression ratio
Peter Shor
KB
run-length encoding
LZSS
Electronic Arts
big-endian
DEFLATE
Huffman coding
LZW
LZW
LZW
BTLZ
V.42bis

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑