Justesen codes alternant codes goppa codes

Preview:

Citation preview

Justessan Codes Alternant Codes Goppa codes

Justesen Codes

Mapping codes converts (N,K) linear code over GF(qm) into

(mN,mK) linear code over GF(q) by ‘tilting’ each qm-ary

symbol into m q-ary symbols.

d* nonzero symbols of min wt. codeword tilts to md*

symbols, not all symbols zero.

Code rate remains unchanged but minimum distance is

much smaller fraction of block length.

Justesen modified the construction to give a good code for

long block lengths.

Advantage: Creates a simple form of multiple burst-error

correcting codes.

Gives infinite family of good binary codes.

Justesen Codes - Construction

Construction starts with all the codewords of a single fixed

(N,K) Reed-Solomon code that has the same number of

codewords as desired Justesen code.

Let α be the primitive element of GF(qm).

Starting with codeword C = (c0, c1, … cN-1) from Reed-

Solomon code, first form the 2 by N array of GF(qm)-ary

symbols. (ci Є GF(qm) )

c0 c1 c2 … cN-1

α0c0 α1c1 α2c2 … αN-1cN-1

C’ = (c0,α0c0 ; c1,α1c1 ; c2,α2c2 ; … cN-1,αN-1cN-1)

Replace each element by binary m-tuple symbols we obtain

binary vector of length 2mN.

This gives one code word of the Jestesen Code.

Code rate R = K/2N, half of RS code.

Justesen Codes

Justesen code is the concatenation code of an RS code and

linear binary codes.

A natural decoding algorithm for Justesen code would be

one that reverses the process of concatenation.

Algorithm:

Decode each set of m bits to yi over GF(qm).

Ties are broken arbitrarily to give two set.

Decode y = (y0, . . . , yn−1) using any decoding algorithms for

RS code.

The decoding algorithm can be used to correct all errors up

to less than dD/4 in number.

Justesen Codes

Theorem: The minimum distance of the (2mN, mK)

Justesen code constructed from an (N,K) RS code is

bounded by --

Justesen Codes

Proof:

The minimum weight RS codeword has N-K+1 distinct non-

zero symbols.

These will make N-K+1 nonzero pairs (ci,αici ) which appear

as distinct 2m-tuples.

The weight is atleast as large as word constructed by filling

N-K+1 2m-tuples by N-K+1 distinct 2m-tuples of smallest

weight.

In an m-tuple, there are (2im) ways of picking i non-zero

places and (q-1) different non-zero values at each place.

Hence there is a weight I for every I that satisfies (2).

The minimum distance is at-least as large as the sum of the

weights of these pairs. Hence (1).

Justesen Codes

Disadvantage: Not very attractive for random error

correction.

Good only for long block-lengths.

Hence did not get popular.

Hence they do not have well developed collection of

decoding algorithms.

Alternant Codes- Limitations of BCH codes:

A BCH code over GF(q) of block length n = qm-1 is a subfield-subcode of a Reed-Solomon code over GF(qm).

subfield-subcode has same length as original but fewer codes.

BCH code consists of all those Reed-Solomon codes that are GF(q)-valued.

BCH codes with large block length and large minimum distance contain fewer codes.

But in BCH code, with increasing block length and fixed rate R’ (k/n≥R’),normalized minimum distance d*/n approaches zero.

Hence, the BCH code uses very few of many code words of RS code or else has poor distance structure.

Alternant codes, a variation of BCH code, increases minimum distance by reducing RS code to a subfield by new way.

Alternant Codes

Alternant codes are linear codes that are a variation of BCH

codes defined such that in spite of fixed rate, large minimum

distance can be obtained.

Let n = qm-1,

A fixed n-vector h of nonzero components over GF(qm)

called (time-domain) template, is chosen.

Reed-Solomon code over GF(qm) with designed distance

2t+1 is chosen.

If Alternant code is GF(q)-valued vectors C and C’ is codeword in RS code then-

c’i = ci hi for i= 0,1,…n-1 . (component-wise in Time domain)

hi is always nonzero.

So, let gi = hi-1.

ci = gic’I for i= 0,1,…n-1 .

Alternant Codes

Minimum distance very large if template chosen properly.

Can be defined in frequency domain also.

Let h ≠ 0 and H is its frequency domain template. Cyclic convolution H*C gives Reed-Solomon spectrum.

∑n-1

k=0 H((j-k)) Ck = 0 j = j0, … j0+ 2t-1.

If G is transform of vector gi ( =hi-1), H*G is a delta function.

(If j=0, (H*G)j =1; otherwise (H*G)j =0.)

As polynomial this convolution becomes

H(x)G(x) = 1 (mod xn-1).

H(x) is a polynomial over GF(q), it has no roots in GF(qm).

Hence H(x) is prime to xn-1.

H(x)G(x) + (xn-1) F(x) =1

Hence H(x)G(x) = 1 (mod xn-1).

Alternant Codes

The alternant code C(α, h ) consists of all codewords of

GRSk0which have components from GF(q).

C(α,h) consists of all vectors C over GF(q) such that CHT=0,

where H is given by H = Vr(α1 …αn) .diag(h1 …hn)

1 … 1 h1 0 . 0

α1 … α

n 0 h

2 . 0

H= α1

2 . αn

2 . 0 . 0

. . . . . . .

(α1)r-1 … (α

n)r-1 0 0 . h

n

h1 … h

n

h1α

1 … h

n

H= . . .

. . .

h1(α

1)r-1 … h

n(α

n)r-1

Alternant Codes - example

Decoding by any method used for BCH or RS codes.

GF(8)

BCH Code Reed-Solomon Code (7, 5, 3) Alternant code

g=(5, 6, 1, 4, 1, 1, 7)

0000000 0000000 0000000

0000163

0000276

0000315

0001011 0001011

0001172

0001304

0007077 0001011

0007114 0001111

0007217

0010073

0010110 0010110 0010110

Goppa Codes

Goppa code is the generalization of the class of BCH code.

BCH code can also be described alternately as –

Let a(x) and G(x) be two polynomials over same field with

no common factors.

By Euclid”s algorithm, a polynomial u(x) exists such that –

a(x) u(x) Ξ 1 mod G(x)

One option u(x) can be a-1(x) -- can be found under

modG(x).

THEOREM:- The q-ary narrow sense BCH code of length n

with designed distance d is equivalent to code

{ c єVn(q) ׀∑i=0

n-1

ci / (x – αi’ ) Ξ 0 (mod xd -1)}

-where α є GF(qm).

PROOF--

Goppa Codes

PROOF—

C will be a code of BCH if S1+ S2+ S3… S2t= 0

∑j=1

d-1 Sj= 0 (2t = d-1)

Hence S(x) =0 where S(x) = ∑j=1

d-1 Sjx

j-1 with Sj= c(αj )

S(x) Ξ ∑j=1

d-1 ∑i=0

n-1 ci αij x

j-1 αi +α2i +α3i +…α(d-1)i

Ξ ∑i=0

n-1 ci ∑j=1

d-1 αij x

j-1 Take αi out and expand the rest.

Ξ ∑i=0

n-1 ci αi[1+αi x+α2i x

2+… +α(d-1)i xd-1] GP

Ξ ∑i=0

n-1 ci αi[1- α(d-1)i x

d-1]/ [1-αi x] mod(x

d-1)

Goppa Codes

Ξ ∑i=0

n-1 ci αi [1- α(d-1)i x

d-1]/ [1-αi x] mod(x

d-1)

Ξ ∑i=0

n-1 ci αi [1]/ [1-αi x] mod(x

d-1) 2nd term remainder is 0.

Ξ ∑i=0

n-1 ci / [α-i - x] mod(x

d-1)

Ξ - ∑i=0

n-1 ci / [x-α-i] mod(x

d-1)

Replacing α by 1/α will not alter the summation.

Hence proved for BCH code.

Goppa Codes

Goppa code of designed distance d is an alternant code of

designed distance d, with additional property that—

The inverse frequency template G has width d.

Inverse frequency template, called Goppa polynomial can

be described as G(x) with degree d-1.

A narrow sense Goppa code is a Goppa code with 2t parity

frequencies at locations α0, …..αn-2t+2, αn-2t+1

THEOREM:- Let L = {α0 , α1 , …, αn-1} be a subset of GF(qm)

of size n,and let G(x) be a polynomial of degree s over

GF(qm) but has no root from L then—Goppa code is given

by

Ғ(L,G) = { c єVn(q) ׀∑i=0

n-1 ci / (x – αi ) Ξ 0 (mod G(x))}

Taking G(x) = xd-1

Goppa codes contain BCH code as subclass.

Goppa Codes

THEOREM:- The narrow sense Goppa code over GF(q)

with block length n = qm -1 and with Goppa polynomial G(x)

is given by the set of all vectors c = (c0, …cn-1) over GF(q)

satisfying

∑i=0

n-1 ci’ Π (x – α-i) = 0 (mod G(x)) excluding self i≠i’

Goppa Codes -Example

Smallest example is (8, 2, 5) binary Goppa code.

G(x) = x2 + x + 1.

Roots(zeros) of G(x) are in GF(4) or in any extension of

GF(4).

Hence none are in GF(8).

Hence G(x) can be used to obtain a Goppa code with

blocklength 8, minimum distance of 5 and 2 information

symbols.

Goppa Codes -Example

Example: Let α be the primitive element in GF(24) satisfying

α4 + α3 + 1=0. Consider the binary Goppa code Ғ(L,G) of

length 12 with G(x)=(x+ α)(x+ α14) and L={αi 2 ׀ ≤ i ≤ 13}.

Find parity check matrix H.

G(x)=(x+ α)(x+ α14)= x2 + α8x + 1

α and α14 are used to generate G(x), while rest of 12

elements are member of L.

∑i=0

n-1 ci / (x – αi ) Ξ 0 (mod G(x))} for ci to be code.

Product of C and H should be zero for correct code ,

otherwise would give syndrome.

Hence H becomes inverse of (x – αi ). {αi 2 ׀ ≤ i ≤ 13}.

e.g. Lets find inverse of (x – α2 ) modulo G(x).

Let inverse of (x – α2 ) modulo G(x) is ax+b.

(x – α2 )(ax+b) Ξ 1 (mod G(x))

Goppa Codes -Example

(x – α2 )(ax+b) = ax2 + (b + aα2)x + bα2

G(x)=x2 + α8x + 1=0

x2 = α8x + 1

= a (α8x + 1) + (b + aα2)x + bα2

= (aα10 + b)x + a + bα2 Ξ 1 (mod G(x))

Hence ---- (aα10 + b) =0 and a + bα2 = 1

Solving above a= α14 and b= α9

Inverse ax+b = α14 x+ α9

Similarly 11 other inverses can be found.

H= α9 α α8 α13 α7 α5 0 α9 α α6 α5 α6

α14 α3 α α4 α7 α1 α14 α4 α14 α9 α9 α3

Goppa Codes -Example

1 0 0 0 1 1 0 1 0 1 1 1

0 1 1 1 1 1 0 0 1 1 1 1

1 0 1 1 1 0 0 1 0 1 0 1

H= 0 0 1 0 0 1 0 0 0 1 1 1

0 0 0 1 1 0 0 1 0 1 1 0

0 0 1 0 1 1 0 0 0 0 0 0

1 0 0 0 1 0 1 0 1 1 1 0

1 1 0 1 0 0 1 1 1 0 0 1

H= α9 α α8 α13 α7 α5 0 α9 α α6 α5 α6

α14 α3 α α4 α7 α1 α14 α4 α14 α9 α9 α3

H has rank 8 and Goppa code of { , , ≥ )

Goppa Codes-- Decoding

THEOREM:- Let σ(x) and ω(x) be the error locator and error

evaluator polynomials of an error pattern of weight at most

[s/2] where s is degree of polynomial G(x) of Goppa code. (

s= n-k =d+1. i.e. s/2=t)

Then σ(x) = λ vi(x) and ω(x) = λ si(x)

where si(x) and vi(x) are obtained from Euclid’s Algorithm applied to G(x) and S(x) (to find hcf or gcd λ) until

deg(si(x))<[s/2] for the first time and where λ is chosen such

that λ vi(x) is monic.

(Proof omitted. Ref:

hyperelliptic.org/tanja/teaching/CCI11/CODING.pdf.)

Roots of σ(x) and ω(x) together will give error location and

magnitude.

Recommended