ing into account the overhead, a nonoptimal coding tree picked from a generic codebook may yield a better compression performance than a case-specific Huffman coding tree. Other studies have sought to generate a universal codebook tree, which could apply indifferently to English, French, German, Italian, Spanish, or Portuguese, for instance. The spirit of the approach and procedure can be described as follows. First, an optimal coding tree is computed with all sources combined (taking for database reference the full contents of a number of recent newspapers, magazines, books, and SO on from each language). Second, optimal coding trees are computed for each individual source. The task then is to identify what the different trees share in common and devise the universal tree accordingly, subject to certain constraints to be respected for each language source. Under the simplifying assumption of a single A-Z alphabet without spaces, punctuation, or any other symbols. See R. M. Capocelli, R. Giancarlo, and I.J. Taneja, Bounds on the redundancy of Huffman codes. IEEE Trans. Infor. Theory, 32 (1986), 854-7. 9.2 Data compression Symbol Input Comparison Output Codeword 0 Continue Uncompressed 1 Extract Compressed source source Symbol Codeword Extract start Control Look-up memory (compression) Figure 9.3 Generic implementation of data compression from source X (uncompressed source symbols xk) into source Y (compressed codewords yk) through a memory look-up system. The operation of decompression is the same, with the roles of Y and X being interchanged. The same code-compression techniques and conclusions apply to data sources far more complex than text, such as digital sound and still or motion pictures. Such sources contain large amounts and varieties of random symbols, whose frequency distributions significantly depart from the uniform and exponential generic types. As we have seen, this makes compression algorithms all the more efficient. Since the files can be made arbitrarily large, the overhead tax can become relati