Optimal coding and compression where Pmin is the smallest source-symbol probability. The Huffman coding efficiency, n = H/L, is, thus, guaranteed to be strictly greater than 1 - p/L. In the example of Table 9.1, for instance, we find L - H = 4.212 - 4.184 = 0.028, which is lower than Pbound = Pmin + 0.08607 = 0.001 + 0.08607 = 0.0877, and n = 99.33%, which is greater than 1 - 0.0877/4.212 = 97.9%. Even tighter redundancy bounds can also be found for specific probability distributions. 6 Data compression Any information source, such as texts, messages, recordings, data files, voice or music recordings, still or motion pictures, can be coded into sequences of binary codewords. As we have learnt, the encoding conversion can use either fixed-length or variable-length codes. In the first case, the bit size of the resulting sequence length is a multiple of the codeword length. In the second case, the sequence can be made shorter through an adequate choice of code, or through a second coding conversion, from a first fixed-length code to a better, variable-length code. Converting a binary codeword sequence into a shorter one is called data compression. Since the advent of the Internet and electronic mail, we know from direct personal experience what data compression means: if compression is not used, it may seem to take forever to upload or download files like text, slides, or pictures. Put simply, compression is the art of packing a maximum of data into a smallest number of bits. It can be achieved by the proper and optimal choice of variable-length codes. As we have learnt, Shannon-Fano and Huffman codes are both optimal, since, in the general case, their mean codeword length is shorter than the fixed-length value given by L = log2 N (N = number of source symbols to encode). The compression rate is defined by taking a fixed-length code as a reference, for instance the ASCII code with its 7 bit/symbol codewords. If, with a given symbol source, a variable-length code yields a shorter mean codeword length L < 7, the compr