Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгебра_1 / Gilbert - Modern algebra with applications.pdf
Скачиваний:
34
Добавлен:
23.02.2015
Размер:
2.55 Mб
Скачать

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 < 2m1, 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 < 2m1, 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