ult that L(X) > L**(X). As a matter of fact, the situation is exactly opposite for our English-letter coding example. Indeed, we find from Table 9.1 that D(pllq) = 0.028 (and, incidentally, (E) X = 0 since q(x) is of the form 2-m). Referring to the results in 9.1 Huffman codes both Table 8.5 and Table 9.1, we obtain from Eq. (8.15) and Eq. (8.17): L**(X) = 4.577 E [4.184, 4.184 + 1] = [4.184,5.184] L(X) = 4.212 E [4.184 + 0.028, 4.184 + 0.028 + 1] = [4.212,5.212] which shows not only that the Huffman code is more efficient (or closer to optimal) than the Shannon code (L(X) < L**(X)) but also that in this example the penalty D(p)|q) is very close to the difference A = L(X) - H(X). Incidentally, it appears here that = 0, but this is only an effect of number accuracy. How does the Huffman code perform with dyadic sources? It is easy to establish from any basic example with source p(x) = 2-n(x) (n(x) = integer) that, in such a case, the Huffman-code algorithm assigns the individual codeword length /**xx = = -log 2-n(x) = n(x). This is the same result as for the Shannon-Fano code and, as we have seen earlier, the resulting mean length is the absolute minimum, or L(X) = L**(X) = H(X). It is a nice exercise to prove directly the general property according to which Huffman coding of dyadic sources is 100% efficient. The important lesson and general conclusion to retain from the above analysis is that the mean codeword length of Huffman codes L(X) is the smallest achievable, regardless of the source distribution. One can also state that Huffman coding is optimal with respect to any other code, meaning that the latter always yields longer or equal codeword lengths. Such a property of optimality can be stated as follows: If L(X) is the mean codeword length of any code different from the Huffman code, then L(X) > L(X). The reader may refer to most IT textbooks for a formal proof of Huffman codes optimality. As we have seen in Chapter 8, however, the individual codeword lengths, l*(x) = [-logp(x)] assigned by the Shannon-Fano