Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Cyclic code

From Wikipedia, the free encyclopedia
Type of block code
This articlemay be too technical for most readers to understand. Pleasehelp improve it tomake it understandable to non-experts, without removing the technical details.(March 2014) (Learn how and when to remove this message)

Incoding theory, acyclic code is ablock code, where thecircular shifts of each codeword gives another word that belongs to the code. They areerror-correcting codes that have algebraic properties that are convenient for efficienterror detection and correction.

If 00010111 is a valid codeword, applying a right circular shift gives the string 10001011. If the code is cyclic, then 10001011 is again a valid codeword. In general, applying a right circular shift moves the least significant bit (LSB) to the leftmost position, so that it becomes the most significant bit (MSB); the other positions are shifted by 1 to the right.

Definition

[edit]

LetC{\displaystyle {\mathcal {C}}} be alinear code over afinite field (also called Galois field)GF(q){\displaystyle GF(q)} ofblock lengthn{\displaystyle n}.C{\displaystyle {\mathcal {C}}} is called acyclic code if, for everycodewordc=(c1,,cn){\displaystyle c=(c_{1},\ldots ,c_{n})} fromC{\displaystyle {\mathcal {C}}}, the word(cn,c1,,cn1){\displaystyle (c_{n},c_{1},\ldots ,c_{n-1})} inGF(q)n{\displaystyle GF(q)^{n}} obtained by acyclic right shift of components is again a codeword. Because one cyclic right shift is equal ton1{\displaystyle n-1} cyclic left shifts, a cyclic code may also be defined via cyclic left shifts. Therefore, the linear codeC{\displaystyle {\mathcal {C}}} is cyclic precisely when it is invariant under all cyclic shifts.

Cyclic codes have some additional structural constraint on the codes. They are based onGalois fields and because of their structural properties they are very useful for error controls. Their structure is strongly related to Galois fields because of which the encoding and decoding algorithms for cyclic codes are computationally efficient.

Algebraic structure

[edit]

Cyclic codes can be linked to ideals in certain rings. LetR=A[x]/(xn1){\displaystyle R=A[x]/(x^{n}-1)} be a quotient of apolynomial ring over the finite fieldA=GF(q){\displaystyle A=GF(q)}. Identify the elements of the cyclic codeC{\displaystyle {\mathcal {C}}} with polynomials inR{\displaystyle R} such that(c0,,cn1){\displaystyle (c_{0},\ldots ,c_{n-1})} maps to the polynomialc0+c1x++cn1xn1{\displaystyle c_{0}+c_{1}x+\cdots +c_{n-1}x^{n-1}}: thus multiplication byx{\displaystyle x} corresponds to a cyclic shift. ThenC{\displaystyle {\mathcal {C}}} is anideal inR{\displaystyle R}, and henceprincipal, sinceR{\displaystyle R} is aprincipal ideal ring. The ideal is generated by the unique monic element inC{\displaystyle {\mathcal {C}}} of minimum degree, thegenerator polynomialg{\displaystyle g}.[1]This must be a divisor ofxn1{\displaystyle x^{n}-1}. It follows that every cyclic code is apolynomial code.If the generator polynomialg{\displaystyle g} has degreed{\displaystyle d} then the rank of the codeC{\displaystyle {\mathcal {C}}} isnd{\displaystyle n-d}.

IfC{\displaystyle {\mathcal {C}}} is a cyclic code, thedual codeC{\displaystyle {\mathcal {C}}^{\perp }} is also a cyclic code. The generator polynomialh(x){\displaystyle h(x)} forC{\displaystyle {\mathcal {C}}^{\perp }} is also called theparity-check polynomial or simplycheck polynomial forC{\displaystyle {\mathcal {C}}}. It can also be shown thatg(x)h(x)=xn1{\displaystyle g(x)h^{*}(x)=x^{n}-1}, whereh(x){\displaystyle h^{*}(x)} denotes thereciprocal polynomial ofh(x){\displaystyle h(x)}.[2]

Theidempotent ofC{\displaystyle {\mathcal {C}}} is a codeworde{\displaystyle e} such thate2=e{\displaystyle e^{2}=e} (that is,e{\displaystyle e} is anidempotent element ofC{\displaystyle {\mathcal {C}}}) ande{\displaystyle e} is an identity for the code, that isec=c{\displaystyle e\cdot c=c} for every codewordc{\displaystyle c}. Ifn{\displaystyle n} andq{\displaystyle q} arecoprime such a word always exists and is unique;[3] it is a generator of the code.

Anirreducible code is a cyclic code in which the code, as an ideal is irreducible, i.e. is minimal inR{\displaystyle R}, so that its check polynomial is anirreducible polynomial.

Examples

[edit]

For example, ifA=F2{\displaystyle A=\mathbb {F} _{2}} andn=3{\displaystyle n=3}, the set of codewords contained in the cyclic code generated by(1,1,0){\displaystyle (1,1,0)} is precisely

{(0,0,0),(1,1,0),(0,1,1),(1,0,1)}.{\displaystyle \{(0,0,0),(1,1,0),(0,1,1),(1,0,1)\}.}

This code corresponds to the ideal inF2[x]/(x31){\displaystyle \mathbb {F} _{2}[x]/(x^{3}-1)} generated by(1+x){\displaystyle (1+x)}.

The polynomial(1+x){\displaystyle (1+x)} is irreducible in the polynomial ring, and hence the code is an irreducible code.

The idempotent of this code is the polynomialx+x2{\displaystyle x+x^{2}}, corresponding to the codeword(0,1,1){\displaystyle (0,1,1)}.

Trivial examples

[edit]

Trivial examples of cyclic codes areAn{\displaystyle A^{n}} itself and the code containing only the zero codeword. These correspond to generators1{\displaystyle 1} andxn1{\displaystyle x^{n}-1} respectively: these two polynomials must always be factors ofxn1{\displaystyle x^{n}-1}.

OverGF(2){\displaystyle GF(2)} theparity bit code, consisting of all words of even weight, corresponds to generatorx+1{\displaystyle x+1}. Again overGF(2){\displaystyle GF(2)} this must always be a factor ofxn1{\displaystyle x^{n}-1}.

Other examples

[edit]

Many types of commonly used error-correcting codes can be represented as cyclic codes, includingBCH codes,Reed-Solomon codes, and some classes oflow-density parity-check codes defined from finite geometries.[4]

For correcting errors

[edit]

Cyclic codes can be used tocorrect errors, likeHamming codes as cyclic codes can be used for correcting single error. Likewise, they are also used to correct double errors and burst errors. All types of error corrections are covered briefly in the further subsections.

The (7,4) Hamming code has agenerator polynomialg(x)=x3+x+1{\displaystyle g(x)=x^{3}+x+1}. This polynomial has a zero inGalois extension fieldGF(8){\displaystyle GF(8)} at the primitive elementα{\displaystyle \alpha }, and all codewords satisfyC(α)=0{\displaystyle {\mathcal {C}}(\alpha )=0}. Cyclic codes can also be used to correct double errors over the fieldGF(2){\displaystyle GF(2)}. Blocklength will ben{\displaystyle n} equal to2m1{\displaystyle 2^{m}-1} and primitive elementsα{\displaystyle \alpha } andα3{\displaystyle \alpha ^{3}} as zeros in theGF(2m){\displaystyle GF(2^{m})} because we are considering the case of two errors here, so each will represent one error.

The received word is a polynomial of degreen1{\displaystyle n-1} given asv(x)=a(x)g(x)+e(x){\displaystyle v(x)=a(x)g(x)+e(x)}

wheree(x){\displaystyle e(x)} can have at most two nonzero coefficients corresponding to 2 errors.

We define thesyndrome polynomial,S(x){\displaystyle S(x)} as the remainder of polynomialv(x){\displaystyle v(x)} when divided by the generator polynomialg(x){\displaystyle g(x)} i.e.

S(x)v(x)(a(x)g(x)+e(x))e(x)modg(x){\displaystyle S(x)\equiv v(x)\equiv (a(x)g(x)+e(x))\equiv e(x)\mod g(x)} as(a(x)g(x))0modg(x){\displaystyle (a(x)g(x))\equiv 0\mod g(x)}.

For correcting two errors

[edit]

Let the field elementsX1{\displaystyle X_{1}} andX2{\displaystyle X_{2}} be the two error location numbers. If only one error occurs thenX2{\displaystyle X_{2}} is equal to zero and if none occurs both are zero.

LetS1=v(α){\displaystyle S_{1}={v}(\alpha )} andS3=v(α3){\displaystyle S_{3}={v}(\alpha ^{3})}.

These field elements are called "syndromes". Now becauseg(x){\displaystyle g(x)} is zero at primitive elementsα{\displaystyle \alpha } andα3{\displaystyle \alpha ^{3}}, so we can writeS1=e(α){\displaystyle S_{1}=e(\alpha )} andS3=e(α3){\displaystyle S_{3}=e(\alpha ^{3})}. If say two errors occur, then

S1=αi+αi{\displaystyle S_{1}=\alpha ^{i}+\alpha ^{i'}} andS3=α3i+α3i{\displaystyle S_{3}=\alpha ^{3i}+\alpha ^{3i'}}.

And these two can be considered as two pair of equations inGF(2m){\displaystyle GF(2^{m})} with two unknowns and hence we can write

S1=X1+X2{\displaystyle S_{1}=X_{1}+X_{2}} andS3=(X1)3+(X2)3{\displaystyle S_{3}=(X_{1})^{3}+(X_{2})^{3}}.

Hence if the two pair of nonlinear equations can be solved cyclic codes can used to correct two errors.

Hamming code

[edit]

TheHamming(7,4) code may be written as a cyclic code over GF(2) with generator1+x+x3{\displaystyle 1+x+x^{3}}. In fact, any binary Hamming code of the form Ham(r, 2) is equivalent to a cyclic code,[5] and any Hamming code of the form Ham(r,q) with r and q-1 relatively prime is also equivalent to a cyclic code.[6] Given a Hamming code of the form Ham(r,2) withr3{\displaystyle r\geq 3}, the set of even codewords forms a cyclic[2r1,2rr2,4]{\displaystyle [2^{r}-1,2^{r}-r-2,4]}-code.[7]

Hamming code for correcting single errors

[edit]

A code whose minimum distance is at least 3, have a check matrix all of whose columns are distinct and non zero. If a check matrix for a binary code hasm{\displaystyle m} rows, then each column is anm{\displaystyle m}-bitbinary number. There are2m1{\displaystyle 2^{m}-1} possible columns. Therefore, if a check matrix of a binary code withdmin{\displaystyle d_{min}} at least 3 hasm{\displaystyle m} rows, then it can only have2m1{\displaystyle 2^{m}-1} columns, not more than that. This defines a(2m1,2m1m){\displaystyle (2^{m}-1,2^{m}-1-m)} code, called Hamming code.

It is easy to define Hamming codes for large alphabets of sizeq{\displaystyle q}. We need to define oneH{\displaystyle H} matrix with linearly independent columns. For any word of sizeq{\displaystyle q} there will be columns who are multiples of each other. So, to getlinear independence all non zerom{\displaystyle m}-tuples with one as a top most non zero element will be chosen as columns. Then two columns will never be linearly dependent because three columns could be linearly dependent with the minimum distance of the code as 3.

So, there are(qm1)/(q1){\displaystyle (q^{m}-1)/(q-1)} nonzero columns with one as top most non zero element. Therefore, a Hamming code is a[(qm1)/(q1),(qm1)/(q1)m]{\displaystyle [(q^{m}-1)/(q-1),(q^{m}-1)/(q-1)-m]} code.

Now, for cyclic codes, Letα{\displaystyle \alpha } be primitive element inGF(qm){\displaystyle GF(q^{m})}, and letβ=αq1{\displaystyle \beta =\alpha ^{q-1}}. Thenβ(qm1)/(q1)=1{\displaystyle \beta ^{(q^{m}-1)/(q-1)}=1} and thusβ{\displaystyle \beta } is a zero of the polynomialx(qm1)/(q1)1{\displaystyle x^{(q^{m}-1)/(q-1)}-1} and is a generator polynomial for the cyclic code of block lengthn=(qm1)/(q1){\displaystyle n=(q^{m}-1)/(q-1)}.

But forq=2{\displaystyle q=2},α=β{\displaystyle \alpha =\beta }. And the received word is a polynomial of degreen1{\displaystyle n-1} given as

v(x)=a(x)g(x)+e(x){\displaystyle v(x)=a(x)g(x)+e(x)}

where,e(x)=0{\displaystyle e(x)=0} orxi{\displaystyle x^{i}} wherei{\displaystyle i} represents the error locations.

But we can also useαi{\displaystyle \alpha ^{i}} as an element ofGF(2m){\displaystyle GF(2^{m})} to index error location. Becauseg(α)=0{\displaystyle g(\alpha )=0}, we havev(α)=αi{\displaystyle v(\alpha )=\alpha ^{i}} and all powers ofα{\displaystyle \alpha } from0{\displaystyle 0} to2m2{\displaystyle 2^{m}-2} are distinct. Therefore, we can easily determine error locationi{\displaystyle i} fromαi{\displaystyle \alpha ^{i}} unlessv(α)=0{\displaystyle v(\alpha )=0} which represents no error. So, a Hamming code is a single error correcting code overGF(2){\displaystyle GF(2)} withn=2m1{\displaystyle n=2^{m}-1} andk=nm{\displaystyle k=n-m}.

For correcting burst errors

[edit]

FromHamming distance concept, a code with minimum distance2t+1{\displaystyle 2t+1} can correct anyt{\displaystyle t} errors. But in many channels error pattern is not very arbitrary, it occurs within very short segment of the message. Such kind of errors are calledburst errors. So, for correcting such errors we will get a more efficient code of higher rate because of the less constraints. Cyclic codes are used for correcting burst error. In fact, cyclic codes can also correct cyclic burst errors along with burst errors. Cyclic burst errors are defined as

A cyclic burst of lengtht{\displaystyle t} is a vector whose nonzero components are amongt{\displaystyle t} (cyclically) consecutive components, the first and the last of which are nonzero.

In polynomial form cyclic burst of lengtht{\displaystyle t} can be described ase(x)=xib(x)mod(xn1){\displaystyle e(x)=x^{i}b(x)\mod (x^{n}-1)} withb(x){\displaystyle b(x)} as a polynomial of degreet1{\displaystyle t-1} with nonzero coefficientb0{\displaystyle b_{0}}. Hereb(x){\displaystyle b(x)} defines the pattern andxi{\displaystyle x^{i}} defines the starting point of error. Length of the pattern is given by degb(x)+1{\displaystyle b(x)+1}. The syndrome polynomial is unique for each pattern and is given by

s(x)=e(x)modg(x){\displaystyle s(x)=e(x)\mod g(x)}

A linear block code that corrects all burst errors of lengtht{\displaystyle t} or less must have at least2t{\displaystyle 2t} check symbols. Proof: Because any linear code that can correct burst pattern of lengtht{\displaystyle t} or less cannot have a burst of length2t{\displaystyle 2t} or less as a codeword because if it did then a burst of lengtht{\displaystyle t} could change the codeword to burst pattern of lengtht{\displaystyle t}, which also could be obtained by making a burst error of lengtht{\displaystyle t} in all zero codeword. Now, any two vectors that are non zero in the first2t{\displaystyle 2t} components must be from different co-sets of an array to avoid their difference being a codeword of bursts of length2t{\displaystyle 2t}. Therefore, number of such co-sets are equal to number of such vectors which areq2t{\displaystyle q^{2t}}. Hence at leastq2t{\displaystyle q^{2t}} co-sets and hence at least2t{\displaystyle 2t} check symbol.

This property is also known as Rieger bound and it is similar to theSingleton bound for random error correcting.

Fire codes as cyclic bounds

[edit]
See also:Burst error-correcting code § Fire codes

In 1959, Philip Fire[8] presented a construction of cyclic codes generated by a product of a binomial and a primitive polynomial. The binomial has the formxc+1{\displaystyle x^{c}+1} for some positive odd integerc{\displaystyle c}.[9]Fire code is a cyclic burst error correcting code overGF(q){\displaystyle GF(q)} with the generator polynomial

g(x)=(x2t11)p(x){\displaystyle g(x)=(x^{2t-1}-1)p(x)}

wherep(x){\displaystyle p(x)} is a prime polynomial with degreem{\displaystyle m} not smaller thant{\displaystyle t} andp(x){\displaystyle p(x)} does not dividex2t11{\displaystyle x^{2t-1}-1}. Block length of the fire code is the smallest integern{\displaystyle n} such thatg(x){\displaystyle g(x)} dividesxn1{\displaystyle x^{n}-1}.

A fire code can correct all burst errors of length t or less if no two burstsb(x){\displaystyle b(x)} andxjb(x){\displaystyle x^{j}b'(x)} appear in the same co-set. This can be proved by contradiction. Suppose there are two distinct nonzero burstsb(x){\displaystyle b(x)} andxjb(x){\displaystyle x^{j}b'(x)} of lengtht{\displaystyle t} or less and are in the same co-set of the code. So, their difference is a codeword. As the difference is a multiple ofg(x){\displaystyle g(x)} it is also a multiple ofx2t11{\displaystyle x^{2t-1}-1}. Therefore,

b(x)=xjb(x)mod(x2t11){\displaystyle b(x)=x^{j}b'(x)\mod (x^{2t-1}-1)}.

This shows thatj{\displaystyle j} is a multiple of2t1{\displaystyle 2t-1}, So

b(x)=xl(2t1)b(x){\displaystyle b(x)=x^{l(2t-1)}b'(x)}

for somel{\displaystyle l}. Now, asl(2t1){\displaystyle l(2t-1)} is less thant{\displaystyle t} andl{\displaystyle l} is less thanqm1{\displaystyle q^{m}-1} so(xl(2t1)1)b(x){\displaystyle (x^{l(2t-1)}-1)b(x)} is a codeword. Therefore,

(xl(2t1)1)b(x)=a(x)(x2t11)p(x){\displaystyle (x^{l(2t-1)}-1)b(x)=a(x)(x^{2t-1}-1)p(x)}.

Sinceb(x){\displaystyle b(x)} degree is less than degree ofp(x){\displaystyle p(x)},p(x){\displaystyle p(x)} cannot divideb(x){\displaystyle b(x)}. Ifl{\displaystyle l} is not zero, thenp(x){\displaystyle p(x)} also cannot dividexl(2t1)1{\displaystyle x^{l(2t-1)}-1} asl{\displaystyle l} is less thanqm1{\displaystyle q^{m}-1} and by definition ofm{\displaystyle m},p(x){\displaystyle p(x)} dividesxl(2t1)1{\displaystyle x^{l(2t-1)}-1} for nol{\displaystyle l} smaller thanqm1{\displaystyle q^{m}-1}. Thereforel{\displaystyle l} andj{\displaystyle j} equals to zero. That means both that both the bursts are same, contrary to assumption.

Fire codes are the best single burst correcting codes with high rate and they are constructed analytically. They are of very high rate and whenm{\displaystyle m} andt{\displaystyle t} are equal, redundancy is least and is equal to3t1{\displaystyle 3t-1}. By using multiple fire codes longer burst errors can also be corrected.

For error detection cyclic codes are widely used and are calledt1{\displaystyle t-1}cyclic redundancy codes.

On Fourier transform

[edit]

Applications ofFourier transform are widespread insignal processing. But their applications are not limited to the complex fields only; Fourier transforms also exist in the Galois fieldGF(q){\displaystyle GF(q)}. Cyclic codes using Fourier transform can be described in a setting closer to the signal processing.

Fourier transform over finite fields

[edit]

Fourier transform over finite fields

The discrete Fourier transform of vectorv=v0,v1,....,vn1{\displaystyle v=v_{0},v_{1},....,v_{n-1}} is given by a vectorV=V0,V1,.....,Vn1{\displaystyle V=V_{0},V_{1},.....,V_{n-1}} where,

Vk{\displaystyle V_{k}} =Σi=0n1ej2πn1ikvi{\displaystyle \Sigma _{i=0}^{n-1}e^{-j2\pi n^{-1}ik}v_{i}} where,

k=0,.....,n1{\displaystyle k=0,.....,n-1}

where exp(j2π/n{\displaystyle -j2\pi /n}) is ann{\displaystyle n}throot of unity. Similarly in the finite fieldn{\displaystyle n}th root of unity is elementω{\displaystyle \omega } of ordern{\displaystyle n}. Therefore

Ifv=(v0,v1,....,vn1){\displaystyle v=(v_{0},v_{1},....,v_{n-1})} is a vector overGF(q){\displaystyle GF(q)}, andω{\displaystyle \omega } be an element ofGF(q){\displaystyle GF(q)} of ordern{\displaystyle n}, then Fourier transform of the vectorv{\displaystyle v} is the vectorV=(V0,V1,.....,Vn1){\displaystyle V=(V_{0},V_{1},.....,V_{n-1})} and components are given by

Vj{\displaystyle V_{j}} =Σi=0n1ωijvi{\displaystyle \Sigma _{i=0}^{n-1}\omega ^{ij}v_{i}} where,

k=0,.....,n1{\displaystyle k=0,.....,n-1}

Herei{\displaystyle i} istime index,j{\displaystyle j} isfrequency andV{\displaystyle V} is thespectrum. One important difference between Fourier transform in complex field and Galois field is that complex fieldω{\displaystyle \omega } exists for every value ofn{\displaystyle n} while in Galois fieldω{\displaystyle \omega } exists only ifn{\displaystyle n} dividesq1{\displaystyle q-1}. In case of extension fields, there will be a Fourier transform in the extension fieldGF(qm){\displaystyle GF(q^{m})} ifn{\displaystyle n} dividesqm1{\displaystyle q^{m}-1} for somem{\displaystyle m}. In Galois fieldtime domain vectorv{\displaystyle v} is over the fieldGF(q){\displaystyle GF(q)} but the spectrumV{\displaystyle V} may be over the extension fieldGF(qm){\displaystyle GF(q^{m})}.

Spectral description

[edit]

Any codeword of cyclic code of blocklengthn{\displaystyle n} can be represented by a polynomialc(x){\displaystyle c(x)} of degree at mostn1{\displaystyle n-1}. Its encoder can be written asc(x)=a(x)g(x){\displaystyle c(x)=a(x)g(x)}. Therefore, in frequency domain encoder can be written asCj=AjGj{\displaystyle C_{j}=A_{j}G_{j}}. Herecodeword spectrumCj{\displaystyle C_{j}} has a value inGF(qm){\displaystyle GF(q^{m})} but all the components in the time domain are fromGF(q){\displaystyle GF(q)}. As the data spectrumAj{\displaystyle A_{j}} is arbitrary, the role ofGj{\displaystyle G_{j}} is to specify thosej{\displaystyle j} whereCj{\displaystyle C_{j}} will be zero.

Thus, cyclic codes can also be defined as

Given a set of spectral indices,A=(j1,....,jnk){\displaystyle A=(j_{1},....,j_{n-k})}, whose elements are called check frequencies, the cyclic codeC{\displaystyle C}is the set of words overGF(q){\displaystyle GF(q)}whose spectrum is zero in the components indexed byj1,...,jnk{\displaystyle j_{1},...,j_{n-k}}.Any such spectrumC{\displaystyle C}will have components of the formAjGj{\displaystyle A_{j}G_{j}}.

So, cyclic codes are vectors in the fieldGF(q){\displaystyle GF(q)} and the spectrum given by its inverse fourier transform is over the fieldGF(qm){\displaystyle GF(q^{m})} and are constrained to be zero at certain components. But every spectrum in the fieldGF(qm){\displaystyle GF(q^{m})} and zero at certain components may not have inverse transforms with components in the fieldGF(q){\displaystyle GF(q)}. Such spectrum can not be used as cyclic codes.

Following are the few bounds on the spectrum of cyclic codes.

BCH bound

[edit]

Ifn{\displaystyle n} be a factor of(qm1){\displaystyle (q^{m}-1)} for somem{\displaystyle m}. The only vector inGF(q)n{\displaystyle GF(q)^{n}} of weightd1{\displaystyle d-1} or less that hasd1{\displaystyle d-1} consecutive components of its spectrum equal to zero is all-zero vector.

Hartmann-Tzeng bound

[edit]

Ifn{\displaystyle n} be a factor of(qm1){\displaystyle (q^{m}-1)} for somem{\displaystyle m}, andb{\displaystyle b} an integer that is coprime withn{\displaystyle n}. The only vectorv{\displaystyle v} inGF(q)n{\displaystyle GF(q)^{n}} of weightd1{\displaystyle d-1} or less whose spectral componentsVj{\displaystyle V_{j}} equal zero forj=1+2b(modn){\displaystyle j=\ell _{1}+\ell _{2}b(\mod n)}, where1=0,....,ds1{\displaystyle \ell _{1}=0,....,d-s-1} and2=0,....,s1{\displaystyle \ell _{2}=0,....,s-1}, is the all zero vector.

Roos bound

[edit]

Ifn{\displaystyle n} be a factor ofqm1{\displaystyle q^{m}-1} for somem{\displaystyle m} andGCD(n,b)=1{\displaystyle GCD(n,b)=1}. The only vector inGF(q)n{\displaystyle GF(q)^{n}} of weightd1{\displaystyle d-1} or less whose spectral componentsVj{\displaystyle V_{j}} equal to zero forj=l1+l2b(modn){\displaystyle j=l_{1}+l_{2}b(\mod n)}, wherel1=0,...,ds2{\displaystyle l_{1}=0,...,d-s-2} andl2{\displaystyle l_{2}} takes at leasts+1{\displaystyle s+1} values in the range0,....,d2{\displaystyle 0,....,d-2}, is the all-zero vector.

Quadratic residue codes

[edit]

When the primel{\displaystyle l} is a quadratic residue modulo the primep{\displaystyle p} there is aquadratic residue code which is a cyclic code of lengthp{\displaystyle p}, dimension(p+1)/2{\displaystyle (p+1)/2} and minimum weight at leastp{\displaystyle {\sqrt {p}}} overGF(l){\displaystyle GF(l)}.

Generalizations

[edit]

Constacyclic codes

[edit]

Aconstacyclic code is a linear code with the property that for some constantλ{\displaystyle \lambda } if(c1,c2,,cn){\displaystyle (c_{1},c_{2},\dots ,c_{n})} is a codeword, then so is(λcn,c1,,cn1){\displaystyle (\lambda c_{n},c_{1},\dots ,c_{n-1})}. Anegacyclic code is a constacyclic code withλ=1{\displaystyle \lambda =-1}.[10]

Quasi-cyclic code

[edit]

Aquasi-cyclic code (QC code) has the property that for somes{\displaystyle s} dividingn{\displaystyle n}, any cyclic shift of a codeword bys{\displaystyle s} places is again a codeword. That is, for some constants{\displaystyle s}, if(c0,c1,,cn1){\displaystyle (c_{0},c_{1},\dots ,c_{n-1})} is a codeword, then so is(cs,c1s,,cns1){\displaystyle (c_{-s},c_{1-s},\dots ,c_{n-s-1})}, where all subscripts are reduced modn{\displaystyle n}.[11] Such a code is known as ans{\displaystyle s}-QC code. Adouble circulant code is a quasi-cyclic code of even length withs=2{\displaystyle s=2}.[11]

Shortened cyclic codes

[edit]

An(n,k){\displaystyle (n,k)} linear code is called ashortened cyclic code if it can be obtained by deletingb{\displaystyle b} positions from an(n+b,k+b){\displaystyle (n+b,k+b)} cyclic code. Code of this form are not generally cyclic.[12]

In shortened codes, information symbols are deleted to obtain a desired block length smaller than the original block length. While deleting the firstb{\displaystyle b} symbols is a common approach, in principle any set of information symbols can be deleted.[12] Any cyclic code can be converted to a quasi-cyclic code by dropping everyb{\displaystyle b}-th symbol, whereb{\displaystyle b} is a factor ofn{\displaystyle n}. If the dropped symbols are not check symbols, this cyclic code is also a shortened cyclic code.

Other generalizations

[edit]

Quasi-twisted codes (QT codes) combine the properties of constacyclic and quasi-cyclic codes, with the shift occurring bys{\displaystyle s} places and with a multiplier ofλ{\displaystyle \lambda }. That is, for some constantsλ{\displaystyle \lambda } ands{\displaystyle s}, if(c0,c1,,cn1){\displaystyle (c_{0},c_{1},\dots ,c_{n-1})} is a codeword, then so is(λcs,c1s,,cns1){\displaystyle (\lambda c_{-s},c_{1-s},\dots ,c_{n-s-1})}, where all subscripts are reduced modn{\displaystyle n}.[13]Multi-twisted codes are further generalizations of QT codes, which join multiple QT codes end to end.[13][14]

See also

[edit]

Notes

[edit]
  1. ^Van Lint 1998, p. 76
  2. ^Ryan & Lin 2009, pp. 108–109
  3. ^Van Lint 1998, p. 80
  4. ^Ryan & Lin 2009, chpt. 10
  5. ^Hill 1988, pp. 159–160
  6. ^Blahut 2003, Theorem 5.5.1
  7. ^Hill 1988, pp. 162–163
  8. ^P. Fire, E, P. (1959).A class of multiple-error-correcting binary codes for non-independent errors. Sylvania Reconnaissance Systems Laboratory, Mountain View, CA, Rept. RSL-E-2, 1959.
  9. ^Wei Zhou, Shu Lin, Khaled Abdel-Ghaffar.Burst or random error correction based on Fire and BCH codes. ITA 2014: 1-5 2013.
  10. ^Van Lint 1998, p. 75
  11. ^abMacWilliams & Sloane 1977, p. 506
  12. ^abRyan & Lin 2009, p. 110
  13. ^abAydin, Nuh; Halilović, Ajdin (2017)."A generalization of quasi-twisted codes: multi-twisted codes".Finite Fields and Their Applications.45:96–106.arXiv:1701.01044.doi:10.1016/j.ffa.2016.12.002.S2CID 7694655.
  14. ^Aydin, Nuh; Siap, Irfan; K. Ray-Chaudhuri, Dijen (2001). "The Structure of 1-Generator Quasi-Twisted Codes and New Linear Codes".Designs, Codes and Cryptography.24 (3):313–326.doi:10.1023/A:1011283523000.S2CID 17376783.

References

[edit]

Further reading

[edit]

External links

[edit]

This article incorporates material from cyclic code onPlanetMath, which is licensed under theCreative Commons Attribution/Share-Alike License.

Retrieved from "https://en.wikipedia.org/w/index.php?title=Cyclic_code&oldid=1319561433"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp