ource programs can be found in the Internet, see for instance, www.compressconsult.com/huffman/#codelengths and www.cs.mu.oz.au/~alistair/inplace.c. 9.3 Block codes following results: Shannon-Fano code: L** = 8.262 bit/digram n=93.78%, Huffman code: = 7.778 bit/digram n = 99.617%, where for the source entropy the reference used is H = 7.748 bit/digram. As expected, the Huffman code is found to be more efficient than the Shannon- Fano code. It is close to 0.3% of the source entropy, which represents a record value for the examples described SO far in these chapters! For comparison, we found ear- lier (Table 9.1) that the efficiency of the English monograms is n = 99.33% (L** = 4.212 bit/monogram), which is close to 0.6% of the source entropy. The efficiency of monogram coding is, therefore, not significantly different from that of digram coding. Were we to compress an English book with Huffman codes, while assuming five bits per character in the original book, we would get the following compression rates: (monogram code), 17.38% (digram code). The above figures are, in fact, quite conservative, because we took five-bit coding for arbitrary reference. As we know, uncompressed texts use seven-bit ASCII. Overlooking capitals, punctuation, and numbers (these being less frequent than lower-case letters), and neglecting spaces, we can make a rough estimate of the compression rates with respect to ASCII, as follows: (monogram code), 40.98% (digram code), which are the values typically found in standard data-compression software based on Huffman coding.1 18 The first lesson learnt from this whole exercise is that block-coding makes it possible to improve the compression rate. In the case of English, however, the improvement from using digram blocks instead of monogram characters is not very significant. Note that the performance could be further improved by using longer blocks (trigrams, quadri- grams, etc.), but at the expense of manipulating enormous dictionaries with codewords having relatively long average lengths. Th