Generator Matrix. Theorem 6: If the generator polynomial g(x) of C has degree n-k then C is an [n,k]-cyclic code. If g(x) = a 0. a 1 a n k 1.

Similar documents
ECEN 604: Channel Coding for Communications

Fault Tolerance & Reliability CDA Chapter 2 Cyclic Polynomial Codes

Linear Cyclic Codes. Polynomial Word 1 + x + x x 4 + x 5 + x x + x

Linear Cyclic Codes. Polynomial Word 1 + x + x x 4 + x 5 + x x + x f(x) = q(x)h(x) + r(x),

7.1 Definitions and Generator Polynomials

B. Cyclic Codes. Primitive polynomials are the generator polynomials of cyclic codes.

Chapter 5. Cyclic Codes

3. Coding theory 3.1. Basic concepts

Cyclic codes: overview

Cyclic codes. Vahid Meghdadi Reference: Error Correction Coding by Todd K. Moon. February 2008

EE512: Error Control Coding

ELG 5372 Error Control Coding. Lecture 12: Ideals in Rings and Algebraic Description of Cyclic Codes

Objective: To become acquainted with the basic concepts of cyclic codes and some aspects of encoder implementations for them.

x n k m(x) ) Codewords can be characterized by (and errors detected by): c(x) mod g(x) = 0 c(x)h(x) = 0 mod (x n 1)

Coding Theory and Applications. Solved Exercises and Problems of Cyclic Codes. Enes Pasalic University of Primorska Koper, 2013

Outline. MSRI-UP 2009 Coding Theory Seminar, Week 2. The definition. Link to polynomials

MATH32031: Coding Theory Part 15: Summary

: Error Correcting Codes. November 2017 Lecture 2

MATH3302 Coding Theory Problem Set The following ISBN was received with a smudge. What is the missing digit? x9139 9

Mathematics Department

MTH310 EXAM 2 REVIEW

EE 229B ERROR CONTROL CODING Spring 2005

Error Correction Review

Information redundancy

Introduction to finite fields

ECEN 5682 Theory and Practice of Error Control Codes

MATH 431 PART 2: POLYNOMIAL RINGS AND FACTORIZATION

Polynomials. Chapter 4

Rings. EE 387, Notes 7, Handout #10

A family Of Cyclic Codes Over Finite Chain Rings

Lecture 7: Polynomial rings

Coding Theory: Linear-Error Correcting Codes Anna Dovzhik Math 420: Advanced Linear Algebra Spring 2014

Finite Fields. SOLUTIONS Network Coding - Prof. Frank H.P. Fitzek

EE512: Error Control Coding

Cyclic Codes. Saravanan Vijayakumaran August 26, Department of Electrical Engineering Indian Institute of Technology Bombay

A Brief Encounter with Linear Codes

Information Theory. Lecture 7

Rings. Chapter 1. Definition 1.2. A commutative ring R is a ring in which multiplication is commutative. That is, ab = ba for all a, b R.

Finite Fields and Error-Correcting Codes

Homework 8 Solutions to Selected Problems

Negacyclic and Constacyclic codes over finite chain rings June 29, 2008

Finite Fields. Saravanan Vijayakumaran Department of Electrical Engineering Indian Institute of Technology Bombay

+ 1 3 x2 2x x3 + 3x 2 + 0x x x2 2x + 3 4

: Coding Theory. Notes by Assoc. Prof. Dr. Patanee Udomkavanich October 30, upattane

CHAPTER 14. Ideals and Factor Rings

MATH 433 Applied Algebra Lecture 21: Linear codes (continued). Classification of groups.

CHAPTER 2 POLYNOMIALS KEY POINTS

Cyclic codes. I give an example of a shift register with four storage elements and two binary adders.

Polynomial Rings. i=0

LECTURE NOTES IN CRYPTOGRAPHY

Groups, Rings, and Finite Fields. Andreas Klappenecker. September 12, 2002

Discrete Mathematics and Probability Theory Spring 2016 Rao and Walrand Discussion 6B Solution

Algebra Review 2. 1 Fields. A field is an extension of the concept of a group.

ERROR CORRECTING CODES

Math 512 Syllabus Spring 2017, LIU Post

Section IV.23. Factorizations of Polynomials over a Field

A Mass Formula for Cyclic Self-Orthogonal Codes

, a 1. , a 2. ,..., a n

The Golay codes. Mario de Boer and Ruud Pellikaan

The extended Golay code

MATH 3030, Abstract Algebra FALL 2012 Toby Kenney Midyear Examination Friday 7th December: 7:00-10:00 PM

Polynomials. Henry Liu, 25 November 2004

Solutions of Exam Coding Theory (2MMC30), 23 June (1.a) Consider the 4 4 matrices as words in F 16

55 Separable Extensions

Chapter 4. Remember: F will always stand for a field.

U + V = (U V ) (V U), UV = U V.

MATH Examination for the Module MATH-3152 (May 2009) Coding Theory. Time allowed: 2 hours. S = q

Notes for Math 345. Dan Singer Minnesota State University, Mankato. August 23, 2006

MATH 291T CODING THEORY

Polynomial Rings. i=0. i=0. n+m. i=0. k=0

50 Algebraic Extensions

G Solution (10 points) Using elementary row operations, we transform the original generator matrix as follows.

Binary Primitive BCH Codes. Decoding of the BCH Codes. Implementation of Galois Field Arithmetic. Implementation of Error Correction

Finite Fields. Mike Reiter

Downloaded from

MATH 291T CODING THEORY


8.4 Partial Fractions

Dividing Polynomials: Remainder and Factor Theorems

Optimum Soft Decision Decoding of Linear Block Codes

A 2-error Correcting Code

Know the meaning of the basic concepts: ring, field, characteristic of a ring, the ring of polynomials R[x].

Reverse Berlekamp-Massey Decoding

MTH6108 Coding theory Coursework 7

CYCLIC SIEVING FOR CYCLIC CODES

Moreover this binary operation satisfies the following properties

Chapter 3. Rings. The basic commutative rings in mathematics are the integers Z, the. Examples

Mathematical Foundations of Cryptography

Question 1: The graphs of y = p(x) are given in following figure, for some Polynomials p(x). Find the number of zeroes of p(x), in each case.

Definition 2.1. Let w be a word. Then the coset C + w of w is the set {c + w : c C}.

Warm-Up. Use long division to divide 5 into

Solution to Set 7, Math 2568

3.3 Dividing Polynomials. Copyright Cengage Learning. All rights reserved.

CHAPTER 10: POLYNOMIALS (DRAFT)

School of Mathematics and Statistics. MT5836 Galois Theory. Handout 0: Course Information

How might we evaluate this? Suppose that, by some good luck, we knew that. x 2 5. x 2 dx 5

Rings. Chapter Definitions and Examples

Information Redundancy: Coding

MATH/MTHE 406 Homework Assignment 2 due date: October 17, 2016

1. Algebra 1.5. Polynomial Rings

Transcription:

Cyclic Codes II

Generator Matrix We would now like to consider how the ideas we have previously discussed for linear codes are interpreted in this polynomial version of cyclic codes. Theorem 6: If the generator polynomial g(x) of C has degree n-k then C is an [n,k]-cyclic code. If g(x) = a 0 + a 1 x + a 2 x 2 +... + a n-k x n-k then a generator matrix for C is the k n matrix, [ g x a1 a2 an k 0 0 0 x g x 0 a 0 a 1 a n k 1 a n k 0 0 x 2 g x 0 0 a 0 a n k 2 a n k 1 a n k 0 x k 1 g x ]=[a0 0 0 0 a n k].

Generator Matrix Proof: The vectors g(x), xg(x), x 2 g(x),..., x k-1 g(x) are linearly independent. If not, there would exist coefficients {b i } so that b 0 g(x) + b 1 xg(x) + b 2 x 2 g(x) +... + b k-1 x k-1 g(x) = 0, (b 0 + b 1 x + b 2 x 2 +... + b k-1 x k-1 ) g(x) = 0. But this product has degree k - 1 + n - k = n - 1 < n, so it can not be 0 mod (x n - 1) unless all the b i = 0. Let c(x) C, then c(x) = b(x) g(x) and we may assume that b(x) has degree k 1 (otherwise the product will have degree > n - 1 and we would reduce modulo (x n - 1) to get a b'(x) which satisfies this degree constraint). Thus, c(x) can be written as a linear combination of the x i g(x). The set of {x i g(x) }, 0 i k - 1 is thus a basis for C and so this cyclic code has dimension k.

Dual Code Now that we have a polynomial approach to describe a cyclic code C, we consider the related polynomial representation of the dual code C of C. We shall see that C is a cyclic code if C is cyclic. Consider h(x) = (x n - 1)/g(x) where g(x) is the generator of C. If the deg g(x) = n - k, then deg h(x) = k and it is also monic, so h(x) generates a cyclic code C' of dimension n - k. Now consider c 1 (x) = a 1 (x)g(x) C and c 2 (x) = a 2 (x)h(x) C'. Then c 1 (x) c 2 (x) = a 1 (x)g(x)a 2 (x)h(x) = a 1 (x)a 2 (x)f(x) 0 (mod f(x)), where f(x) = x n - 1. Therefore, using polynomial multiplication mod f(x), any codeword from C multiplies with any codeword from C' to give the polynomial 0. Does this imply that C' is the dual code of C? Unfortunately no, since the isomorphism that we set up does not preserve inner products. However, we now show that the codes C' and C are closely related - they are equivalent codes.

Dual Code Consider two vectors a = (a 0 a 1... a n-1 ) C and b = (b 0 b 1... b n-1 ) C', and the corresponding polynomial product n 1 a x b x = i=0 n 1 a i x i i=0 i n 1 b i x i=0 for some c i F. The constant term in this product is c 0 = a 0 b 0 + a 1 b n-1 + a 2 b n-2 +... + a n-1 b 1, c i x i mod x n 1 since x n 1 (mod f(x)). Now c 0 can be written as the inner product c 0 = a b' where b' is the vector obtained from b by cyclically shifting b one position to the left and then reversing the order of the components (i.e., (b 0 b n-1 b n-2... b 1 )).

Dual Code Observe that multiplying the polynomial n 1 i=0 c i x i by x n-t results in c t being the constant term, and hence the constant term in the product a(x)(x n-t b(x)). Therefore, c t = a b' where b' is now the vector associated with x n-t b(x). In terms of b(x), b' is the vector obtained by cyclically shifting b t+1 positions to the left and then reversing the order of the components.

Example Consider n = 3, and the vectors a = (a 0 a 1 a 2 ) and b = (b 0 b 1 b 2 ). Then modulo x 3-1, a(x)b(x) = (a 0 + a 1 x + a 2 x 2 )(b 0 + b 1 x + b 2 x 2 ) = (a 0 b 0 + a 1 b 2 + a 2 b 1 ) + (a 0 b 1 + a 1 b 0 + a 2 b 2 )x + (a 0 b 2 + a 1 b 1 + a 2 b 0 )x 2. The coefficient of x 2 is a(b 2 b 1 b 0 ). This b vector is obtained from b by shifting 3 ( = 2 + 1) positions to the left (putting b back into its original order) and then reversing the order of the components from last to first. The b-vector in the x coefficient is obtained from b by shifting 2 ( = 1 + 1) to the left, obtaining (b 2 b 0 b 1 ) and then reversing the components.

Parity Check Matrix Now since a(x)b(x) 0 mod (x n - 1), the coefficient of each power of x must be 0. From the discussion above, this implies that ac = 0 (i.e., a and c are orthogonal) whenever c is any cyclic shift of the vector obtained from b by reversing the components of b. Since h(x) generates C', {h(x), xh(x),..., x n-k-1 h(x) } is a basis for C' and G' = [h(x), xh(x),..., x n-k-1 h(x)] T is a generator matrix for C'. Now G' generates the code C' which has the same dimension n - k as C. Furthermore, taking b(x) in the above arguments to be h(x) itself, we see that the reverse of every vector in C' is orthogonal to every vector in C. It follows that if we reorder the columns of G' last to first, we obtain a matrix H which generates C, and hence is the parity-check matrix for C.

Example Suppose we wish to construct a generator matrix and a parity-check matrix for a [7,4]- binary cyclic code. Since g(x) = 1 + x + x 3 divides f(x) = x 7-1, g(x) generates a [7,4] - cyclic code C. h(x) = f(x)/g(x) = 1 + x + x 2 + x 4 generates a [7,3]-cyclic code C'. A generator matrix for C is G=[ g x x g x x 2 g x 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 x 3 g x ]=[1 0 0 0 1 1 0 1].

A generator matrix for C' is Example h x 1 1 0 1 0 0 G x h 0 1 1 1 0 1 0 '=[ x 2 h x ]=[1 0 0 1 1 1 0 1]. Writing the columns of G' last to first, a generator matrix for C is 0 1 0 1 1 1 H =[0 0 1 0 1 1 1 0 1 0 1 1 1 0 0]. A simple check verifies that GH T = 0.

Parity Check Matrix Since C' and C can be obtained from each other by reversing the components in all vectors, C' and C are equivalent codes. Recall a definition that we have seen before, Definition : Let h(x) = a 0 + a 1 x +... + a k x k be a polynomial of degree k (a k 0). Define the reciprocal polynomial h R (x) of h(x) by h R x = a k i x i. i=0 Note that h R (x) = x k h(1/x), where k = deg h(x). Theorem 7 : Let g(x) be a monic divisor of f(x) = x n - 1 of degree n-k, and hence the generator for a cyclic [n,k]-code C. Let h(x) = f(x)/g(x). Then h R (x), the reciprocal poly of h(x), generates C. k

Syndromes Let us first consider an alternate form for the generator matrix of a cyclic code of the form [R, I k ] when C is an [n,k]-cyclic code. Let g(x) be the generator polynomial for the code. Divide x n-k+i by g(x) for 0 i k-1. This gives x n-k+i = q i (x)g(x) + r i (x) where deg r i (x) < deg g(x) = n-k or r i (x) = 0. Then x n-k+i - r i (x) = q i (x)g(x) C is a set of k linearly independent code words and the matrix whose rows are these codewords is a generator matrix of the required form.

Example Consider the binary [7,4]-cyclic code generated by g(x) = 1 + x + x 3. By the division algorithm we compute, x 3 = (1)(x 3 + x + 1) + (1+ x) x 4 = (x)(x 3 + x + 1) + (x + x 2 ) x 5 = (x 2 + 1)(x 3 + x + 1) + (1 + x + x 2 ) x 6 = (x 3 + x + 1)(x 3 + x + 1) + (1 + x 2 ). A generator matrix for this code is 1 0 1 0 0 0 1 0 0 1 1 0 1 0 0 0 1 1 G=[1 R I 1 1 1 0 0 1 0 4 ] where R=[1 1 1 1 1 0 1 0 0 0 1]=[ 1 0 1]. Notice that the rows of R are just the remainder polynomials.

Syndromes The corresponding parity-check matrix for this generator is H = [I n-k -R T ]. A reason for making this selection is that it affords a convenient polynomial interpretation for the syndrome of a vector. Theorem 8 : Let r(x) and s(x) be the respective polynomial representations of a vector r and its syndrome s = Hr T. Then s(x) is the remainder polynomial when r(x) is divided by g(x).

Syndromes Proof: Suppose r(x) = a 0 + a 1 x +... + a n-1 x n-1. Noting that column i, 0 i n-k-1, of H corresponds to the polynomial x i and column j, n- k j n-1, corresponds to r j-n+k (x), so that s x =a 0 a 1 x a n k 1 x n k 1 a n k r 0 x a n 1 r k 1 x =a 0 a 1 x a n k 1 x n k 1 a n k x n k q 0 x g x a n 1 x n 1 q k 1 x g x =r x a n k q 0 x g x a n 1 q k 1 x g x =r x h x g x where h(x) = a n-k q 0 (x) +... + a n-1 q k-1 (x). Thus r(x) = h(x)g(x) + s(x). Since deg r i (x) n-k-1, it follows that deg s(x) n-k-1. By the uniqueness of the quotient and remainder in the division algorithm for polynomials, we conclude that s(x) is the remainder when r(x) is divided by g(x).

Syndromes Thus the syndrome of a vector can be determined by polynomial division. Furthermore, the syndrome of a vector and its cyclic shift are closely related. Suppose r(x) = q(x)g(x) + s(x), where deg s(x) is at most n-k-1. By the above theorem s(x) is the syndrome of r(x). Now xr(x) = xq(x)g(x) + xs(x). If xs(x) has degree at most n-k-1, then again by the above theorem it is the syndrome of xr(x). Otherwise, the syndrome of xr(x) is the remainder when xs(x) is divided by g(x). In this case, let n k 1 s x = i=0 s i x i = s x s n k 1 x n k 1, where degree s x n k 2.

Syndromes Let the (monic) generator polynomial be, n k g x = i=0 g i x i = g x x n k, degree g x n k 1. Then x s x =x s x s n k 1 g x g x =s n k 1 g x x s x s n k 1 g x, where degree x s x s n k 1 g x n k 1. Now by the uniqueness of the remainder in the division algorithm and the previous theorem, we see that the syndrome of xs(x) is xs(x) - s n-k-1 g(x). We summarize this as,

Syndromes Theorem 9 : Let C be a cyclic [n,k]-code over F with generator polynomial g(x), and let r(x) be a polynomial with syndrome s(x) = s 0 + s 1 x +... + s m x m. Then the syndrome of xr(x) is xs(x) if deg s(x) < n-k-1, and xs(x) - s n-k-1 g(x), if deg s(x) = n-k-1.

Example Consider the previous example with g(x) = 1 + x + x 3. From the generator matrix written there, we may form the parity check matrix, 0 0 1 0 1 1 H =[ I 3 R ]=[1 T 0 1 0 1 1 1 0 0 0 1 0 1 1 1]. Consider r = (1011011). The syndrome of r is Hr T = (001) T = s. Now, r(x) = 1 + x 2 + x 3 + x 5 + x 6. If we divide r(x) by g(x), we get r(x) = (x 3 + x 2 + x + 1)g(x) + x 2. The remainder is, as expected, s. To compute the syndrome of a cyclic shift of r, let w = (1101101) which corresponds to the polynomial xr(x). Hw T = (110) T. Using polynomial operations, since deg s(x) = 2 = n-k-1, the syndrome of xr (x) is xs(x) - 1g(x) = x 3 - (x 3 + x + 1) = 1 + x.

Error Trapping The preceding observations lead us to an interesting method of decoding certain error patterns in cyclic codes. The technique is sometimes referred to as error trapping. Suppose C is an [n,k]-code with minimum distance d = 2t + 1, and parity-check matrix H = [I n-k A]. Let c be a codeword and e an error pattern of weight at most t. If r = c + e is received, then the syndrome of r is s = H r T = H (c + e) T = H e T. Let e* = (s T, 0), where 0 is the k-tuple of all 0's. Then H e* T = s, and e* and e have the same syndrome, so are in the same coset of C. Now suppose wt(s) t. Then wt(e*) t and it follows that e = e* since a coset can contain at most one vector of weight less than or equal to t. Hence, the error is known to be e = (s T,0) in this case.

Error Trapping Now suppose C is cyclic with generating polynomial g(x). Let e be an error pattern of weight at most t with a cyclic run of at least k 0's. Then there is some i, 0 i n-1, such that a cyclic shift of e through i positions is a vector whose non-zero components all lie within the first n-k components. For this i, wt(s i (x)) t, where s i (x) is the syndrome of x i e(x) mod (x n - 1). If we compute s i (x) as the remainder of x i r(x) divided by g(x), then when wt(s i (x)) t, for this i by the above argument x i e(x) = (s i,0). Thus e(x) = x n-i (s i,0).

Error Trapping This gives rise to the following algorithm (stated for the binary case, but easily modifiable for the q-ary case): (1) Compute the syndrome s 0 (x) of r(x) from the division algorithm. (2) Set i = 0. (3) If wt(s i (x)) t, then set e(x) = x n-i (s i,0), and decode to r(x) - e(x). (4) Set i = i + 1. (5) If i = n then stop; the error pattern is not trappable. (6) If deg s i-1 (x) < n-k-1, then set s i (x) = xs i-1 (x); otherwise s i (x) = xs i-1 (x) - g(x). (7) Go to (3).

Example g(x) = 1 + x 2 + x 3 generates a binary [7,4]-cyclic code having minimum distance 3 (and so is 1-error correcting). Consider the codeword 1 + x + x 5 = (1 + x + x 2 ) g(x), if upon transmission r(x) = 1 + x + x 5 + x 6 is received we would decode as follows. Divide r(x) by g(x) to find the syndrome, r(x) = (x 3 + 1)g(x) + (x + x 2 ), so s(x) = x + x 2. Since the weight of s(x) is > 1 (= t), we compute the syndrome s 1 (x) of xr(x). As the degree of s(x) = 2 = n - k - 1, we mutiply s(x) by x and subtract g(x) to get s 1 (x) = 1. As this has weight 1, we obtain the error pattern e(x) = x 7-1 (s 1,0) = x 6 (1000000) = x 6. Since for n = 7 all error patterns of weight 1 have a cyclic run of six 0's and 6 > k = 4, this technique will correct all single errors.

Example g(x) = 1 + x 4 + x 6 + x 7 + x 8 generates a binary [15,7]-cyclic code. If the minimum distance of this code is 5, then t = 2. Any (at most) weight 2 error pattern must contain a run of at least 7 0's and so can be trapped. If a received 15-tuple is r = (1100 1110 1100 010) we calculate, r(x) = (x + x 2 + x 4 + x 5 )g(x) + (1 + x 2 + x 5 + x 7 ). We then compute the syndrome s i (x) of x i r(x) until wt(s i (x)) 2. s 0 (x) = 10100101 s 1 (x) = 11011001 s 2 (x) = 11100111 s 3 (x) = 11111000 s 4 (x) = 01111100 s 5 (x) = 00111110 s 6 (x) = 00011111 s 7 (x) = 10000100 Thus the error pattern is e = x 15-7 (s 7,0) = x 8 (100001000000000) = (0000 0000 1000 010), and we decode r(x) to r - e = (1100 1110 0100 000).