This article may require cleanup to meet Wikipedia's quality standards. The specific problem is: Formulas with little or no explanation, symbols not defined, content fork issues with more specific articles. Material given in outline rather than prose style. Please help improve this article if you can.(May 2010) (Learn how and when to remove this message)
A block code transforms a message m consisting of a sequence of information symbols over an alphabetΣ into a fixed-length sequence cofn encoding symbols, called a code word. In a linear block code, each input message has a fixed length of k < n input symbols. The redundancy added to a message by transforming it into a larger code word enables a receiver to detect and correct errors in a transmitted code word, and – using a suitable decoding algorithm – to recover the original message. The redundancy is described in terms of its information rate, or more simply – for a linear block code – in terms of its code rate, k/n.
The error correction performance of a block code is described by the minimum Hamming distanced between each pair of code words, and is called the distance of the code.
Definitions
The encoder for a block code divides the information sequence into message blocks, each message block contains information symbols over an alphabet set , i.e. a message could be represented as a -tuple . The total number of possible different message is therefore . The encoder transforms message independently onto an -tuple codeword . The code of block length over is a subset of : the total number of possible different codewords is the same as the total number of messages and is called dimension. Rate of the block code is defined as .
The Hamming weight of a codeword is defined as the number of non-zero positions in . The Hamming distance between two codewords and is defined as the number of different positions between the codewords. The (minimum) distance of a block code is defined as the minimum distance between any two different codewords: . The notation is used to represent a block code of dimension , block length over alphabet set , with distance . In particular, if alphabet set has size , the block code is denoted as .
Properties
A codeword could be considered as a point in the -dimension space and the code is the subset of . A code has distance means that , there is no other codeword in the Hamming ball centered at with radius , which is defined as the collection of -dimension words whose Hamming distanceto is no more than . Similarly, with (minimum) distance has the following properties:
can detect errors : Because a codeword is the only codeword in the Hamming ball centered at itself with radius , no error pattern of or fewer errors could change one codeword to another. When the receiver detects that the received vector is not a codeword of , the errors are detected (but no guarantee to correct).
can correct errors. Because a codeword is the only codeword in the Hamming ball centered at itself with radius , the two Hamming balls centered at two different codewords respectively with both radius do not overlap with each other. Therefore, if we consider the error correction as finding the codeword closest to the received word , as long as the number of errors is no more than , there is only one codeword in the hamming ball centered at with radius , therefore all errors could be corrected.
can correct erasures. By erasure it means that the position of the erased symbol is known. Correcting could be achieved by -passing decoding : In passing the erased position is filled with the symbol and error correcting is carried out. There must be one passing that the number of errors is no more than and therefore the erasures could be corrected.
Maximum likelihood decoding (MLD) could be used to decode: it outputs the codeword closest to the received word in Hamming distance means: .
Example
Consider a simple repetition code : . The distance of is 3 because any different valid codewords have at least 3 different symbols. Therefore, if there is only up to 1 error in the received word, e.g. , the error could be recovered. However if there are more than 1 possible errors, the decoder could not tell what is the correct codeword. For example, could be the received word for either or.
Lower and upper bound of block codes
Family of codes
is called family of codes, where is an code with monotonic increasing .
Rate of family of codes is defined as
Relative distance of family of codes is defined as
To explore the relationship between and , a set of lower and upper bounds of block codes are known.
Block codes are tied to the sphere packing problem which has received some attention over the years. In two dimensions, it is easy to visualize. Take a bunch of pennies flat on the table and push them together. The result is a hexagon pattern like a bee's nest. But block codes rely on more dimensions which cannot easily be visualized. The powerful Golay code used in deep space communications uses 24 dimensions. If used as a binary code (which it usually is), the dimensions refer to the length of the codeword as defined above.
The theory of coding uses the N-dimensional sphere model. For example, how many pennies can be packed into a circle on a tabletop or in 3 dimensions, how many marbles can be packed into a globe. Other considerations enter the choice of a code. For example, hexagon packing into the constraint of a rectangular box will leave empty space at the corners. As the dimensions get larger, the percentage of empty space grows smaller. But at certain dimensions, the packing uses all the space and these codes are the so called perfect codes. There are very few of these codes.
Another property is the number of neighbors a single codeword may have.[1]
Again, consider pennies as an example. First we pack the pennies in a rectangular grid. Each penny will have 4 near neighbors (and 4 at the corners which are farther away). In a hexagon, each penny will have 6 near neighbors. Respectively, in three and four dimensions, the maximum packing is given by the 12-face and 24-cell with 12 and 24 neighbors, respectively. When we increase the dimensions, the number of near neighbors increases very rapidly. In general, the value is given by the kissing numbers.
The result is the number of ways for noise to make the receiver choose
a neighbor (hence an error) grows as well. This is a fundamental limitation
of block codes, and indeed all codes. It may be harder to cause an error to
a single neighbor, but the number of neighbors can be large enough so the
total error probability actually suffers.[1]
F.J. MacWilliams (1977). The Theory of Error-Correcting Codes. North-Holland. p. 35. ISBN0-444-85193-3. {{cite book}}: Unknown parameter |coauthors= ignored (|author= suggested) (help)
W. Huffman (2003). Fundamentals of error-correcting codes. Cambridge University Press. ISBN13: 9780521782807. {{cite book}}: Check |isbn= value: invalid character (help); Unknown parameter |coauthors= ignored (|author= suggested) (help)
S. Lin (1983). Error Control Coding: Fundamentals and Applications. Prentice-Hall. ISBN0-13-283796-X. {{cite book}}: Unknown parameter |coauthors= ignored (|author= suggested) (help)