80 likes | 196 Views
Chapter 11. Algebraic Coding Theory. Single Error Detection. M = (1, 1, …, 1) is the m 1 parity check matrix for single error detection. If c = (0, 1, 0, …, 1) is an n -bit codeword, then Mc T = 0 (use XOR addition). If c ′ = c + e contains an error, then the syndrome is:
E N D
Chapter 11 Algebraic Coding Theory
Single Error Detection M = (1, 1, …, 1) is the m 1 parity check matrix for single error detection. If c = (0, 1, 0, …, 1) is an n-bit codeword, then McT = 0 (use XOR addition). If c′ = c + e contains an error, then the syndrome is: M c′T = M(c + e)T = McT + MeT = MeT= 1 This detects errors: 0 for none, 1 for an error. 11.4
Single Error Correction / Double Error Detection 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 for double-error detection (optional) the 3 x 7 parity check matrix for a single-error correcting Hamming code M′ = If c is a 7 bit code word, then McT = (0 0 0)T = 0 and Mc′T = MeT = the syndrome for the error (e.g. try 0110011 → 0100011). In general, we can choose any parity check matrix for M, provided the rows are linearly independent (otherwise the checks themselves are redundant), and McT = 0. But, to correct a double-error, we must have the property that the syndrome M(e1 + e2)T = Me1T + Me2T is unique for every pair of columns (assuming e1 and e2 are single-error vectors). 11.2
Polynomials degree coefficients leading coefficient unless n = 0 2[x] = {bnxn + … + b0 | n≥ 0; bi = 0, 1; bn = 1} Associate with each n-bit vector the corresponding polynomial. Like a generating function. Arithmetric operations (+, ×) apply to 2[x], provided we do arithmetic on the coefficients in 2 (mod 2). A polynomial P(x) is prime (or irreducible) if it cannot be factored (over 2[x]) into lower-order polynomials. Examples: x, x + 1, x2 + x + 1, x3 + x + 1, x3 + x2 + 1 all prime composite: x2, x2 + 1 = (x + 1)2, x2 + x, x3, x3 + 1, x3 + x2 + x + 1 = (x + 1)3. Primitive roots: e2πi/n generates all roots of xn − 1 over . If n is prime, any root (except 1) will work. 11.5, 11.6, 11.7
1 1 1 0 1 0 0 0 1 1 1 0 1 0 1 1 0 1 0 0 1 M = x6x5x4x3x2x1x0 Polynomial arithmetic Consider arithmetic in 2[x] / p(x) modulo an irreducible polynomial p(x) of degree n. Since xn≡ p(x) − xn (mod p(x)) there are no polynomials of degree ≥ n. In fact, 2[x] / p(x) has 2n elements: bn−1xn−1 + … + b0, which form a field, and hence there exists a polynomial g(x) whose powers generate all the non-zero elements. E.g. The powers of g(x) = x mod p(x) = x3 + x + 1 are: 1, x, x2, x + 1, x2 + x, x2 + x + 1, x2 + 1. Writing these as column vectors of a matrix gives a rearranged Hamming code: n = 3 2n = 8 = | 2[x] / p(x) | 7 = 8 − 1 (# non-zero) x2x1x0 11.8
Polynomial Coding A sent codeword should have McT = 0, which means that c(x), as a polynomial, is evenly divisible by p(x), the modulus polynomial. Why? Because c(x) = c6x6+…+c0 , and McT = c(x) by definition of matrix multiplication, and since the powers of x that make up the columns of M are modulo p(x), McT = 0 c(x) ≡ 0 (mod p(x)). For a received codeword c′, Mc′T = MeT = syndrome, and similarly, the corresponding polynomial s(x) has c′(x) − s(x) ≡ 0 mod p(x) c′(x) ≡ s(x) and that the column matched, xi ≡ s(x) is the error location (assuming e contains only one error, i.e. s(x) ≡ xi). 11.8 end
Encode: Place message in colums 6, 5, 4, 3, and compute b6x6 + b5x5 + b4x4 + b3x3 modulo p(x). Put remainder, r(x) = b2x2 + b1x + b0, in the last columns. message checks b6b5b4b3b2b1b0 Decode: Divide received polynomial by p(x), and use the remainder r(x) ≡ gi (x) to locate error position i). no error i doesn’t exist. Example: 1 0 0 1 x6 + x3 + ? /\ /\ 1 0 0 1 110x2 + 1 + x + 1 = x2 + x 11.8
Double error-correcting Code An illustration: start with a 15 bit Hamming code having 4 parity checks. Verify that x4 + x + 1 is prime, and that the primitive x generates 2[x]/(x4 + x + 1) \ {0}. The resulting parity check matrix M1 is single error-correcting, but x + x2 = x12 + x14 so double error-correction is impossible. Now, pick another primitive generator x3 of the same 2[x]/(x4+x+1), with resulting matrix M2. Let s1 = xi + xj = M1 c′T be the first syndrome and s2=(x3)i+(x3)j=M2 c′T be the second syndrome. Then s2 = (xi)3 + (xj)3 = (xi + xj)((xi)2 + (xi)(xj) + (xj)2) = s1[xixj + s12] So that: xi + xj = s1 and xixj = s12 + s2/s1 11.11