Knowledge

Huffman coding

Source 📝

2516:
determine the character value of that particular leaf. The process continues recursively until the last leaf node is reached; at that point, the Huffman tree will thus be faithfully reconstructed. The overhead using such a method ranges from roughly 2 to 320 bytes (assuming an 8-bit alphabet). Many other techniques are possible as well. In any case, since the compressed data can include unused "trailing bits" the decompressor must be able to determine when to stop producing output. This can be accomplished by either transmitting the length of the decompressed data along with the compression model or by defining a special code symbol to signify the end of input (the latter method can adversely affect code length optimality, however).
2474:
particular byte value). Before this can take place, however, the Huffman tree must be somehow reconstructed. In the simplest case, where character frequencies are fairly predictable, the tree can be preconstructed (and even statistically adjusted on each compression cycle) and thus reused every time, at the expense of at least some measure of compression efficiency. Otherwise, the information to reconstruct the tree must be sent a priori. A naive approach might be to prepend the frequency count of each character to the compression stream. Unfortunately, the overhead in such a case could amount to several kilobytes, so this method has little practical use. If the data is compressed using
2038: 5159: 5149: 2049: 1992:, the entropy is a measure of the smallest codeword length that is theoretically possible for the given alphabet with associated weights. In this example, the weighted average codeword length is 2.25 bits per symbol, only slightly larger than the calculated entropy of 2.205 bits per symbol. So not only is this code optimal in the sense that no other feasible code performs better, but it is very close to the theoretical limit established by Shannon. 359: 20: 456: 2989:, where a 'dash' takes longer to send than a 'dot', and therefore the cost of a dash in transmission time is higher. The goal is still to minimize the weighted average codeword length, but it is no longer sufficient just to minimize the number of symbols used by the message. No algorithm is known to solve this in the same manner or with the same efficiency as conventional Huffman coding, though it has been solved by 2168:. A binary tree is generated from left to right taking the two least probable symbols and putting them together to form another equivalent symbol having a probability that equals the sum of the two symbols. The process is repeated until there is just one symbol. The tree can then be read backwards, from right to left, assigning different bits to different branches. The final Huffman code is: 345:(sometimes called "prefix-free codes", that is, the bit string representing some particular symbol is never a prefix of the bit string representing any other symbol). Huffman coding is such a widespread method for creating prefix codes that the term "Huffman code" is widely used as a synonym for "prefix code" even when such a code is not produced by Huffman's algorithm. 2591:
approaches the entropy limit, i.e., optimal compression. However, blocking arbitrarily large groups of symbols is impractical, as the complexity of a Huffman code is linear in the number of possibilities to be encoded, a number that is exponential in the size of a block. This limits the amount of blocking that is done in practice.
2587:. Prefix codes, and thus Huffman coding in particular, tend to have inefficiency on small alphabets, where probabilities often fall between these optimal (dyadic) points. The worst case for Huffman coding can happen when the probability of the most likely symbol far exceeds 2 = 0.5, making the upper limit of inefficiency unbounded. 3334:
If weights corresponding to the alphabetically ordered inputs are in numerical order, the Huffman code has the same lengths as the optimal alphabetic code, which can be found from calculating these lengths, rendering Hu–Tucker coding unnecessary. The code resulting from numerically (re-)ordered input
2709:
involves calculating the probabilities dynamically based on recent actual frequencies in the sequence of source symbols, and changing the coding tree structure to match the updated probability estimates. It is used rarely in practice, since the cost of updating the tree makes it slower than optimized
2590:
There are two related approaches for getting around this particular inefficiency while still using Huffman coding. Combining a fixed number of symbols together ("blocking") often increases (and never decreases) compression. As the size of the block approaches infinity, Huffman coding theoretically
2559:
Although both aforementioned methods can combine an arbitrary number of symbols for more efficient coding and generally adapt to the actual input statistics, arithmetic coding does so without significantly increasing its computational or algorithmic complexities (though the simplest version is slower
2515:
is the number of bits per symbol). Another method is to simply prepend the Huffman tree, bit by bit, to the output stream. For example, assuming that the value of 0 represents a parent node and 1 a leaf node, whenever the latter is encountered the tree building routine simply reads the next 8 bits to
23:
Huffman tree generated from the exact frequencies of the text "this is an example of a huffman tree". Encoding the sentence with this code requires 135 (or 147) bits, as opposed to 288 (or 180) bits if 36 characters of 8 (or 5) bits were used (This assumes that the code tree structure is known to the
3462:
and Huffman coding produce equivalent results — achieving entropy — when every symbol has a probability of the form 1/2. In other circumstances, arithmetic coding can offer better compression than Huffman coding because — intuitively — its "code words" can have effectively
2618:
Many variations of Huffman coding exist, some of which use a Huffman-like algorithm, and others of which find optimal prefix codes (while, for example, putting different restrictions on the output). Note that, in the latter case, the method need not be Huffman-like, and, indeed, need not even be
2331:
The process begins with the leaf nodes containing the probabilities of the symbol they represent. Then, the process takes the two nodes with smallest probability, and creates a new internal node having these two nodes as children. The weight of the new node is set to the sum of the weight of the
2473:
Generally speaking, the process of decompression is simply a matter of translating the stream of prefix codes to individual byte values, usually by traversing the Huffman tree node by node as each bit is read from the input stream (reaching a leaf node necessarily terminates the search for that
2464:
It is generally beneficial to minimize the variance of codeword length. For example, a communication buffer receiving Huffman-encoded data may need to be larger to deal with especially long symbols if the tree is especially unbalanced. To minimize variance, simply break ties between queues by
2043:
BED". In steps 2 to 6, the letters are sorted by increasing frequency, and the least frequent two at each step are combined and reinserted into the list, and a partial tree is constructed. The final tree in step 6 is traversed to generate the dictionary in step 7. Step 8 uses it to encode the
2564:
issues. Thus many technologies have historically avoided arithmetic coding in favor of Huffman and other prefix coding techniques. As of mid-2010, the most commonly used techniques for this alternative to Huffman coding have passed into the public domain as the early patents have expired.
3467:
only optimally matches a symbol of probability 1/2 and other probabilities are not represented optimally; whereas the code word length in arithmetic coding can be made to exactly match the true probability of the symbol. This difference is especially striking for small alphabet sizes.
1915: 2403:, the first one containing the initial weights (along with pointers to the associated leaves), and combined weights (along with pointers to the trees) being put in the back of the second queue. This assures that the lowest weight is always kept at the front of one of the two queues: 2560:
and more complex than Huffman coding). Such flexibility is especially useful when input probabilities are not precisely known or vary significantly within the stream. However, Huffman coding is usually faster and arithmetic coding was historically a subject of some concern over
2543:
Huffman's original algorithm is optimal for a symbol-by-symbol coding with a known input probability distribution, i.e., separately encoding unrelated symbols in such a data stream. However, it is not optimal when the symbol-by-symbol restriction is dropped, or when the
2217:
of the source is 1.74 bits/symbol. If this Huffman code is used to represent the signal, then the average length is lowered to 1.85 bits/symbol; it is still far from the theoretical limit because the probabilities of the symbols are different from negative powers of
1054: 2733:
enables one to use any kind of weights (costs, frequencies, pairs of weights, non-numerical weights) and one of many combining methods (not just addition). Such algorithms can solve other minimization problems, such as minimizing
761: 1703: 317:
on the problem of finding the most efficient binary code. Huffman, unable to prove any codes were the most efficient, was about to give up and start studying for the final when he hit upon the idea of using a frequency-sorted
2332:
children. We then apply the process again, on the new internal node and on the remaining nodes (i.e., we exclude the two leaf nodes), we repeat this process until only one node remains, which is the root of the Huffman tree.
1148: 3001:
In the standard Huffman coding problem, it is assumed that any codeword can correspond to any input symbol. In the alphabetic version, the alphabetic order of inputs and outputs must be identical. Thus, for example,
2465:
choosing the item in the first queue. This modification will retain the mathematical optimality of the Huffman coding while both minimizing variance and minimizing the length of the longest character code.
2978:, no matter how many of those digits are 0s, how many are 1s, etc. When working under this assumption, minimizing the total cost of the message and minimizing the total number of digits are the same thing. 2984:
is the generalization without this assumption: the letters of the encoding alphabet may have non-uniform lengths, due to characteristics of the transmission medium. An example is the encoding alphabet of
2524:
The probabilities used can be generic ones for the application domain that are based on average experience, or they can be the actual frequencies found in the text being compressed. This requires that a
851: 3249: 3182: 3115: 3499:
followed by the use of prefix codes; these are often called "Huffman codes" even though most applications use pre-defined variable-length codes rather than codes designed using Huffman's algorithm.
2457:
here is the number of symbols in the alphabet, which is typically a very small number (compared to the length of the message to be encoded); whereas complexity analysis concerns the behavior when
2722:
Most often, the weights used in implementations of Huffman coding represent numeric probabilities, but the algorithm given above does not require this; it requires only that the weights form a
1663: 2833:
is a variant where the goal is still to achieve a minimum weighted path length, but there is an additional restriction that the length of each codeword must be less than a given constant. The
1983: 942: 670: 577: 491: 2122: 2580:
coding. This reflects the fact that compression is not possible with such an input, no matter what the compression method, i.e., doing nothing to the data is the optimal thing to do.
3796: 2970:
In the standard Huffman coding problem, it is assumed that each symbol in the set that the code words are constructed from has an equal cost to transmit: a code word whose length is
3048: 2166: 3449: 3395: 1564:, the sum of the probability budgets across all symbols is always less than or equal to one. In this example, the sum is strictly equal to one; as a result, the code is termed a 1568:
code. If this is not the case, one can always derive an equivalent code by adding extra symbols (with associated null probabilities), to make the code complete while keeping it
2583:
Huffman coding is optimal among all methods in any case where each input symbol is a known independent and identically distributed random variable having a probability that is
955: 1179: 2820: 2509: 270:
methods, more common symbols are generally represented using fewer bits than less common symbols. Huffman's method can be efficiently implemented, finding a code in time
3300: 2959: 24:
decoder and thus does not need to be counted as part of the transmitted information). The frequencies and codes of each character are shown in the accompanying table.
2691:
to 1 contractor; for binary coding, this is a 2 to 1 contractor, and any sized set can form such a contractor. If the number of source words is congruent to 1 modulo
3304:
solution to this optimal binary alphabetic problem, which has some similarities to Huffman algorithm, but is not a variation of this algorithm. A later method, the
2871: 878: 2921: 2022: 2673: 2326: 1995:
In general, a Huffman code need not be unique. Thus the set of Huffman codes for a given probability distribution is a non-empty subset of the codes minimizing
262:
table for encoding a source symbol (such as a character in a file). The algorithm derives this table from the estimated probability or frequency of occurrence (
2891: 2598:. This technique adds one step in advance of entropy coding, specifically counting (runs) of repeated symbols, which are then encoded. For the simple case of 2300: 2248: 1074: 597: 675: 3463:
non-integer bit lengths, whereas code words in prefix codes such as Huffman codes can only have an integer number of bits. Therefore, a code word of length
2606:
is optimal among prefix codes for coding run length, a fact proved via the techniques of Huffman coding. A similar approach is taken by fax machines using
2529:
must be stored with the compressed text. See the Decompression section above for more information about the various techniques employed for this purpose.
2024:
for that probability distribution. (However, for each minimizing codeword length assignment, there exists at least one Huffman code with those lengths.)
2419:
Create a new internal node, with the two just-removed nodes as children (either node can be either child) and the sum of their weights as the new weight.
2282:
node. As a common convention, bit '0' represents following the left child and bit '1' represents following the right child. A finished tree has up to
1079: 3316:(1977), uses simpler logic to perform the same comparisons in the same total time bound. These optimal alphabetic binary trees are often used as 274:
to the number of input weights if these weights are sorted. However, although optimal among methods encoding symbols separately, Huffman coding
1910:{\displaystyle H(A)=\sum _{w_{i}>0}w_{i}h(a_{i})=\sum _{w_{i}>0}w_{i}\log _{2}{1 \over w_{i}}=-\sum _{w_{i}>0}w_{i}\log _{2}{w_{i}}.} 3983: 2450:
The final encoding of any symbol is then read by a concatenation of the labels on the edges along the path from the root node to the symbol.
2410:
Enqueue all leaf nodes into the first queue (by probability in increasing order so that the least likely item is in the head of the queue).
1189:
We give an example of the result of Huffman coding for a code with five characters and given weights. We will not verify that it minimizes
2687:-ary tree for Huffman coding. In these cases, additional 0-probability place holders must be added. This is because the tree must form an 4651: 4462: 2431:
Once the Huffman tree has been generated, it is traversed to generate a dictionary which maps the symbols to binary codes as follows:
4351: 5198: 4857: 4680: 4474: 3339:
and is often the code used in practice, due to ease of encoding/decoding. The technique for finding this code is sometimes called
2352:
Create a new internal node with these two nodes as children and with probability equal to the sum of the two nodes' probabilities.
4165: 3673: 2549: 774: 4862: 4439: 1576: 3187: 3120: 3053: 3598: 423: 252: 4592: 395: 3520: 1596: 329:
to develop a similar code. Building the tree from the bottom up guaranteed optimality, unlike the top-down approach of
4969: 4707: 4646: 4457: 4407: 4230: 1989: 402: 4090: 4075: 3976: 3933: 3735: 1923: 442: 2649:-ary tree. This approach was considered by Huffman in his original paper. The same algorithm applies as for binary ( 1559: 5082: 3496: 883: 3671:
Gallager, R.G.; van Voorhis, D.C. (1975). "Optimal source codes for geometrically distributed integer alphabets".
604: 511: 5092: 4930: 4781: 4700: 4494: 2055: 376: 3700:
Abrahams, J. (1997-06-11). "Code and parse trees for lossless source encoding". Written at Arlington, VA, USA.
2711: 409: 5065: 4685: 4479: 4267: 380: 5162: 4198: 2041:
Visualisation of the use of Huffman coding to encode the message "A_DEAD_DAD_CEDED_A_BAD_BABE_A_BEADED_ABACA_
473: 4827: 3005: 2610:. However, run-length coding is not as adaptable to as many input types as other compression technologies. 5152: 5055: 4597: 4155: 3969: 2270:
node which makes it easy to read the code (in reverse) starting from a leaf node. Internal nodes contain a
2127: 391: 3404: 3350: 2894: 1049:{\textstyle L\left(C\left(W\right)\right)=\sum _{i=1}^{n}{w_{i}\operatorname {length} \left(c_{i}\right)}} 4145: 4140: 3472: 5193: 5087: 5014: 4852: 4832: 4776: 4434: 4225: 4028: 3924: 3305: 283: 3797:"A Dynamic Programming Algorithm for Constructing Optimal Prefix-Free Codes with Unequal Letter Costs" 341:
Huffman coding uses a specific method for choosing the representation for each symbol, resulting in a
5188: 5097: 5038: 4964: 4812: 4402: 4397: 4252: 4095: 2545: 1153: 236: 3718: 2737: 2538: 672:, which is the tuple of the (positive) symbol weights (usually proportional to probabilities), i.e. 5102: 4675: 4469: 4170: 3705: 3264: 2481: 5043: 4414: 4301: 4257: 4070: 4053: 4043: 3344: 2834: 2705: 2607: 2328:
internal nodes. A Huffman tree that omits unused symbols produces the most optimal code lengths.
369: 330: 3764: 3267: 2926: 2568:
For a set of symbols with a uniform probability distribution and a number of members which is a
4668: 4419: 4203: 4048: 3713: 3528: 3329: 2679:
least probable symbols are taken together, instead of just the 2 least probable. Note that for
2475: 2400: 255:, and published in the 1952 paper "A Method for the Construction of Minimum-Redundancy Codes". 4940: 5203: 5072: 3951: 3650:
Gribov, Alexander (2017-04-10). "Optimal Compression of a Polyline with Segments and Arcs".
3630: 3397:, which, having the same codeword lengths as the original solution, is also optimal. But in 2453:
In many cases, time complexity is not very important in the choice of algorithm here, since
2213:
The standard way to represent a signal made of 4 symbols is by using 2 bits/symbol, but the
416: 4756: 4218: 4180: 4001: 3911: 2844: 1985:. So for simplicity, symbols with zero probability can be left out of the formula above.) 856: 259: 3471:
Prefix codes nevertheless remain in wide use because of their simplicity, high speed, and
2897: 1998: 8: 4987: 4878: 4837: 4822: 4791: 4786: 4695: 4602: 4535: 4504: 4489: 4272: 3635: 2652: 2595: 2584: 2305: 2214: 1669: 5060: 5030: 5009: 4915: 4847: 4741: 4429: 4245: 4235: 4130: 4110: 4105: 3867: 3819: 3741: 3651: 3559: 3317: 2876: 2285: 2233: 1059: 756:{\displaystyle w_{i}=\operatorname {weight} \left(a_{i}\right),\,i\in \{1,2,\dots ,n\}} 582: 302: 224: 4641: 3343:, since it is optimal like Huffman coding, but alphabetic in weight probability, like 5004: 4992: 4974: 4842: 4726: 4663: 4509: 4424: 4380: 4341: 4023: 3929: 3745: 3731: 3594: 3459: 3313: 2962:
time, unlike the presorted and unsorted conventional Huffman problems, respectively.
2599: 2553: 279: 248: 2993:
whose solution has been refined for the case of integer costs by Mordecai J. Golin.
2893:
is the maximum length of a codeword. No algorithm is known to solve this problem in
2416:
Dequeue the two nodes with the lowest weight by examining the fronts of both queues.
4979: 4935: 4908: 4903: 4761: 4746: 4656: 4565: 4560: 4389: 4122: 4100: 3992: 3915: 3907: 3859: 3823: 3811: 3777: 3723: 3682: 3616:
The use of asymmetric numeral systems as an accurate replacement for Huffman coding
3537: 3516: 2838: 295: 267: 244: 220: 2841:
approach very similar to that used by Huffman's algorithm. Its time complexity is
2726: 1920:(Note: A symbol with zero probability has zero contribution to the entropy, since 4898: 4712: 4636: 4617: 4587: 4555: 4521: 4080: 4018: 3759: 3588: 3555: 2990: 2620: 2526: 2227: 1198: 3850:(1971). "Optimal Computer Search Trees and Variable-Length Alphabetical Codes". 2825: 4690: 4484: 4213: 4208: 4065: 4010: 3919: 3727: 3613: 3541: 3309: 2336: 2037: 1143:{\displaystyle L\left(C\left(W\right)\right)\leq L\left(T\left(W\right)\right)} 487: 326: 310: 3702:
Proceedings. Compression and Complexity of SEQUENCES 1997 (Cat. No.97TB100171)
5182: 4997: 4945: 4612: 4607: 4582: 4514: 4135: 4033: 3781: 3686: 2603: 2255: 2349:
Remove the two nodes of highest priority (lowest probability) from the queue
5118: 4085: 4060: 3961: 3885: 2569: 2552:, a single code may be insufficient for optimality. Other methods such as 5077: 4955: 4751: 4627: 4577: 3888:(1998), "Algorithm G (Garsia–Wachs algorithm for optimum binary trees)", 3847: 3260: 2723: 2392: 2223: 2048: 483: 342: 319: 271: 232: 3946: 2695:−1, then the set of source words will form a proper Huffman tree. 5134: 4925: 4920: 4807: 4766: 4572: 3871: 3631:"Profile: David A. Huffman: Encoding the "Neatness" of Ones and Zeroes" 2986: 2573: 314: 3815: 3475:. They are often used as a "back-end" to other compression methods. 2996: 2427:
The remaining node is the root node; the tree has now been generated.
2251: 3863: 3586: 2343:
Create a leaf node for each symbol and add it to the priority queue.
2266:(frequency of appearance) of the symbol and optionally, a link to a 358: 5048: 4893: 4550: 3843: 3656: 3256: 3956: 2683:
greater than 2, not all sets of source words can properly form an
2339:
where the node with lowest probability is given highest priority:
4817: 4291: 4240: 3476: 2478:, the compression model can be precisely reconstructed with just 455: 19: 3704:. Division of Mathematics, Computer & Information Sciences, 3347:. The Huffman–Shannon–Fano code corresponding to the example is 2446:. Repeat the process at both the left child and the right child. 2438:
If node is not a leaf node, label the edge to the left child as
4331: 2561: 3890:
The Art of Computer Programming, Vol. 3: Sorting and Searching
3765:"Minimum-redundancy coding for the discrete noiseless channel" 5166: 4771: 4364: 4311: 3484: 3480: 2826:
Length-limited Huffman coding/minimum variance Huffman coding
2577: 2364:
Since efficient priority queue data structures require O(log
2360:
The remaining node is the root node and the tree is complete.
266:) for each possible value of the source symbol. As in other 305:
classmates were given the choice of a term paper or a final
4321: 4175: 4160: 4150: 3709: 3521:"A Method for the Construction of Minimum-Redundancy Codes" 3488: 2965: 1204:
of the given set of weights; the result is nearly optimal.
306: 846:{\displaystyle C\left(W\right)=(c_{1},c_{2},\dots ,c_{n})} 4296: 4262: 3492: 2258:. Initially, all nodes are leaf nodes, which contain the 299: 3244:{\displaystyle H\left(A,C\right)=\left\{0,10,11\right\}} 3177:{\displaystyle H\left(A,C\right)=\left\{00,01,1\right\}} 3110:{\displaystyle H\left(A,C\right)=\left\{00,1,01\right\}} 3587:
Ze-Nian Li; Mark S. Drew; Jiangchuan Liu (2014-04-09).
2422:
Enqueue the new node into the rear of the second queue.
258:
The output from Huffman's algorithm can be viewed as a
2729:, meaning a way to order weights and to add them. The 2230:, the size of which depends on the number of symbols, 958: 325:
In doing so, Huffman outdid Fano, who had worked with
3407: 3353: 3270: 3190: 3123: 3056: 3008: 2929: 2900: 2879: 2847: 2740: 2714:, which is more flexible and has better compression. 2655: 2484: 2391:
If the symbols are sorted by probability, there is a
2308: 2288: 2236: 2130: 2058: 2001: 1926: 1706: 1599: 1156: 1082: 1062: 886: 859: 777: 678: 607: 585: 514: 278:
among all compression methods - it is replaced with
3947:
Huffman coding in various languages on Rosetta Code
3928:, Second Edition. MIT Press and McGraw-Hill, 2001. 3670: 490:codeword length (equivalently, a tree with minimum 383:. Unsourced material may be challenged and removed. 322:and quickly proved this method the most efficient. 3763: 3443: 3389: 3294: 3243: 3176: 3109: 3042: 2997:Optimal alphabetic binary trees (Hu–Tucker coding) 2953: 2915: 2885: 2865: 2814: 2667: 2503: 2320: 2294: 2242: 2160: 2116: 2016: 1977: 1909: 1675:(in bits) is the weighted sum, across all symbols 1658:{\displaystyle h(a_{i})=\log _{2}{1 \over w_{i}}.} 1657: 1173: 1142: 1068: 1048: 936: 872: 853:, which is the tuple of (binary) codewords, where 845: 755: 664: 591: 571: 3894:. See also History and bibliography, pp. 453–454. 2413:While there is more than one node in the queues: 239:. The process of finding or using such a code is 5180: 3892:(2nd ed.), Addison–Wesley, pp. 451–453 3263:, the authors of the paper presenting the first 2742: 2572:, Huffman coding is equivalent to simple binary 2346:While there is more than one node in the queue: 1928: 2594:A practical alternative, in widespread use, is 2407:Start with as many leaves as there are symbols. 1978:{\displaystyle \lim _{w\to 0^{+}}w\log _{2}w=0} 3614:J. Duda, K. Tahboub, N. J. Gadil, E. J. Delp, 3977: 3323: 2822:, a problem first applied to circuit design. 2717: 2645:− 1} alphabet to encode message and build an 2399:)) method to create a Huffman tree using two 1697:, of the information content of each symbol: 937:{\displaystyle a_{i},\,i\in \{1,2,\dots ,n\}} 3991: 3438: 3408: 3384: 3354: 2155: 2131: 2111: 2059: 931: 907: 750: 726: 665:{\displaystyle W=(w_{1},w_{2},\dots ,w_{n})} 572:{\displaystyle A=(a_{1},a_{2},\dots ,a_{n})} 472:A set of symbols and their weights (usually 3554: 2335:The simplest construction algorithm uses a 2226:of nodes. These can be stored in a regular 2117:{\displaystyle \{a_{1},a_{2},a_{3},a_{4}\}} 286:if a better compression ratio is required. 3984: 3970: 2698: 2556:often have better compression capability. 3717: 3655: 3593:. Springer Science & Business Media. 3580: 900: 719: 498: 443:Learn how and when to remove this message 3842: 3699: 3117:, but instead should be assigned either 2982:Huffman coding with unequal letter costs 2966:Huffman coding with unequal letter costs 2435:Start with current node set to the root. 2047: 2036: 454: 18: 3810:(5) (published 1998-09-01): 1770–1781. 3804:IEEE Transactions on Information Theory 3674:IEEE Transactions on Information Theory 3628: 3515: 2626: 2550:independent and identically distributed 2548:are unknown. Also, if symbols are not 2539:Arithmetic coding § Huffman coding 2376:−1 nodes, this algorithm operates in O( 2052:A source generates 4 different symbols 579:, which is the symbol alphabet of size 463: 5181: 3770:IRE Transactions on Information Theory 3649: 3607: 3560:"On the construction of Huffman trees" 3043:{\displaystyle A=\left\{a,b,c\right\}} 2368:) time per insertion, and a tree with 3965: 3952:Huffman codes (python implementation) 3884: 3794: 2161:{\displaystyle \{0.4;0.35;0.2;0.05\}} 348: 3758: 3444:{\displaystyle \{110,111,00,01,10\}} 3390:{\displaystyle \{000,001,01,10,11\}} 1372:Contribution to weighted path length 1193:over all codes, but we will compute 1056:be the weighted path length of code 381:adding citations to reliable sources 352: 3852:SIAM Journal on Applied Mathematics 3795:Golin, Mordekai J. (January 1998). 2442:and the edge to the right child as 13: 2974:digits will always have a cost of 2837:solves this problem with a simple 2785: 2782: 2779: 2776: 2773: 2770: 2519: 2222:The technique works by creating a 2027: 492:weighted path length from the root 486:(a set of codewords) with minimum 14: 5215: 3957:A visualization of Huffman coding 3940: 3936:. Section 16.3, pp. 385–392. 3619:, Picture Coding Symposium, 2015. 5158: 5157: 5148: 5147: 2468: 357: 231:is a particular type of optimal 5199:Lossless compression algorithms 3901: 3878: 3836: 3788: 3454: 1990:Shannon's source coding theorem 1174:{\displaystyle T\left(W\right)} 368:needs additional citations for 275: 3752: 3693: 3664: 3643: 3622: 3548: 3509: 3289: 3274: 2948: 2933: 2910: 2904: 2860: 2851: 2815:{\displaystyle \max _{i}\left} 2641:algorithm uses the {0, 1,..., 2355:Add the new node to the queue. 2032: 2011: 2005: 1935: 1771: 1758: 1716: 1710: 1616: 1603: 840: 795: 659: 614: 566: 521: 336: 1: 3502: 3483:'s algorithm) and multimedia 2831:Length-limited Huffman coding 2613: 2532: 1590:with non-null probability is 1457:Information content (in bits) 3251:. This is also known as the 2504:{\displaystyle B\cdot 2^{B}} 1540: 1537: 1534: 1531: 1528: 1525: 1491: 1488: 1485: 1482: 1479: 1476: 1451: 1448: 1445: 1442: 1439: 1436: 1412: 1409: 1406: 1403: 1400: 1397: 1366: 1363: 1360: 1357: 1354: 1328: 1323: 1318: 1313: 1308: 1283: 1280: 1277: 1274: 1271: 1268: 1246: 1243: 1240: 1237: 1234: 243:, an algorithm developed by 7: 3495:have a front-end model and 3341:Huffman–Shannon–Fano coding 3050:could not be assigned code 2511:bits of information (where 1558:, meaning that the code is 459:Constructing a Huffman Tree 10: 5220: 5039:Compressed data structures 4361:RLE + BWT + MTF + Huffman 4029:Asymmetric numeral systems 3925:Introduction to Algorithms 3728:10.1109/SEQUEN.1997.666911 3590:Fundamentals of Multimedia 3542:10.1109/JRPROC.1952.273898 3327: 3324:The canonical Huffman code 3295:{\displaystyle O(n\log n)} 2954:{\displaystyle O(n\log n)} 2731:Huffman template algorithm 2718:Huffman template algorithm 2712:adaptive arithmetic coding 2546:probability mass functions 2536: 2388:is the number of symbols. 2278:and an optional link to a 1686:with non-zero probability 1579:, the information content 1184: 289: 284:asymmetric numeral systems 235:that is commonly used for 16:Technique to compress data 5143: 5127: 5111: 5029: 4954: 4886: 4877: 4800: 4734: 4725: 4626: 4543: 4534: 4450: 4398:Discrete cosine transform 4388: 4379: 4328:LZ77 + Huffman + context 4281: 4191: 4121: 4009: 4000: 2675:) codes, except that the 2250:. A node can be either a 1583:(in bits) of each symbol 1424: 1339:Codeword length (in bits) 1333: 1288: 1209: 237:lossless data compression 5103:Smallest grammar problem 3782:10.1109/TIT.1961.1057615 3706:Office of Naval Research 3687:10.1109/TIT.1975.1055357 3335:is sometimes called the 2461:grows to be very large. 5044:Compressed suffix array 4593:Nyquist–Shannon theorem 3473:lack of patent coverage 2835:package-merge algorithm 2706:adaptive Huffman coding 2699:Adaptive Huffman coding 2608:modified Huffman coding 1497:Contribution to entropy 484:prefix-free binary code 3529:Proceedings of the IRE 3445: 3399:canonical Huffman code 3391: 3337:canonical Huffman code 3330:Canonical Huffman code 3306:Garsia–Wachs algorithm 3296: 3245: 3178: 3111: 3044: 2955: 2917: 2887: 2867: 2816: 2669: 2505: 2322: 2296: 2244: 2219: 2162: 2118: 2045: 2018: 1979: 1911: 1659: 1197:and compare it to the 1175: 1144: 1070: 1050: 1009: 938: 874: 847: 757: 666: 593: 573: 499:Formalized description 460: 216: 5073:Kolmogorov complexity 4941:Video characteristics 4318:LZ77 + Huffman + ANS 3629:Huffman, Ken (1991). 3446: 3392: 3297: 3246: 3179: 3112: 3045: 2956: 2918: 2888: 2868: 2866:{\displaystyle O(nL)} 2817: 2670: 2506: 2323: 2297: 2245: 2163: 2119: 2051: 2040: 2019: 1980: 1912: 1660: 1554:For any code that is 1176: 1145: 1071: 1051: 989: 939: 875: 873:{\displaystyle c_{i}} 848: 758: 667: 594: 574: 458: 276:is not always optimal 22: 5163:Compression software 4757:Compression artifact 4713:Psychoacoustic model 3912:Charles E. Leiserson 3712:. pp. 145–171. 3405: 3351: 3268: 3188: 3121: 3054: 3006: 2927: 2916:{\displaystyle O(n)} 2898: 2877: 2845: 2738: 2653: 2482: 2306: 2286: 2234: 2128: 2056: 2017:{\displaystyle L(C)} 1999: 1988:As a consequence of 1924: 1704: 1597: 1154: 1080: 1060: 956: 884: 880:is the codeword for 857: 775: 676: 605: 583: 512: 464:Informal description 377:improve this article 260:variable-length code 5153:Compression formats 4792:Texture compression 4787:Standard test image 4603:Silence compression 3636:Scientific American 3345:Shannon–Fano coding 3318:binary search trees 2703:A variation called 2668:{\displaystyle n=2} 2630:-ary Huffman coding 2600:Bernoulli processes 2596:run-length encoding 2321:{\displaystyle n-1} 1561:uniquely decodeable 331:Shannon–Fano coding 5061:Information theory 4916:Display resolution 4742:Chroma subsampling 4131:Byte pair encoding 4076:Shannon–Fano–Elias 3776:(1). IEEE: 27–38. 3441: 3387: 3292: 3241: 3174: 3107: 3040: 2951: 2913: 2883: 2863: 2812: 2750: 2727:commutative monoid 2665: 2501: 2476:canonical encoding 2318: 2292: 2240: 2220: 2158: 2114: 2046: 2014: 1975: 1949: 1907: 1868: 1799: 1744: 1655: 1428:Probability budget 1171: 1140: 1066: 1046: 934: 870: 843: 753: 662: 589: 569: 476:to probabilities). 461: 349:Problem definition 303:information theory 225:information theory 217: 5194:1952 in computing 5176: 5175: 5025: 5024: 4975:Deblocking filter 4873: 4872: 4721: 4720: 4530: 4529: 4375: 4374: 3816:10.1109/18.705558 3784:– via IEEE. 3600:978-3-319-05290-8 3460:Arithmetic coding 3314:Michelle L. Wachs 2886:{\displaystyle L} 2741: 2554:arithmetic coding 2295:{\displaystyle n} 2243:{\displaystyle n} 2212: 2211: 2124:with probability 1927: 1846: 1838: 1777: 1722: 1650: 1552: 1551: 1069:{\displaystyle C} 592:{\displaystyle n} 453: 452: 445: 427: 309:. The professor, 280:arithmetic coding 215: 214: 5211: 5189:Data compression 5161: 5160: 5151: 5150: 4980:Lapped transform 4884: 4883: 4762:Image resolution 4747:Coding tree unit 4732: 4731: 4541: 4540: 4386: 4385: 4007: 4006: 3993:Data compression 3986: 3979: 3972: 3963: 3962: 3916:Ronald L. Rivest 3908:Thomas H. Cormen 3895: 3893: 3886:Knuth, Donald E. 3882: 3876: 3875: 3840: 3834: 3833: 3831: 3830: 3801: 3792: 3786: 3785: 3767: 3760:Karp, Richard M. 3756: 3750: 3749: 3721: 3708:(ONR). Salerno: 3697: 3691: 3690: 3668: 3662: 3661: 3659: 3647: 3641: 3640: 3626: 3620: 3611: 3605: 3604: 3584: 3578: 3577: 3575: 3574: 3564: 3556:Van Leeuwen, Jan 3552: 3546: 3545: 3536:(9): 1098–1101. 3525: 3513: 3450: 3448: 3447: 3442: 3401:, the result is 3396: 3394: 3393: 3388: 3301: 3299: 3298: 3293: 3250: 3248: 3247: 3242: 3240: 3236: 3212: 3208: 3183: 3181: 3180: 3175: 3173: 3169: 3145: 3141: 3116: 3114: 3113: 3108: 3106: 3102: 3078: 3074: 3049: 3047: 3046: 3041: 3039: 3035: 2960: 2958: 2957: 2952: 2922: 2920: 2919: 2914: 2892: 2890: 2889: 2884: 2872: 2870: 2869: 2864: 2821: 2819: 2818: 2813: 2811: 2807: 2806: 2802: 2801: 2788: 2765: 2764: 2749: 2674: 2672: 2671: 2666: 2514: 2510: 2508: 2507: 2502: 2500: 2499: 2327: 2325: 2324: 2319: 2301: 2299: 2298: 2293: 2249: 2247: 2246: 2241: 2170: 2169: 2167: 2165: 2164: 2159: 2123: 2121: 2120: 2115: 2110: 2109: 2097: 2096: 2084: 2083: 2071: 2070: 2023: 2021: 2020: 2015: 1984: 1982: 1981: 1976: 1962: 1961: 1948: 1947: 1946: 1916: 1914: 1913: 1908: 1903: 1902: 1901: 1888: 1887: 1878: 1877: 1867: 1860: 1859: 1839: 1837: 1836: 1824: 1819: 1818: 1809: 1808: 1798: 1791: 1790: 1770: 1769: 1754: 1753: 1743: 1736: 1735: 1696: 1685: 1664: 1662: 1661: 1656: 1651: 1649: 1648: 1636: 1631: 1630: 1615: 1614: 1522: 1473: 1433: 1394: 1384: 1351: 1331: 1326: 1321: 1316: 1311: 1305: 1265: 1231: 1207: 1206: 1180: 1178: 1177: 1172: 1170: 1149: 1147: 1146: 1141: 1139: 1135: 1134: 1109: 1105: 1104: 1075: 1073: 1072: 1067: 1055: 1053: 1052: 1047: 1045: 1044: 1040: 1039: 1020: 1019: 1008: 1003: 985: 981: 980: 943: 941: 940: 935: 896: 895: 879: 877: 876: 871: 869: 868: 852: 850: 849: 844: 839: 838: 820: 819: 807: 806: 791: 762: 760: 759: 754: 715: 711: 710: 688: 687: 671: 669: 668: 663: 658: 657: 639: 638: 626: 625: 598: 596: 595: 590: 578: 576: 575: 570: 565: 564: 546: 545: 533: 532: 448: 441: 437: 434: 428: 426: 392:"Huffman coding" 385: 361: 353: 296:David A. Huffman 268:entropy encoding 245:David A. Huffman 221:computer science 26: 25: 5219: 5218: 5214: 5213: 5212: 5210: 5209: 5208: 5179: 5178: 5177: 5172: 5139: 5123: 5107: 5088:Rate–distortion 5021: 4950: 4869: 4796: 4717: 4622: 4618:Sub-band coding 4526: 4451:Predictive type 4446: 4371: 4338:LZSS + Huffman 4288:LZ77 + Huffman 4277: 4187: 4123:Dictionary type 4117: 4019:Adaptive coding 3996: 3990: 3943: 3904: 3899: 3898: 3883: 3879: 3864:10.1137/0121057 3841: 3837: 3828: 3826: 3799: 3793: 3789: 3757: 3753: 3738: 3719:10.1.1.589.4726 3698: 3694: 3669: 3665: 3648: 3644: 3627: 3623: 3612: 3608: 3601: 3585: 3581: 3572: 3570: 3562: 3553: 3549: 3523: 3514: 3510: 3505: 3457: 3406: 3403: 3402: 3352: 3349: 3348: 3332: 3326: 3269: 3266: 3265: 3255:problem, after 3220: 3216: 3198: 3194: 3189: 3186: 3185: 3153: 3149: 3131: 3127: 3122: 3119: 3118: 3086: 3082: 3064: 3060: 3055: 3052: 3051: 3019: 3015: 3007: 3004: 3003: 2999: 2991:Richard M. Karp 2968: 2928: 2925: 2924: 2899: 2896: 2895: 2878: 2875: 2874: 2846: 2843: 2842: 2828: 2797: 2793: 2789: 2769: 2760: 2756: 2755: 2751: 2745: 2739: 2736: 2735: 2724:totally ordered 2720: 2701: 2654: 2651: 2650: 2632: 2621:polynomial time 2616: 2541: 2535: 2527:frequency table 2522: 2520:Main properties 2512: 2495: 2491: 2483: 2480: 2479: 2471: 2307: 2304: 2303: 2302:leaf nodes and 2287: 2284: 2283: 2276:two child nodes 2235: 2232: 2231: 2129: 2126: 2125: 2105: 2101: 2092: 2088: 2079: 2075: 2066: 2062: 2057: 2054: 2053: 2042: 2035: 2030: 2028:Basic technique 2000: 1997: 1996: 1957: 1953: 1942: 1938: 1931: 1925: 1922: 1921: 1897: 1893: 1892: 1883: 1879: 1873: 1869: 1855: 1851: 1850: 1832: 1828: 1823: 1814: 1810: 1804: 1800: 1786: 1782: 1781: 1765: 1761: 1749: 1745: 1731: 1727: 1726: 1705: 1702: 1701: 1695: 1687: 1684: 1676: 1644: 1640: 1635: 1626: 1622: 1610: 1606: 1598: 1595: 1594: 1589: 1521: 1513: 1509: 1500: 1498: 1472: 1464: 1460: 1458: 1431: 1429: 1393: 1385: 1383: 1375: 1373: 1350: 1342: 1340: 1329: 1324: 1319: 1314: 1309: 1304: 1296: 1264: 1256: 1230: 1222: 1199:Shannon entropy 1187: 1160: 1155: 1152: 1151: 1124: 1120: 1116: 1094: 1090: 1086: 1081: 1078: 1077: 1061: 1058: 1057: 1035: 1031: 1027: 1015: 1011: 1010: 1004: 993: 970: 966: 962: 957: 954: 953: 951: 946: 945: 891: 887: 885: 882: 881: 864: 860: 858: 855: 854: 834: 830: 815: 811: 802: 798: 781: 776: 773: 772: 770: 765: 764: 706: 702: 698: 683: 679: 677: 674: 673: 653: 649: 634: 630: 621: 617: 606: 603: 602: 600: 584: 581: 580: 560: 556: 541: 537: 528: 524: 513: 510: 509: 507: 501: 466: 449: 438: 432: 429: 386: 384: 374: 362: 351: 339: 292: 247:while he was a 17: 12: 11: 5: 5217: 5207: 5206: 5201: 5196: 5191: 5174: 5173: 5171: 5170: 5155: 5144: 5141: 5140: 5138: 5137: 5131: 5129: 5125: 5124: 5122: 5121: 5115: 5113: 5109: 5108: 5106: 5105: 5100: 5095: 5090: 5085: 5080: 5075: 5070: 5069: 5068: 5058: 5053: 5052: 5051: 5046: 5035: 5033: 5027: 5026: 5023: 5022: 5020: 5019: 5018: 5017: 5012: 5002: 5001: 5000: 4995: 4990: 4982: 4977: 4972: 4967: 4961: 4959: 4952: 4951: 4949: 4948: 4943: 4938: 4933: 4928: 4923: 4918: 4913: 4912: 4911: 4906: 4901: 4890: 4888: 4881: 4875: 4874: 4871: 4870: 4868: 4867: 4866: 4865: 4860: 4855: 4850: 4840: 4835: 4830: 4825: 4820: 4815: 4810: 4804: 4802: 4798: 4797: 4795: 4794: 4789: 4784: 4779: 4774: 4769: 4764: 4759: 4754: 4749: 4744: 4738: 4736: 4729: 4723: 4722: 4719: 4718: 4716: 4715: 4710: 4705: 4704: 4703: 4698: 4693: 4688: 4683: 4673: 4672: 4671: 4661: 4660: 4659: 4654: 4644: 4639: 4633: 4631: 4624: 4623: 4621: 4620: 4615: 4610: 4605: 4600: 4595: 4590: 4585: 4580: 4575: 4570: 4569: 4568: 4563: 4558: 4547: 4545: 4538: 4532: 4531: 4528: 4527: 4525: 4524: 4522:Psychoacoustic 4519: 4518: 4517: 4512: 4507: 4499: 4498: 4497: 4492: 4487: 4482: 4477: 4467: 4466: 4465: 4454: 4452: 4448: 4447: 4445: 4444: 4443: 4442: 4437: 4432: 4422: 4417: 4412: 4411: 4410: 4405: 4394: 4392: 4390:Transform type 4383: 4377: 4376: 4373: 4372: 4370: 4369: 4368: 4367: 4359: 4358: 4357: 4354: 4346: 4345: 4344: 4336: 4335: 4334: 4326: 4325: 4324: 4316: 4315: 4314: 4306: 4305: 4304: 4299: 4294: 4285: 4283: 4279: 4278: 4276: 4275: 4270: 4265: 4260: 4255: 4250: 4249: 4248: 4243: 4233: 4228: 4223: 4222: 4221: 4211: 4206: 4201: 4195: 4193: 4189: 4188: 4186: 4185: 4184: 4183: 4178: 4173: 4168: 4163: 4158: 4153: 4148: 4143: 4133: 4127: 4125: 4119: 4118: 4116: 4115: 4114: 4113: 4108: 4103: 4098: 4088: 4083: 4078: 4073: 4068: 4063: 4058: 4057: 4056: 4051: 4046: 4036: 4031: 4026: 4021: 4015: 4013: 4004: 3998: 3997: 3989: 3988: 3981: 3974: 3966: 3960: 3959: 3954: 3949: 3942: 3941:External links 3939: 3938: 3937: 3920:Clifford Stein 3903: 3900: 3897: 3896: 3877: 3835: 3787: 3762:(1961-01-31). 3751: 3736: 3692: 3681:(2): 228–230. 3663: 3642: 3621: 3606: 3599: 3579: 3547: 3507: 3506: 3504: 3501: 3456: 3453: 3440: 3437: 3434: 3431: 3428: 3425: 3422: 3419: 3416: 3413: 3410: 3386: 3383: 3380: 3377: 3374: 3371: 3368: 3365: 3362: 3359: 3356: 3328:Main article: 3325: 3322: 3310:Adriano Garsia 3291: 3288: 3285: 3282: 3279: 3276: 3273: 3239: 3235: 3232: 3229: 3226: 3223: 3219: 3215: 3211: 3207: 3204: 3201: 3197: 3193: 3172: 3168: 3165: 3162: 3159: 3156: 3152: 3148: 3144: 3140: 3137: 3134: 3130: 3126: 3105: 3101: 3098: 3095: 3092: 3089: 3085: 3081: 3077: 3073: 3070: 3067: 3063: 3059: 3038: 3034: 3031: 3028: 3025: 3022: 3018: 3014: 3011: 2998: 2995: 2967: 2964: 2950: 2947: 2944: 2941: 2938: 2935: 2932: 2912: 2909: 2906: 2903: 2882: 2862: 2859: 2856: 2853: 2850: 2827: 2824: 2810: 2805: 2800: 2796: 2792: 2787: 2784: 2781: 2778: 2775: 2772: 2768: 2763: 2759: 2754: 2748: 2744: 2719: 2716: 2700: 2697: 2664: 2661: 2658: 2631: 2625: 2615: 2612: 2574:block encoding 2534: 2531: 2521: 2518: 2498: 2494: 2490: 2487: 2470: 2467: 2448: 2447: 2436: 2429: 2428: 2425: 2424: 2423: 2420: 2417: 2411: 2408: 2384:) time, where 2362: 2361: 2358: 2357: 2356: 2353: 2350: 2344: 2337:priority queue 2317: 2314: 2311: 2291: 2239: 2210: 2209: 2206: 2202: 2201: 2198: 2194: 2193: 2190: 2186: 2185: 2182: 2178: 2177: 2174: 2157: 2154: 2151: 2148: 2145: 2142: 2139: 2136: 2133: 2113: 2108: 2104: 2100: 2095: 2091: 2087: 2082: 2078: 2074: 2069: 2065: 2061: 2034: 2031: 2029: 2026: 2013: 2010: 2007: 2004: 1974: 1971: 1968: 1965: 1960: 1956: 1952: 1945: 1941: 1937: 1934: 1930: 1918: 1917: 1906: 1900: 1896: 1891: 1886: 1882: 1876: 1872: 1866: 1863: 1858: 1854: 1849: 1845: 1842: 1835: 1831: 1827: 1822: 1817: 1813: 1807: 1803: 1797: 1794: 1789: 1785: 1780: 1776: 1773: 1768: 1764: 1760: 1757: 1752: 1748: 1742: 1739: 1734: 1730: 1725: 1721: 1718: 1715: 1712: 1709: 1691: 1680: 1666: 1665: 1654: 1647: 1643: 1639: 1634: 1629: 1625: 1621: 1618: 1613: 1609: 1605: 1602: 1587: 1577:Shannon (1948) 1575:As defined by 1550: 1549: 1539: 1536: 1533: 1530: 1527: 1524: 1517: 1511: 1505: 1494: 1493: 1490: 1487: 1484: 1481: 1478: 1475: 1468: 1462: 1454: 1453: 1450: 1447: 1444: 1441: 1438: 1435: 1426: 1422: 1421: 1411: 1408: 1405: 1402: 1399: 1396: 1389: 1379: 1369: 1368: 1365: 1362: 1359: 1356: 1353: 1346: 1336: 1335: 1332: 1327: 1322: 1317: 1312: 1307: 1300: 1293: 1286: 1285: 1282: 1279: 1276: 1273: 1270: 1267: 1260: 1252: 1251: 1248: 1245: 1242: 1239: 1236: 1233: 1226: 1219: 1186: 1183: 1169: 1166: 1163: 1159: 1138: 1133: 1130: 1127: 1123: 1119: 1115: 1112: 1108: 1103: 1100: 1097: 1093: 1089: 1085: 1065: 1043: 1038: 1034: 1030: 1026: 1023: 1018: 1014: 1007: 1002: 999: 996: 992: 988: 984: 979: 976: 973: 969: 965: 961: 933: 930: 927: 924: 921: 918: 915: 912: 909: 906: 903: 899: 894: 890: 867: 863: 842: 837: 833: 829: 826: 823: 818: 814: 810: 805: 801: 797: 794: 790: 787: 784: 780: 752: 749: 746: 743: 740: 737: 734: 731: 728: 725: 722: 718: 714: 709: 705: 701: 697: 694: 691: 686: 682: 661: 656: 652: 648: 645: 642: 637: 633: 629: 624: 620: 616: 613: 610: 588: 568: 563: 559: 555: 552: 549: 544: 540: 536: 531: 527: 523: 520: 517: 500: 497: 496: 495: 480: 477: 470: 465: 462: 451: 450: 365: 363: 356: 350: 347: 338: 335: 327:Claude Shannon 311:Robert M. Fano 291: 288: 241:Huffman coding 213: 212: 209: 206: 202: 201: 198: 195: 191: 190: 187: 184: 180: 179: 176: 173: 169: 168: 165: 162: 158: 157: 154: 151: 147: 146: 143: 140: 136: 135: 132: 129: 125: 124: 121: 118: 114: 113: 110: 107: 103: 102: 99: 96: 92: 91: 88: 85: 81: 80: 77: 74: 70: 69: 66: 63: 59: 58: 55: 52: 48: 47: 44: 41: 37: 36: 33: 30: 15: 9: 6: 4: 3: 2: 5216: 5205: 5202: 5200: 5197: 5195: 5192: 5190: 5187: 5186: 5184: 5168: 5164: 5156: 5154: 5146: 5145: 5142: 5136: 5133: 5132: 5130: 5126: 5120: 5117: 5116: 5114: 5110: 5104: 5101: 5099: 5096: 5094: 5091: 5089: 5086: 5084: 5081: 5079: 5076: 5074: 5071: 5067: 5064: 5063: 5062: 5059: 5057: 5054: 5050: 5047: 5045: 5042: 5041: 5040: 5037: 5036: 5034: 5032: 5028: 5016: 5013: 5011: 5008: 5007: 5006: 5003: 4999: 4996: 4994: 4991: 4989: 4986: 4985: 4983: 4981: 4978: 4976: 4973: 4971: 4968: 4966: 4963: 4962: 4960: 4957: 4953: 4947: 4946:Video quality 4944: 4942: 4939: 4937: 4934: 4932: 4929: 4927: 4924: 4922: 4919: 4917: 4914: 4910: 4907: 4905: 4902: 4900: 4897: 4896: 4895: 4892: 4891: 4889: 4885: 4882: 4880: 4876: 4864: 4861: 4859: 4856: 4854: 4851: 4849: 4846: 4845: 4844: 4841: 4839: 4836: 4834: 4831: 4829: 4826: 4824: 4821: 4819: 4816: 4814: 4811: 4809: 4806: 4805: 4803: 4799: 4793: 4790: 4788: 4785: 4783: 4780: 4778: 4775: 4773: 4770: 4768: 4765: 4763: 4760: 4758: 4755: 4753: 4750: 4748: 4745: 4743: 4740: 4739: 4737: 4733: 4730: 4728: 4724: 4714: 4711: 4709: 4706: 4702: 4699: 4697: 4694: 4692: 4689: 4687: 4684: 4682: 4679: 4678: 4677: 4674: 4670: 4667: 4666: 4665: 4662: 4658: 4655: 4653: 4650: 4649: 4648: 4645: 4643: 4640: 4638: 4635: 4634: 4632: 4629: 4625: 4619: 4616: 4614: 4613:Speech coding 4611: 4609: 4608:Sound quality 4606: 4604: 4601: 4599: 4596: 4594: 4591: 4589: 4586: 4584: 4583:Dynamic range 4581: 4579: 4576: 4574: 4571: 4567: 4564: 4562: 4559: 4557: 4554: 4553: 4552: 4549: 4548: 4546: 4542: 4539: 4537: 4533: 4523: 4520: 4516: 4513: 4511: 4508: 4506: 4503: 4502: 4500: 4496: 4493: 4491: 4488: 4486: 4483: 4481: 4478: 4476: 4473: 4472: 4471: 4468: 4464: 4461: 4460: 4459: 4456: 4455: 4453: 4449: 4441: 4438: 4436: 4433: 4431: 4428: 4427: 4426: 4423: 4421: 4418: 4416: 4413: 4409: 4406: 4404: 4401: 4400: 4399: 4396: 4395: 4393: 4391: 4387: 4384: 4382: 4378: 4366: 4363: 4362: 4360: 4355: 4353: 4350: 4349: 4348:LZ77 + Range 4347: 4343: 4340: 4339: 4337: 4333: 4330: 4329: 4327: 4323: 4320: 4319: 4317: 4313: 4310: 4309: 4307: 4303: 4300: 4298: 4295: 4293: 4290: 4289: 4287: 4286: 4284: 4280: 4274: 4271: 4269: 4266: 4264: 4261: 4259: 4256: 4254: 4251: 4247: 4244: 4242: 4239: 4238: 4237: 4234: 4232: 4229: 4227: 4224: 4220: 4217: 4216: 4215: 4212: 4210: 4207: 4205: 4202: 4200: 4197: 4196: 4194: 4190: 4182: 4179: 4177: 4174: 4172: 4169: 4167: 4164: 4162: 4159: 4157: 4154: 4152: 4149: 4147: 4144: 4142: 4139: 4138: 4137: 4134: 4132: 4129: 4128: 4126: 4124: 4120: 4112: 4109: 4107: 4104: 4102: 4099: 4097: 4094: 4093: 4092: 4089: 4087: 4084: 4082: 4079: 4077: 4074: 4072: 4069: 4067: 4064: 4062: 4059: 4055: 4052: 4050: 4047: 4045: 4042: 4041: 4040: 4037: 4035: 4032: 4030: 4027: 4025: 4022: 4020: 4017: 4016: 4014: 4012: 4008: 4005: 4003: 3999: 3994: 3987: 3982: 3980: 3975: 3973: 3968: 3967: 3964: 3958: 3955: 3953: 3950: 3948: 3945: 3944: 3935: 3934:0-262-03293-7 3931: 3927: 3926: 3921: 3917: 3913: 3909: 3906: 3905: 3891: 3887: 3881: 3873: 3869: 3865: 3861: 3857: 3853: 3849: 3848:Tucker, A. C. 3845: 3839: 3825: 3821: 3817: 3813: 3809: 3805: 3798: 3791: 3783: 3779: 3775: 3771: 3766: 3761: 3755: 3747: 3743: 3739: 3737:0-8186-8132-2 3733: 3729: 3725: 3720: 3715: 3711: 3707: 3703: 3696: 3688: 3684: 3680: 3676: 3675: 3667: 3658: 3653: 3646: 3638: 3637: 3632: 3625: 3618: 3617: 3610: 3602: 3596: 3592: 3591: 3583: 3568: 3561: 3557: 3551: 3543: 3539: 3535: 3531: 3530: 3522: 3518: 3512: 3508: 3500: 3498: 3494: 3490: 3486: 3482: 3478: 3474: 3469: 3466: 3461: 3452: 3435: 3432: 3429: 3426: 3423: 3420: 3417: 3414: 3411: 3400: 3381: 3378: 3375: 3372: 3369: 3366: 3363: 3360: 3357: 3346: 3342: 3338: 3331: 3321: 3319: 3315: 3311: 3307: 3303: 3286: 3283: 3280: 3277: 3271: 3262: 3258: 3254: 3237: 3233: 3230: 3227: 3224: 3221: 3217: 3213: 3209: 3205: 3202: 3199: 3195: 3191: 3170: 3166: 3163: 3160: 3157: 3154: 3150: 3146: 3142: 3138: 3135: 3132: 3128: 3124: 3103: 3099: 3096: 3093: 3090: 3087: 3083: 3079: 3075: 3071: 3068: 3065: 3061: 3057: 3036: 3032: 3029: 3026: 3023: 3020: 3016: 3012: 3009: 2994: 2992: 2988: 2983: 2979: 2977: 2973: 2963: 2961: 2945: 2942: 2939: 2936: 2930: 2907: 2901: 2880: 2857: 2854: 2848: 2840: 2836: 2832: 2823: 2808: 2803: 2798: 2794: 2790: 2766: 2761: 2757: 2752: 2746: 2732: 2728: 2725: 2715: 2713: 2708: 2707: 2696: 2694: 2690: 2686: 2682: 2678: 2662: 2659: 2656: 2648: 2644: 2640: 2638: 2629: 2624: 2622: 2611: 2609: 2605: 2604:Golomb coding 2601: 2597: 2592: 2588: 2586: 2581: 2579: 2575: 2571: 2566: 2563: 2557: 2555: 2551: 2547: 2540: 2530: 2528: 2517: 2496: 2492: 2488: 2485: 2477: 2469:Decompression 2466: 2462: 2460: 2456: 2451: 2445: 2441: 2437: 2434: 2433: 2432: 2426: 2421: 2418: 2415: 2414: 2412: 2409: 2406: 2405: 2404: 2402: 2398: 2394: 2389: 2387: 2383: 2379: 2375: 2371: 2367: 2359: 2354: 2351: 2348: 2347: 2345: 2342: 2341: 2340: 2338: 2333: 2329: 2315: 2312: 2309: 2289: 2281: 2277: 2273: 2269: 2265: 2261: 2257: 2256:internal node 2253: 2237: 2229: 2225: 2216: 2207: 2204: 2203: 2199: 2196: 2195: 2191: 2188: 2187: 2183: 2180: 2179: 2175: 2172: 2171: 2152: 2149: 2146: 2143: 2140: 2137: 2134: 2106: 2102: 2098: 2093: 2089: 2085: 2080: 2076: 2072: 2067: 2063: 2050: 2039: 2025: 2008: 2002: 1993: 1991: 1986: 1972: 1969: 1966: 1963: 1958: 1954: 1950: 1943: 1939: 1932: 1904: 1898: 1894: 1889: 1884: 1880: 1874: 1870: 1864: 1861: 1856: 1852: 1847: 1843: 1840: 1833: 1829: 1825: 1820: 1815: 1811: 1805: 1801: 1795: 1792: 1787: 1783: 1778: 1774: 1766: 1762: 1755: 1750: 1746: 1740: 1737: 1732: 1728: 1723: 1719: 1713: 1707: 1700: 1699: 1698: 1694: 1690: 1683: 1679: 1674: 1671: 1652: 1645: 1641: 1637: 1632: 1627: 1623: 1619: 1611: 1607: 1600: 1593: 1592: 1591: 1586: 1582: 1578: 1573: 1571: 1567: 1563: 1562: 1557: 1547: 1543: 1520: 1516: 1508: 1504: 1496: 1495: 1471: 1467: 1456: 1455: 1427: 1423: 1419: 1415: 1392: 1388: 1382: 1378: 1371: 1370: 1349: 1345: 1338: 1337: 1303: 1299: 1294: 1292: 1287: 1263: 1259: 1254: 1253: 1249: 1229: 1225: 1220: 1217: 1213: 1208: 1205: 1203: 1200: 1196: 1192: 1182: 1167: 1164: 1161: 1157: 1150:for any code 1136: 1131: 1128: 1125: 1121: 1117: 1113: 1110: 1106: 1101: 1098: 1095: 1091: 1087: 1083: 1076:. Condition: 1063: 1041: 1036: 1032: 1028: 1024: 1021: 1016: 1012: 1005: 1000: 997: 994: 990: 986: 982: 977: 974: 971: 967: 963: 959: 949: 928: 925: 922: 919: 916: 913: 910: 904: 901: 897: 892: 888: 865: 861: 835: 831: 827: 824: 821: 816: 812: 808: 803: 799: 792: 788: 785: 782: 778: 768: 747: 744: 741: 738: 735: 732: 729: 723: 720: 716: 712: 707: 703: 699: 695: 692: 689: 684: 680: 654: 650: 646: 643: 640: 635: 631: 627: 622: 618: 611: 608: 586: 561: 557: 553: 550: 547: 542: 538: 534: 529: 525: 518: 515: 505: 493: 489: 485: 481: 478: 475: 471: 468: 467: 457: 447: 444: 436: 433:December 2021 425: 422: 418: 415: 411: 408: 404: 401: 397: 394: â€“  393: 389: 388:Find sources: 382: 378: 372: 371: 366:This article 364: 360: 355: 354: 346: 344: 334: 332: 328: 323: 321: 316: 313:, assigned a 312: 308: 304: 301: 297: 287: 285: 281: 277: 273: 269: 265: 261: 256: 254: 250: 246: 242: 238: 234: 230: 226: 222: 210: 207: 204: 203: 199: 196: 193: 192: 188: 185: 182: 181: 177: 174: 171: 170: 166: 163: 160: 159: 155: 152: 149: 148: 144: 141: 138: 137: 133: 130: 127: 126: 122: 119: 116: 115: 111: 108: 105: 104: 100: 97: 94: 93: 89: 86: 83: 82: 78: 75: 72: 71: 67: 64: 61: 60: 56: 53: 50: 49: 45: 42: 39: 38: 34: 31: 28: 27: 21: 5204:Binary trees 5119:Hutter Prize 5083:Quantization 4988:Compensation 4782:Quantization 4505:Compensation 4071:Shannon–Fano 4038: 4011:Entropy type 3923: 3902:Bibliography 3889: 3880: 3855: 3851: 3838: 3827:. Retrieved 3807: 3803: 3790: 3773: 3769: 3754: 3701: 3695: 3678: 3672: 3666: 3645: 3634: 3624: 3615: 3609: 3589: 3582: 3571:. Retrieved 3566: 3550: 3533: 3527: 3511: 3497:quantization 3470: 3464: 3458: 3455:Applications 3398: 3340: 3336: 3333: 3252: 3000: 2981: 2980: 2975: 2971: 2969: 2830: 2829: 2730: 2721: 2704: 2702: 2692: 2688: 2684: 2680: 2676: 2646: 2642: 2639:-ary Huffman 2636: 2635: 2633: 2627: 2617: 2593: 2589: 2582: 2570:power of two 2567: 2558: 2542: 2523: 2472: 2463: 2458: 2454: 2452: 2449: 2443: 2439: 2430: 2396: 2390: 2385: 2381: 2377: 2373: 2372:leaves has 2 2369: 2365: 2363: 2334: 2330: 2279: 2275: 2271: 2267: 2263: 2262:itself, the 2259: 2221: 1994: 1987: 1919: 1692: 1688: 1681: 1677: 1672: 1667: 1584: 1580: 1574: 1569: 1565: 1560: 1555: 1553: 1545: 1541: 1518: 1514: 1506: 1502: 1469: 1465: 1417: 1413: 1390: 1386: 1380: 1376: 1347: 1343: 1301: 1297: 1290: 1261: 1257: 1227: 1223: 1215: 1211: 1201: 1194: 1190: 1188: 947: 766: 503: 502: 474:proportional 439: 430: 420: 413: 406: 399: 387: 375:Please help 370:verification 367: 340: 324: 293: 263: 257: 240: 229:Huffman code 228: 218: 5078:Prefix code 4931:Frame types 4752:Color space 4578:Convolution 4308:LZ77 + ANS 4219:Incremental 4192:Other types 4111:Levenshtein 3517:Huffman, D. 3261:Alan Tucker 2393:linear-time 2274:, links to 2224:binary tree 2033:Compression 1425:Optimality 1295:Codewords ( 343:prefix code 337:Terminology 320:binary tree 251:student at 233:prefix code 5183:Categories 5135:Mark Adler 5093:Redundancy 5010:Daubechies 4993:Estimation 4926:Frame rate 4848:Daubechies 4808:Chain code 4767:Macroblock 4573:Companding 4510:Estimation 4430:Daubechies 4136:Lempel–Ziv 4096:Exp-Golomb 4024:Arithmetic 3858:(4): 514. 3829:2024-09-10 3657:1604.07476 3573:2014-02-20 3503:References 2987:Morse code 2614:Variations 2537:See also: 2533:Optimality 1548:) = 2.205 403:newspapers 315:term paper 5112:Community 4936:Interlace 4322:Zstandard 4101:Fibonacci 4091:Universal 4049:Canonical 3844:Hu, T. C. 3746:124587565 3714:CiteSeerX 3569:: 382–410 3284:⁡ 3253:Hu–Tucker 2943:⁡ 2489:⋅ 2313:− 2252:leaf node 1964:⁡ 1936:→ 1890:⁡ 1848:∑ 1844:− 1821:⁡ 1779:∑ 1724:∑ 1633:⁡ 1420:) = 2.25 1255:Weights ( 1111:≤ 1025:⁡ 991:∑ 923:… 905:∈ 825:… 742:… 724:∈ 696:⁡ 644:… 551:… 508:Alphabet 294:In 1951, 5098:Symmetry 5066:Timeline 5049:FM-index 4894:Bit rate 4887:Concepts 4735:Concepts 4598:Sampling 4551:Bit rate 4544:Concepts 4246:Sequitur 4081:Tunstall 4054:Modified 4044:Adaptive 4002:Lossless 3639:: 54–58. 3558:(1976). 3519:(1952). 3487:such as 3257:T. C. Hu 2873:, where 2576:, e.g., 2044:message. 1570:biunique 1566:complete 1556:biunique 1221:Symbol ( 488:expected 298:and his 5056:Entropy 5005:Wavelet 4984:Motion 4843:Wavelet 4823:Fractal 4818:Deflate 4801:Methods 4588:Latency 4501:Motion 4425:Wavelet 4342:LHA/LZH 4292:Deflate 4241:Re-Pair 4236:Grammar 4066:Shannon 4039:Huffman 3995:methods 3872:2099603 3824:2265146 3477:Deflate 2215:entropy 1670:entropy 1492:  1452:= 1.00 1334:  1289:Output 1210:Input ( 1185:Example 417:scholar 290:History 5167:codecs 5128:People 5031:Theory 4998:Vector 4515:Vector 4332:Brotli 4282:Hybrid 4181:Snappy 4034:Golomb 3932:  3918:, and 3870:  3822:  3744:  3734:  3716:  3597:  3485:codecs 2839:greedy 2585:dyadic 2562:patent 2401:queues 2280:parent 2272:weight 2268:parent 2264:weight 2260:symbol 2254:or an 2173:Symbol 1538:0.518 1535:0.423 1532:0.521 1529:0.411 1526:0.332 1022:length 767:Output 693:weight 601:Tuple 419:  412:  405:  398:  390:  272:linear 264:weight 211:10010 200:00111 189:11000 178:10011 167:00110 156:11001 4958:parts 4956:Codec 4921:Frame 4879:Video 4863:SPIHT 4772:Pixel 4727:Image 4681:ACELP 4652:ADPCM 4642:Îź-law 4637:A-law 4630:parts 4628:Codec 4536:Audio 4475:ACELP 4463:ADPCM 4440:SPIHT 4381:Lossy 4365:bzip2 4356:LZHAM 4312:LZFSE 4214:Delta 4106:Gamma 4086:Unary 4061:Range 3868:JSTOR 3820:S2CID 3800:(PDF) 3742:S2CID 3652:arXiv 3567:ICALP 3563:(PDF) 3524:(PDF) 3481:PKZIP 3302:-time 2578:ASCII 2228:array 2176:Code 1489:1.79 1486:2.64 1483:1.74 1480:2.74 1477:3.32 1410:0.58 1407:0.32 1404:0.60 1401:0.45 1398:0.30 1281:0.29 1278:0.16 1275:0.30 1272:0.15 1269:0.10 771:Code 504:Input 469:Given 424:JSTOR 410:books 249:Sc.D. 145:0110 134:1011 123:0010 112:0111 101:1000 90:1010 79:1101 40:space 35:Code 4970:DPCM 4777:PSNR 4708:MDCT 4701:WLPC 4686:CELP 4647:DPCM 4495:WLPC 4480:CELP 4458:DPCM 4408:MDCT 4352:LZMA 4253:LDCT 4231:DPCM 4176:LZWL 4166:LZSS 4161:LZRW 4151:LZJB 3930:ISBN 3732:ISBN 3710:IEEE 3595:ISBN 3491:and 3489:JPEG 3312:and 3259:and 2634:The 2380:log 2218:two. 2208:111 2200:110 2153:0.05 2141:0.35 1862:> 1793:> 1738:> 1668:The 1474:) ≈ 1461:−log 1449:1/4 1446:1/4 1443:1/4 1440:1/8 1437:1/8 1284:= 1 1250:Sum 952:Let 948:Goal 479:Find 396:news 307:exam 227:, a 223:and 68:000 57:010 46:111 32:Freq 29:Char 5015:DWT 4965:DCT 4909:VBR 4904:CBR 4899:ABR 4858:EZW 4853:DWT 4838:RLE 4828:KLT 4813:DCT 4696:LSP 4691:LAR 4676:LPC 4669:FFT 4566:VBR 4561:CBR 4556:ABR 4490:LSP 4485:LAR 4470:LPC 4435:DWT 4420:FFT 4415:DST 4403:DCT 4302:LZS 4297:LZX 4273:RLE 4268:PPM 4263:PAQ 4258:MTF 4226:DMC 4204:CTW 4199:BWT 4171:LZW 4156:LZO 4146:LZ4 4141:842 3860:doi 3812:doi 3778:doi 3724:doi 3683:doi 3538:doi 3493:MP3 3418:111 3412:110 3364:001 3358:000 3308:of 3281:log 3184:or 2940:log 2923:or 2743:max 2395:(O( 2192:10 2147:0.2 2135:0.4 1955:log 1929:lim 1881:log 1812:log 1624:log 1510:log 1315:011 1310:010 379:by 300:MIT 282:or 253:MIT 219:In 5185:: 4833:LP 4664:FT 4657:DM 4209:CM 3922:. 3914:, 3910:, 3866:. 3856:21 3854:. 3846:; 3818:. 3808:44 3806:. 3802:. 3772:. 3768:. 3740:. 3730:. 3722:. 3679:21 3677:. 3633:. 3565:. 3534:40 3532:. 3526:. 3451:. 3436:10 3430:01 3424:00 3382:11 3376:10 3370:01 3320:. 3234:11 3228:10 3161:01 3155:00 3100:01 3088:00 2623:. 2602:, 2205:a4 2197:a3 2189:a2 2184:0 2181:a1 1572:. 1523:) 1434:) 1395:) 1367:2 1364:2 1361:2 1358:3 1355:3 1352:) 1330:10 1325:00 1320:11 1306:) 1266:) 1247:e 1244:d 1241:c 1238:b 1235:a 1232:) 1218:) 1214:, 1181:. 763:. 599:. 494:). 482:A 333:. 5169:) 5165:( 3985:e 3978:t 3971:v 3874:. 3862:: 3832:. 3814:: 3780:: 3774:7 3748:. 3726:: 3689:. 3685:: 3660:. 3654:: 3603:. 3576:. 3544:. 3540:: 3479:( 3465:k 3439:} 3433:, 3427:, 3421:, 3415:, 3409:{ 3385:} 3379:, 3373:, 3367:, 3361:, 3355:{ 3290:) 3287:n 3278:n 3275:( 3272:O 3238:} 3231:, 3225:, 3222:0 3218:{ 3214:= 3210:) 3206:C 3203:, 3200:A 3196:( 3192:H 3171:} 3167:1 3164:, 3158:, 3151:{ 3147:= 3143:) 3139:C 3136:, 3133:A 3129:( 3125:H 3104:} 3097:, 3094:1 3091:, 3084:{ 3080:= 3076:) 3072:C 3069:, 3066:A 3062:( 3058:H 3037:} 3033:c 3030:, 3027:b 3024:, 3021:a 3017:{ 3013:= 3010:A 2976:N 2972:N 2949:) 2946:n 2937:n 2934:( 2931:O 2911:) 2908:n 2905:( 2902:O 2881:L 2861:) 2858:L 2855:n 2852:( 2849:O 2809:] 2804:) 2799:i 2795:c 2791:( 2786:h 2783:t 2780:g 2777:n 2774:e 2771:l 2767:+ 2762:i 2758:w 2753:[ 2747:i 2693:n 2689:n 2685:n 2681:n 2677:n 2663:2 2660:= 2657:n 2647:n 2643:n 2637:n 2628:n 2513:B 2497:B 2493:2 2486:B 2459:n 2455:n 2444:1 2440:0 2397:n 2386:n 2382:n 2378:n 2374:n 2370:n 2366:n 2316:1 2310:n 2290:n 2238:n 2156:} 2150:; 2144:; 2138:; 2132:{ 2112:} 2107:4 2103:a 2099:, 2094:3 2090:a 2086:, 2081:2 2077:a 2073:, 2068:1 2064:a 2060:{ 2012:) 2009:C 2006:( 2003:L 1973:0 1970:= 1967:w 1959:2 1951:w 1944:+ 1940:0 1933:w 1905:. 1899:i 1895:w 1885:2 1875:i 1871:w 1865:0 1857:i 1853:w 1841:= 1834:i 1830:w 1826:1 1816:2 1806:i 1802:w 1796:0 1788:i 1784:w 1775:= 1772:) 1767:i 1763:a 1759:( 1756:h 1751:i 1747:w 1741:0 1733:i 1729:w 1720:= 1717:) 1714:A 1711:( 1708:H 1693:i 1689:w 1682:i 1678:a 1673:H 1653:. 1646:i 1642:w 1638:1 1628:2 1620:= 1617:) 1612:i 1608:a 1604:( 1601:h 1588:i 1585:a 1581:h 1546:A 1544:( 1542:H 1519:i 1515:w 1512:2 1507:i 1503:w 1501:- 1499:( 1470:i 1466:w 1463:2 1459:( 1432:2 1430:( 1418:C 1416:( 1414:L 1391:i 1387:w 1381:i 1377:l 1374:( 1348:i 1344:l 1341:( 1302:i 1298:c 1291:C 1262:i 1258:w 1228:i 1224:a 1216:W 1212:A 1202:H 1195:L 1191:L 1168:) 1165:W 1162:( 1158:T 1137:) 1132:) 1129:W 1126:( 1122:T 1118:( 1114:L 1107:) 1102:) 1099:W 1096:( 1092:C 1088:( 1084:L 1064:C 1042:) 1037:i 1033:c 1029:( 1017:i 1013:w 1006:n 1001:1 998:= 995:i 987:= 983:) 978:) 975:W 972:( 968:C 964:( 960:L 950:. 944:. 932:} 929:n 926:, 920:, 917:2 914:, 911:1 908:{ 902:i 898:, 893:i 889:a 866:i 862:c 841:) 836:n 832:c 828:, 822:, 817:2 813:c 809:, 804:1 800:c 796:( 793:= 789:) 786:W 783:( 779:C 769:. 751:} 748:n 745:, 739:, 736:2 733:, 730:1 727:{ 721:i 717:, 713:) 708:i 704:a 700:( 690:= 685:i 681:w 660:) 655:n 651:w 647:, 641:, 636:2 632:w 628:, 623:1 619:w 615:( 612:= 609:W 587:n 567:) 562:n 558:a 554:, 548:, 543:2 539:a 535:, 530:1 526:a 522:( 519:= 516:A 506:. 446:) 440:( 435:) 431:( 421:¡ 414:¡ 407:¡ 400:¡ 373:. 208:1 205:x 197:1 194:u 186:1 183:r 175:1 172:p 164:1 161:o 153:1 150:l 142:2 139:t 131:2 128:s 120:2 117:n 109:2 106:m 98:2 95:i 87:2 84:h 76:3 73:f 65:4 62:e 54:4 51:a 43:7

Index


computer science
information theory
prefix code
lossless data compression
David A. Huffman
Sc.D.
MIT
variable-length code
entropy encoding
linear
is not always optimal
arithmetic coding
asymmetric numeral systems
David A. Huffman
MIT
information theory
exam
Robert M. Fano
term paper
binary tree
Claude Shannon
Shannon–Fano coding
prefix code

verification
improve this article
adding citations to reliable sources
"Huffman coding"
news

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

↑