Chapter 3
Sources and Source Codes
3.1 Introduction
This chapter, and indeed the rest of the book, relies on familiarity with the basic concepts outlined in Chapter 2, where a rudimentary introduction to VLCs, such as entropy codes and Huffman codes, and their benefits, was provided. This chapter primarily investigates the design of VLCs constructed for compressing discrete sources, as well as the choice of soft decoding methods for VLCs. First, in Section 3.2 appropriate source models are introduced for representing both discrete memoryless sources and discrete sources having memory. In order to map discrete source symbols to binary digits, source coding is invoked. This may employ various source codes, such as Huffman codes [9] and RVLCs [12] as well as VLEC codes [30]. Unlike channel codes such as convolutional codes, VLCs constitute nonlinear codes; hence the superposition of legitimate codewords does not necessarily yield a legitimate codeword. The design methods of VLCs are generally heuristic. As with channel codes, the coding rate of VLCs is also an important design criterion in the context of source codes, although some redundancy may be intentionally imposed in order to generate reversible VLCs, where decoding may be commenced from both ends of the codeword, or to incorporate error-correction capability. A novel code construction algorithm is proposed in Section 3.3, which typically constructs more efficient source codes in comparison with the state-of-the-art methods ...