
- •List of Symbols
- •Classical Algebra
- •Modern Algebra
- •Binary Operations
- •Algebraic Structures
- •Extending Number Systems
- •Algebra of Sets
- •Number of Elements in a Set
- •Boolean Algebras
- •Propositional Logic
- •Switching Circuits
- •Divisors
- •Posets and Lattices
- •Normal Forms and Simplification of Circuits
- •Transistor Gates
- •Representation Theorem
- •Exercises
- •Groups and Symmetries
- •Subgroups
- •Cyclic Groups and Dihedral Groups
- •Morphisms
- •Permutation Groups
- •Even and Odd Permutations
- •Equivalence Relations
- •Normal Subgroups and Quotient Groups
- •Morphism Theorem
- •Direct Products
- •Groups of Low Order
- •Action of a Group on a Set
- •Exercises
- •Translations and the Euclidean Group
- •Matrix Groups
- •Finite Groups in Two Dimensions
- •Proper Rotations of Regular Solids
- •Finite Rotation Groups in Three Dimensions
- •Necklace Problems
- •Coloring Polyhedra
- •Counting Switching Circuits
- •Exercises
- •Monoids and Semigroups
- •Finite-State Machines
- •Quotient Monoids and the Monoid of a Machine
- •Exercises
- •Rings
- •Integral Domains and Fields
- •Subrings and Morphisms of Rings
- •New Rings From Old
- •Field of Fractions
- •Convolution Fractions
- •Exercises
- •Euclidean Rings
- •Euclidean Algorithm
- •Unique Factorization
- •Factoring Real and Complex Polynomials
- •Factoring Rational and Integral Polynomials
- •Factoring Polynomials over Finite Fields
- •Linear Congruences and the Chinese Remainder Theorem
- •Exercises
- •Ideals and Quotient Rings
- •Computations in Quotient Rings
- •Morphism Theorem
- •Quotient Polynomial Rings that are Fields
- •Exercises
- •Field Extensions
- •Algebraic Numbers
- •Galois Fields
- •Primitive Elements
- •Exercises
- •Latin Squares
- •Orthogonal Latin Squares
- •Finite Geometries
- •Magic Squares
- •Exercises
- •Constructible Numbers
- •Duplicating a Cube
- •Trisecting an Angle
- •Squaring the Circle
- •Constructing Regular Polygons
- •Nonconstructible Number of Degree 4
- •Exercises
- •The Coding Problem
- •Simple Codes
- •Polynomial Representation
- •Matrix Representation
- •Error Correcting and Decoding
- •BCH Codes
- •Exercises
- •Induction
- •Divisors
- •Prime Factorization
- •Proofs in Mathematics
- •Modern Algebra in General
- •History of Modern Algebra
- •Connections to Computer Science and Combinatorics
- •Groups and Symmetry
- •Rings and Fields
- •Convolution Fractions
- •Latin Squares
- •Geometrical Constructions
- •Coding Theory
- •Chapter 2
- •Chapter 3
- •Chapter 4
- •Chapter 5
- •Chapter 6
- •Chapter 7
- •Chapter 8
- •Chapter 9
- •Chapter 10
- •Chapter 11
- •Chapter 12
- •Chapter 13
- •Chapter 14
- •Index
284 |
|
14 |
ERROR-CORRECTING CODES |
|
TABLE 14.13. Decoding Using Syndromes and Coset Leaders |
|
|||
|
|
|
|
|
Word received u |
100110010 |
100100101 |
111101100 |
000111110 |
Syndrome Hu |
01000 |
00000 |
10111 |
10011 |
Coset leader e |
010000000 |
000000000 |
000000011 |
001101000 |
Code word u + e |
110110010 |
100100101 |
111101111 |
001010110 |
Message |
0010 |
0101 |
1111 |
0110 |
The (9,4)-code in Example 14.15 will, by Corollary 14.7, detect single, double, and triple errors. Hence it will correct any single error. It will not detect all errors involving four digits or correct all double errors, because 000000000 and 100001110 are two code words of Hamming distance 4 apart. For example, if the received word is 100001000, whose syndrome is 00101, Table 14.12 would decode this as 100001110 rather than 000000000; both these code words differ from the received word by a double error.
Example 14.16. Decode 100110010, 100100101, 111101100, and 000111110 using the parity check matrix in Example 14.11 and the coset leaders in Table 14.12.
Solution. Table 14.13 illustrates the decoding process. |
|
BCH CODES
The most powerful class of error-correcting codes known to date were discovered around 1960 by Hocquenghem and independently by Bose and Chaudhuri. For any positive integers m and t, with t < 2m−1, there exists a Bose–Chaudhuri–Hocquenghem (BCH) code of length n = 2m − 1 that will correct any combination of t or fewer errors. These codes are polynomial codes with a generator p(x) of degree mt and have message length at least n − mt.
A t-error-correcting BCH code of length n = 2m − 1 has a generator polynomial p(x) that is constructed as follows. Take a primitive element α in the Galois field GF(2m). Let pi (x) Z2[x] be the irreducible polynomial with αi as a root, and define
p(x) = lcm(p1(x), p2(x), . . . , p2t (x)).
It is clear that α, α2, α3, . . . , α2t are all roots of p(x). By Exercise 11.56, [pi (x)]2 = pi (x2) and hence α2i is a root of pi (x). Therefore,
p(x) = lcm(p1(x), p3(x), . . . , p2t −1(x)).
Since GF(2m) is a vector space of degree m over Z2, for any β = αi , the elements 1, β, β2, . . . , βm are linearly dependent. Hence β satisfies a polynomial of degree at most m in Z2[x], and the irreducible polynomial pi (x) must also
BCH CODES |
285 |
have degree at most m. Therefore,
deg p(x) deg p1(x) · deg p3(x) · · · deg p2t −1(x) mt.
Example 14.17. Find the generator polynomials of the t-error-correcting BCH codes of length n = 15 for each value of t less than 8.
Solution. Let α be a primitive element of GF (16), where α4 + α + 1 = 0. We repeatedly refer back to the elements of GF (16) given in Table 11.4 when performing arithmetic operations in GF(16) = Z2(α).
We first calculate the irreducible polynomials pi (x) that have αi as roots. We only need to look at the odd powers of α. The element α itself is the root of
x4 |
+ x + 1. Therefore, p1(x) = x |
4 |
x |
+ 1. |
|
|
|
+ 3 |
|||
|
If the polynomial p3(x) contains α |
as a root, it also contains |
|||
(α3)2 = α6, (α6)2 = α12, |
(α12)2 = α24 = α9, and (α9)2 = α18 = α3. |
Hence
p3(x) = (x − α3)(x − α6)(x − α12)(x − α9)
=(x2 + (α3 + α6)x + α9)(x2 + (α12 + α9)x + α21)
=(x2 + α2x + α9)(x2 + α8x + α6)
=x4 + (α2 + α8)x3 + (α9 + α10 + α6)x2 + (α17 + α8)x + α15
=x4 + x3 + x2 + x + 1.
The polynomial p5(x) has roots α5, α10, and α20 = α5. Hence
p5(x) = (x − α5)(x − α10)
= x2 + x + 1.
The polynomial p7(x) has roots α7, α14, α28 = α13, α26 = α11, and α22 = α7. Hence
p7(x) = (x − α7)(x − α14)(x − α13)(x − α11)
=(x2 + αx + α6)(x2 + α4x + α9)
=x4 + x3 + 1.
Now every power of α is a root of one of the polynomials p1(x), p3(x), p5(x), or p7(x). For example, p9(x) contains α9 as a root, and therefore, p9(x) = p3(x).
The BCH code that corrects one error is generated by p(x) = p1(x) = x4 + x + 1.
The BCH code that corrects two errors is generated by
p(x) = lcm(p1(x), p3(x)) = (x4 + x + 1)(x4 + x3 + x2 + x + 1).

286 |
14 ERROR-CORRECTING CODES |
This least common multiple is the product because p1(x) and p3(x) are different irreducible polynomials. Hence p(x) = x8 + x7 + x6 + x4 + 1.
The BCH code that corrects three errors is generated by
p(x) = lcm(p1(x), p3(x), p5(x))
=(x4 + x + 1)(x4 + x3 + x2 + x + 1)(x2 + x + 1)
=x10 + x8 + x5 + x4 + x2 + x + 1.
The BCH code that corrects four errors is generated by
p(x) = lcm(p1(x), p3(x), p5(x), p7(x))
= p1(x) · p3(x) · p5(x) · p7(x)
|
x15 + 1 |
|
14 |
||
|
|
xi . |
|||
|
|
|
|||
= x |
+ |
1 |
= |
i |
|
|
|
|
|
= |
|
|
|
|
|
|
0 |
This polynomial contains all the elements of GF (16) as roots, except for 0 and 1. Since p9(x) = p3(x), the five-error-correcting BCH code is generated by
p(x) = lcm(p1(x), p3(x), p5(x), p7(x), p9(x))
= (x15 + 1)/(x + 1),
and this is also the generator of the sixand seven-error-correcting BCH codes. These results are summarized in Table 14.14.
For example, the two-error-correcting BCH code is a (15, 7)-code with generator polynomial x8 + x7 + x6 + x4 + 1. It contains seven message digits and eight check digits.
The seven-error-correcting code generated by (x15 + 1)/(x + 1) has message length 1, and the two code words are the sequence of 15 zeros and the sequence of 15 ones. Each received word can be decoded by majority rule to give the
TABLE 14.14. Construction of t-Error-Correcting BCH Codes of Length 15
|
|
|
Roots of |
|
|
Degree, |
|
|
|
|
|
|
Degp(x) = 15 − k |
Message |
|||||
t |
|
|
p2t −1(x) |
|
|
p2t −1(x) |
|
|
p(x) |
|
|
Length, k |
|||||||
1 |
α, α2, α4, α8 |
|
|
4 |
|
|
p1(x) |
|
|
4 |
11 |
||||||||
2 |
α3 |
, α6, α12, α9 |
|
4 |
|
p1(x)p3(x) |
|
8 |
7 |
||||||||||
3 |
α5 |
, α10 |
|
|
|
|
|
|
2 |
p1(x)p3(x)p5(x) |
10 |
5 |
|||||||
4 |
7 |
|
14 |
|
α13 |
, α11 |
4 |
(x15 |
+ 1 |
)/(x |
+ 1 |
) |
14 |
1 |
|||||
α9 |
, α3 |
7 |
, |
6 |
|
|
12 |
|
|
15 |
|
|
|||||||
5 |
α11 |
|
, α14 |
, α13 |
4 |
(x15 |
+ 1)/(x |
+ 1) |
14 |
1 |
|||||||||
|
|
, α , α , α |
|
|
|
(x |
|
|
)/(x |
|
) |
|
|
||||||
6 |
α13 |
, α11 |
, α |
7 |
, α |
14 |
4 |
(x |
15 |
+ 1 |
|
+ 1 |
|
14 |
1 |
||||
7 |
α |
|
, α |
|
|
|
|
4 |
|
+ 1)/(x |
+ 1) |
14 |
1 |
BCH CODES |
287 |
message 1, if the word contains more 1’s than 0’s, and to give the message 0 otherwise. It is clear that this will correct up to seven errors.
We now show that the BCH code given at the beginning of this section does indeed correct t errors.
Lemma 14.18. The minimum Hamming distance between code words of a linear code is the minimum number of ones in the nonzero code words.
Proof. If v1 and v2 are code words, then, since the code is |
linear, v1 − v2 |
is also a code word. The Hamming distance between v1 and v2 |
is equal to the |
number of 1’s in v1 − v2. The result now follows because the zero word is always a code word, and its Hamming distance from any other word is the number of 1’s in that word.
Theorem 14.19. If t < 2m−1, the minimum distance between code words in the BCH code given in at the beginning of this section is at least 2t + 1, and hence this code corrects t or fewer errors.
Proof. Suppose that the code contains a code polynomial with fewer than 2t + 1 nonzero terms,
v(x) = v1xr1 + · · · + v2t xr2t where r1 < · · · < r2t .
This code polynomial is divisible by the generator polynomial p(x) and hence has roots α, α2, α3, . . . , α2t . Therefore, if 1 i 2t,
v(αi ) = v1αir1 + · · · + v2t αir2t
= αir1 (v1 + · · · + v2t αir2t −ir1 ).
Put si = ri − r1 so that the elements v1, . . . , v2t satisfy the following linear equations:
v1 |
+ |
v2αs2 |
v1 |
+ |
v2α2s2 |
|
. |
|
|
. |
|
|
. |
|
v1 |
+ |
v2α2t s2 |
+ · · · + v2t αs2t + · · · + v2t α2s2t
.
.
.
+ · · · + v2t α2t s2t
=0
=0
.
.
.
= 0.
The coefficient matrix is nonsingular because its determinant is the Vandermonde determinant:
|
|
1 |
αs2 |
|
1 |
α2s2 |
|
det |
. |
|
|
. |
|
||
|
|
. |
|
|
|
|
|
|
|
1 |
α |
· · · |
α2s2t |
|
|
|
|
|
|
|
αs2t |
|
|
|
|
|
|
|
|
. |
= |
|
|
− |
= |
|
|
. |
2t |
(αsi |
|
αsj ) 0. |
|
|
|
. |
|
|
|
|
|
|
|
|
|
2 |
|
|
|
· · · |
α |
2t s2t |
|
|
|
||
|
|
i>j |
|
|
|||
|
|
|
|
|
|