Articulo de referencia

Código cíclico

En teoría de la codificación , un código cíclico es un código de bloques , donde los desplazamientos circulares de cada palabra clave generan otra palabra que pertenece al códig...

En teoría de la codificación , un código cíclico es un código de bloques , donde los desplazamientos circulares de cada palabra clave generan otra palabra que pertenece al código. Son códigos correctores de errores que poseen propiedades algebraicas convenientes para la detección y corrección eficiente de errores .

Si 00010111 es una palabra clave válida, al aplicar un desplazamiento circular a la derecha se obtiene la cadena 10001011. Si el código es cíclico, entonces 10001011 también es una palabra clave válida. En general, al aplicar un desplazamiento circular a la derecha, el bit menos significativo (LSB) se desplaza a la posición más a la izquierda, convirtiéndose así en el bit más significativo (MSB); las demás posiciones se desplazan una posición a la derecha.

Definición

Dejardo{\displaystyle {\mathcal {C}}}ser un código lineal sobre un cuerpo finito (también llamado cuerpo de Galois )GRAMOF(q){\displaystyle GF(q)}de longitud del bloquenorte{\displaystyle n}.do{\displaystyle {\mathcal {C}}}Se denomina código cíclico si, para cada palabra clavedo=(do1,,donorte){\displaystyle c=(c_{1},\ldots ,c_{n})}dedo{\displaystyle {\mathcal {C}}}, la palabra(donorte,do1,,donorte1){\displaystyle (c_{n},c_{1},\ldots ,c_{n-1})}enGRAMOF(q)norte{\displaystyle GF(q)^{n}}obtenido mediante un desplazamiento cíclico a la derecha de componentes es nuevamente una palabra clave. Porque un desplazamiento cíclico a la derecha es igual anorte1{\displaystyle n-1}Desplazamientos cíclicos a la izquierda, un código cíclico también puede definirse mediante desplazamientos cíclicos a la izquierda. Por lo tanto, el código linealdo{\displaystyle {\mathcal {C}}}es cíclico precisamente cuando es invariante bajo todos los cambios cíclicos.

Los códigos cíclicos presentan restricciones estructurales adicionales. Se basan en campos de Galois y, debido a sus propiedades estructurales, resultan muy útiles para el control de errores. Su estructura está estrechamente relacionada con los campos de Galois, lo que hace que los algoritmos de codificación y decodificación para códigos cíclicos sean computacionalmente eficientes.

Estructura algebraica

Los códigos cíclicos pueden vincularse a ideales en ciertos anillos. R=A[incógnita]/(incógnitanorte1){\displaystyle R=A[x]/(x^{n}-1)}sea ​​un cociente de un anillo de polinomios sobre el cuerpo finitoA=GRAMOF(q){\displaystyle A=GF(q)}. Identificar los elementos del código cíclicodo{\displaystyle {\mathcal {C}}}con polinomios enR{\displaystyle R}de tal manera que (do0,,donorte1){\displaystyle (c_{0},\ldots ,c_{n-1})}mapea al polinomio do0+do1incógnita++donorte1incógnitanorte1{\displaystyle c_{0}+c_{1}x+\cdots +c_{n-1}x^{n-1}}: por lo tanto, la multiplicación porincógnita{\displaystyle x}corresponde a un cambio cíclico. Entoncesdo{\displaystyle {\mathcal {C}}}es un ideal enR{\displaystyle R}y por lo tanto principal , ya queR{\displaystyle R}es un anillo ideal principal . El ideal se genera mediante el único elemento mónico endo{\displaystyle {\mathcal {C}}}de grado mínimo, el polinomio generadorgramo{\displaystyle g}. [ 1 ] Esto debe ser un divisor deincógnitanorte1{\displaystyle x^{n}-1}. De ello se deduce que todo código cíclico es un código polinomial . Si el polinomio generadorgramo{\displaystyle g}tiene títulod{\displaystyle d}luego el rango del códigodo{\displaystyle {\mathcal {C}}}esnorted{\displaystyle nd}.

Sido{\displaystyle {\mathcal {C}}}es un código cíclico, el código dualdo{\displaystyle {\mathcal {C}}^{\perp }}También es un código cíclico. El polinomio generadorh(incógnita){\displaystyle h(x)}parado{\displaystyle {\mathcal {C}}^{\perp }}También se le llama polinomio de verificación de paridad o simplemente polinomio de verificación parado{\displaystyle {\mathcal {C}}}También se puede demostrar quegramo(incógnita)h(incógnita)=incógnitanorte1{\displaystyle g(x)h^{*}(x)=x^{n}-1}, dóndeh(incógnita){\displaystyle h^{*}(x)}denota el polinomio recíproco deh(incógnita){\displaystyle h(x)}. [ 2 ]

El idempotente dedo{\displaystyle {\mathcal {C}}}es una palabra clavemi{\displaystyle e}de tal manera quemi2=mi{\displaystyle e^{2}=e}(eso es,mi{\displaystyle e}es un elemento idempotente dedo{\displaystyle {\mathcal {C}}}) ymi{\displaystyle e}es una identidad para el código, es decirmido=do{\displaystyle e\cdot c=c}para cada palabra clavedo{\displaystyle c}. Sinorte{\displaystyle n}yq{\displaystyle q}son coprimos tal palabra siempre existe y es única; [ 3 ] es un generador del código.

Un código irreducible es un código cíclico en el que el código, como ideal, es irreducible, es decir, es mínimo enR{\displaystyle R}, de modo que su polinomio de verificación sea un polinomio irreducible .

Ejemplos

Por ejemplo, siA=F2{\displaystyle A=\mathbb {F} _{2}}ynorte=3{\displaystyle n=3}, el conjunto de palabras clave contenidas en el código cíclico generado por(1,1,0){\displaystyle (1,1,0)}es precisamente

{(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)\}.}

Este código corresponde al ideal enF2[incógnita]/(incógnita31){\displaystyle \mathbb {F} _{2}[x]/(x^{3}-1)}generado por(1+incógnita){\displaystyle (1+x)}.

El polinomio(1+incógnita){\displaystyle (1+x)}es irreducible en el anillo de polinomios y, por lo tanto, el código es un código irreducible.

El idempotente de este código es el polinomioincógnita+incógnita2{\displaystyle x+x^{2}}, correspondiente a la palabra clave(0,1,1){\displaystyle (0,1,1)}.

Ejemplos triviales

Ejemplos triviales de códigos cíclicos son:Anorte{\displaystyle A^{n}}el código mismo y el código que contiene solo la palabra clave cero. Estos corresponden a generadores1{\displaystyle 1}yincógnitanorte1{\displaystyle x^{n}-1}respectivamente: estos dos polinomios siempre deben ser factores deincógnitanorte1{\displaystyle x^{n}-1}.

EncimaGRAMOF(2){\displaystyle GF(2)}El código de bits de paridad , que consta de todas las palabras de peso par, corresponde al generador.incógnita+1{\displaystyle x+1}. Otra vez másGRAMOF(2){\displaystyle GF(2)}esto siempre debe ser un factor deincógnitanorte1{\displaystyle x^{n}-1}.

Otros ejemplos

Muchos tipos de códigos correctores de errores de uso común pueden representarse como códigos cíclicos, incluidos los códigos BCH , los códigos Reed-Solomon y algunas clases de códigos de verificación de paridad de baja densidad definidos a partir de geometrías finitas. [ 4 ]

Para corregir errores

Los códigos cíclicos pueden utilizarse para corregir errores , al igual que los códigos de Hamming , ya que también se emplean para corregir errores simples. Asimismo, se utilizan para corregir errores dobles y errores en ráfaga. Todos los tipos de corrección de errores se abordan brevemente en las siguientes subsecciones.

El código de Hamming (7,4) tiene un polinomio generadorgramo(incógnita)=incógnita3+incógnita+1{\displaystyle g(x)=x^{3}+x+1}Este polinomio tiene un cero en el cuerpo de extensión de Galois .GRAMOF(8){\displaystyle GF(8)}en el elemento primitivoα{\displaystyle \alpha }y todas las palabras clave satisfacendo(α)=0{\displaystyle {\mathcal {C}}(\alpha )=0}Los códigos cíclicos también se pueden utilizar para corregir errores dobles en el campo.GRAMOF(2){\displaystyle GF(2)}. La longitud del bloque seránorte{\displaystyle n}igual a2metro1{\displaystyle 2^{m}-1}y elementos primitivosα{\displaystyle \alpha }yα3{\displaystyle \alpha ^{3}}como ceros en elGRAMOF(2metro){\displaystyle GF(2^{m})}porque aquí estamos considerando el caso de dos errores, por lo que cada uno representará un error.

La palabra recibida es un polinomio de gradonorte1{\displaystyle n-1}dado como v(incógnita)=a(incógnita)gramo(incógnita)+mi(incógnita){\displaystyle v(x)=a(x)g(x)+e(x)}

dóndemi(incógnita){\displaystyle e(x)}puede tener como máximo dos coeficientes distintos de cero correspondientes a 2 errores.

Definimos el polinomio del síndrome ,S(incógnita){\displaystyle S(x)}como el resto del polinomiov(incógnita){\displaystyle v(x)}cuando se divide por el polinomio generadorgramo(incógnita){\displaystyle g(x)}es decir

S(incógnita)v(incógnita)(a(incógnita)gramo(incógnita)+mi(incógnita))mi(incógnita)modgramo(incógnita){\displaystyle S(x)\equiv v(x)\equiv (a(x)g(x)+e(x))\equiv e(x)\mod g(x)}como(a(incógnita)gramo(incógnita))0modgramo(incógnita){\displaystyle (a(x)g(x))\equiv 0\mod g(x)}.

Para corregir dos errores

Dejemos los elementos del campoincógnita1{\displaystyle X_{1}}yincógnita2{\displaystyle X_{2}}sean los dos números de ubicación del error. Si solo ocurre un error entoncesincógnita2{\displaystyle X_{2}}es igual a cero y si no ocurre ninguno, ambos son cero.

DejarS1=v(α){\displaystyle S_{1}={v}(\alpha)}yS3=v(α3){\displaystyle S_{3}={v}(\alpha ^{3})}.

Estos elementos de campo se denominan "síndromes". Ahora bien, porquegramo(incógnita){\displaystyle g(x)}es cero en los elementos primitivosα{\displaystyle \alpha }yα3{\displaystyle \alpha ^{3}}, para que podamos escribirS1=mi(α){\displaystyle S_{1}=e(\alpha )}yS3=mi(α3){\displaystyle S_{3}=e(\alpha ^{3})}. Si, por ejemplo, ocurren dos errores, entonces

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

Y estos dos pueden considerarse como dos pares de ecuaciones enGRAMOF(2metro){\displaystyle GF(2^{m})}con dos incógnitas y por lo tanto podemos escribir

S1=incógnita1+incógnita2{\displaystyle S_{1}=X_{1}+X_{2}}y S3=(incógnita1)3+(incógnita2)3{\displaystyle S_{3}=(X_{1})^{3}+(X_{2})^{3}}.

Por lo tanto, si se pueden resolver los dos pares de ecuaciones no lineales, se pueden utilizar códigos cíclicos para corregir dos errores.

Código de Hamming

El código Hamming(7,4) puede escribirse como un código cíclico sobre GF(2) con generador1+incógnita+incógnita3{\displaystyle 1+x+x^{3}}De hecho, cualquier código de Hamming binario de la forma Ham(r, 2) es equivalente a un código cíclico, [ 5 ] y cualquier código de Hamming de la forma Ham(r,q) con r y q-1 primos relativos también es equivalente a un código cíclico. [ 6 ] Dado un código de Hamming de la forma Ham(r,2) conr3{\displaystyle r\geq 3}, el conjunto de palabras clave pares forma un ciclo[2r1,2rr2,4]{\displaystyle [2^{r}-1,2^{r}-r-2,4]}-código. [ 7 ]

Código de Hamming para corregir errores individuales

Un código cuya distancia mínima es al menos 3, tiene una matriz de verificación cuyas columnas son todas distintas y no nulas. Si una matriz de verificación para un código binario tienemetro{\displaystyle m}filas, luego cada columna es unametro{\displaystyle m}Número binario de bits . Hay2metro1{\displaystyle 2^{m}-1}posibles columnas. Por lo tanto, si una matriz de verificación de un código binario condmetroinorte{\displaystyle d_{min}}al menos 3 tienemetro{\displaystyle m}filas, entonces solo puede tener2metro1{\displaystyle 2^{m}-1}columnas, no más que eso. Esto define una(2metro1,2metro1metro){\displaystyle (2^{m}-1,2^{m}-1-m)}código, llamado código de Hamming.

Es fácil definir códigos de Hamming para alfabetos grandes de tamañoq{\displaystyle q}Necesitamos definir unoH{\displaystyle H}matriz con columnas linealmente independientes. Para cualquier palabra de tamañoq{\displaystyle q}Habrá columnas que sean múltiplos entre sí. Por lo tanto, para obtener independencia lineal, todos los valores distintos de cero deben ser iguales.metro{\displaystyle m}Las tuplas cuyo elemento distinto de cero sea uno se elegirán como columnas. Por lo tanto, dos columnas nunca serán linealmente dependientes, ya que tres columnas podrían serlo con una distancia mínima de 3 en el código.

Entonces, hay(qmetro1)/(q1){\displaystyle (q^{m}-1)/(q-1)}columnas distintas de cero con uno como el elemento distinto de cero más alto. Por lo tanto, un código Hamming es un[(qmetro1)/(q1),(qmetro1)/(q1)metro]{\displaystyle [(q^{m}-1)/(q-1),(q^{m}-1)/(q-1)-m]}código.

Ahora, para códigos cíclicos, seaα{\displaystyle \alpha }ser elemento primitivo enGRAMOF(qmetro){\displaystyle GF(q^{m})}y dejarβ=αq1{\displaystyle \beta =\alpha ^{q-1}}. Entoncesβ(qmetro1)/(q1)=1{\displaystyle \beta ^{(q^{m}-1)/(q-1)}=1}y por lo tantoβ{\displaystyle \beta }es un cero del polinomioincógnita(qmetro1)/(q1)1{\displaystyle x^{(q^{m}-1)/(q-1)}-1}y es un polinomio generador para el código cíclico de longitud de bloquenorte=(qmetro1)/(q1){\displaystyle n=(q^{m}-1)/(q-1)}.

Si no fuera porq=2{\displaystyle q=2},α=β{\displaystyle \alpha =\beta }. Y la palabra recibida es un polinomio de gradonorte1{\displaystyle n-1} dado como

v(incógnita)=a(incógnita)gramo(incógnita)+mi(incógnita){\displaystyle v(x)=a(x)g(x)+e(x)}

dónde,mi(incógnita)=0{\displaystyle e(x)=0}oincógnitai{\displaystyle x^{i}}dóndei{\displaystyle i}representa las ubicaciones de los errores.

Pero también podemos usarαi{\displaystyle \alpha ^{i}}como elemento deGRAMOF(2metro){\displaystyle GF(2^{m})}para indexar la ubicación del error. Porquegramo(α)=0{\displaystyle g(\alpha )=0}, tenemosv(α)=αi{\displaystyle v(\alpha )=\alpha ^{i}}y todos los poderes deα{\displaystyle \alpha }de0{\displaystyle 0}a2metro2{\displaystyle 2^{m}-2}son distintos. Por lo tanto, podemos determinar fácilmente la ubicación del error.i{\displaystyle i}deαi{\displaystyle \alpha ^{i}}a menos quev(α)=0{\displaystyle v(\alpha )=0}lo que no representa ningún error. Por lo tanto, un código de Hamming es un único código corrector de errores sobreGRAMOF(2){\displaystyle GF(2)}connorte=2metro1{\displaystyle n=2^{m}-1}yk=nortemetro{\displaystyle k=nm}.

Para corregir errores de ráfaga

A partir del concepto de distancia de Hamming , un código con distancia mínima2t+1{\displaystyle 2t+1}puede corregir cualquiert{\displaystyle t}errores. Pero en muchos canales el patrón de error no es muy arbitrario, ocurre dentro de un segmento muy corto del mensaje. Este tipo de errores se denominan errores de ráfaga . Por lo tanto, para corregir estos errores obtendremos un código más eficiente de mayor tasa debido a las menores restricciones. Los códigos cíclicos se utilizan para corregir errores de ráfaga. De hecho, los códigos cíclicos también pueden corregir errores de ráfaga cíclicos junto con errores de ráfaga. Los errores de ráfaga cíclicos se definen como

Una explosión cíclica de longitudt{\displaystyle t}es un vector cuyos componentes no nulos se encuentran entret{\displaystyle t}(cíclicamente) componentes consecutivas, la primera y la última de las cuales son distintas de cero.

En forma polinómica, ráfaga cíclica de longitudt{\displaystyle t}puede describirse comomi(incógnita)=incógnitaib(incógnita)mod(incógnitanorte1){\displaystyle e(x)=x^{i}b(x)\mod (x^{n}-1)}conb(incógnita){\displaystyle b(x)}como un polinomio de gradot1{\displaystyle t-1}con coeficiente distinto de cerob0{\displaystyle b_{0}}. Aquíb(incógnita){\displaystyle b(x)}define el patrón yincógnitai{\displaystyle x^{i}}define el punto de inicio del error. La longitud del patrón viene dada por grados.b(incógnita)+1{\displaystyle b(x)+1}. El polinomio del síndrome es único para cada patrón y viene dado por

s(incógnita)=mi(incógnita)modgramo(incógnita){\displaystyle s(x)=e(x)\mod g(x)}

Un código de bloque lineal que corrige todos los errores de ráfaga de longitudt{\displaystyle t}o menos debe tener al menos2t{\displaystyle 2t}símbolos de verificación. Prueba: Porque cualquier código lineal que pueda corregir el patrón de ráfaga de longitudt{\displaystyle t}o menos no puede tener una ráfaga de longitud2t{\displaystyle 2t}o menos como palabra clave porque si lo hiciera entonces una ráfaga de longitudt{\displaystyle t}podría cambiar la palabra clave a un patrón de ráfaga de longitudt{\displaystyle t}, que también podría obtenerse haciendo un error de ráfaga de longitudt{\displaystyle t}en todo cero palabra clave. Ahora, cualesquiera dos vectores que no sean cero en el primero2t{\displaystyle 2t}Los componentes deben ser de diferentes conjuntos co-sustitutos de una matriz para evitar que su diferencia sea una palabra clave de ráfagas de longitud2t{\displaystyle 2t}Por lo tanto, el número de tales conjuntos colaterales es igual al número de tales vectores que sonq2t{\displaystyle q^{2t}}Por lo tanto, al menosq2t{\displaystyle q^{2t}}conjuntos conjuntos y por lo tanto al menos2t{\displaystyle 2t}símbolo de verificación.

Esta propiedad también se conoce como límite de Rieger y es similar al límite de Singleton para la corrección de errores aleatorios.

Códigos de incendios como límites cíclicos

En 1959, Philip Fire [ 8 ] presentó una construcción de códigos cíclicos generados por el producto de un binomio y un polinomio primitivo. El binomio tiene la formaincógnitado+1{\displaystyle x^{c}+1}para algún entero impar positivodo{\displaystyle c}. [ 9 ] El código de fuego es un código de corrección de errores de ráfaga cíclica sobreGRAMOF(q){\displaystyle GF(q)}con el polinomio generador

gramo(incógnita)=(incógnita2t11)pag(incógnita){\displaystyle g(x)=(x^{2t-1}-1)p(x)}

dóndepag(incógnita){\displaystyle p(x)}es un polinomio primo con gradometro{\displaystyle m}no menor quet{\displaystyle t}ypag(incógnita){\displaystyle p(x)}no divideincógnita2t11{\displaystyle x^{2t-1}-1}La longitud del bloque del código de incendio es el entero más pequeño.norte{\displaystyle n}de tal manera quegramo(incógnita){\displaystyle g(x)}divide incógnitanorte1{\displaystyle x^{n}-1}.

Un código de incendios puede corregir todos los errores de ráfaga de longitud t o menos si no hay dos ráfagasb(incógnita){\displaystyle b(x)}yincógnitajb(incógnita){\displaystyle x^{j}b'(x)}aparecen en el mismo coconjunto. Esto se puede probar por contradicción. Supongamos que hay dos ráfagas distintas no nulas.b(incógnita){\displaystyle b(x)}yincógnitajb(incógnita){\displaystyle x^{j}b'(x)}de longitudt{\displaystyle t}o menos y están en el mismo coconjunto del código. Por lo tanto, su diferencia es una palabra clave. Como la diferencia es un múltiplo degramo(incógnita){\displaystyle g(x)}También es un múltiplo deincógnita2t11{\displaystyle x^{2t-1}-1}. Por lo tanto,

b(incógnita)=incógnitajb(incógnita)mod(incógnita2t11){\displaystyle b(x)=x^{j}b'(x)\mod (x^{2t-1}-1)}.

Esto demuestra quej{\displaystyle j}es un múltiplo de2t1{\displaystyle 2t-1}, Entonces

b(incógnita)=incógnital(2t1)b(incógnita){\displaystyle b(x)=x^{l(2t-1)}b'(x)}

para algunosl{\displaystyle l}Ahora, comol(2t1){\displaystyle l(2t-1)}es menor quet{\displaystyle t}yl{\displaystyle l}es menor queqmetro1{\displaystyle q^{m}-1}entonces(incógnital(2t1)1)b(incógnita){\displaystyle (x^{l(2t-1)}-1)b(x)}es una palabra clave. Por lo tanto,

(incógnital(2t1)1)b(incógnita)=a(incógnita)(incógnita2t11)pag(incógnita){\displaystyle (x^{l(2t-1)}-1)b(x)=a(x)(x^{2t-1}-1)p(x)}.

Desdeb(incógnita){\displaystyle b(x)}El grado es menor que el grado depag(incógnita){\displaystyle p(x)},pag(incógnita){\displaystyle p(x)}no puede dividirb(incógnita){\displaystyle b(x)}. Sil{\displaystyle l}no es cero, entoncespag(incógnita){\displaystyle p(x)}tampoco puede dividirincógnital(2t1)1{\displaystyle x^{l(2t-1)}-1}comol{\displaystyle l}es menor queqmetro1{\displaystyle q^{m}-1}y por definición demetro{\displaystyle m},pag(incógnita){\displaystyle p(x)}divideincógnital(2t1)1{\displaystyle x^{l(2t-1)}-1}para nol{\displaystyle l}más pequeño queqmetro1{\displaystyle q^{m}-1}. Por lo tantol{\displaystyle l}yj{\displaystyle j}igual a cero. Eso significa que ambas ráfagas son iguales, contrariamente a lo que se suponía.

Los códigos de incendio son los mejores códigos correctores de ráfaga única con alta tasa y están construidos analíticamente. Son de muy alta tasa y cuando metro{\displaystyle m}yt{\displaystyle t}son iguales, la redundancia es mínima y es igual a3t1{\displaystyle 3t-1}. Mediante el uso de múltiples códigos de incendio, también se pueden corregir errores de ráfaga más prolongados.

Para la detección de errores se utilizan ampliamente códigos cíclicos y se denominant1{\displaystyle t-1}códigos de redundancia cíclica .

Sobre la transformada de Fourier

Las aplicaciones de la transformada de Fourier son muy comunes en el procesamiento de señales . Pero sus aplicaciones no se limitan solo a los campos complejos; las transformadas de Fourier también existen en el campo de Galois.GRAMOF(q){\displaystyle GF(q)}Los códigos cíclicos que utilizan la transformada de Fourier se pueden describir en un contexto más cercano al procesamiento de señales.

Transformada de Fourier sobre campos finitos

Transformada de Fourier sobre campos finitos

La transformada discreta de Fourier de un vectorv=v0,v1,....,vnorte1{\displaystyle v=v_{0},v_{1},....,v_{n-1}} está dado por un vectorV=V0,V1,.....,Vnorte1{\displaystyle V=V_{0},V_{1},.....,V_{n-1}}dónde,

Vk{\displaystyle V_{k}}=Σi=0norte1mij2πnorte1ikvi{\displaystyle \Sigma _{i=0}^{n-1}e^{-j2\pi n^{-1}ik}v_{i}}dónde,

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

donde exp(j2π/norte{\displaystyle -j2\pi /n}) es unnorte{\displaystyle n}raíz enésima de la unidad . De manera similar en el campo finito.norte{\displaystyle n}La raíz enésima de la unidad es el elementoω{\displaystyle \omega }del ordennorte{\displaystyle n}. Por lo tanto

Siv=(v0,v1,....,vnorte1){\displaystyle v=(v_{0},v_{1},....,v_{n-1})}es un vector sobreGRAMOF(q){\displaystyle GF(q)}, yω{\displaystyle \omega }ser un elemento deGRAMOF(q){\displaystyle GF(q)}del ordennorte{\displaystyle n}, luego la transformada de Fourier del vectorv{\displaystyle v}es el vectorV=(V0,V1,.....,Vnorte1){\displaystyle V=(V_{0},V_{1},.....,V_{n-1})}y los componentes vienen dados por

Vj{\displaystyle V_{j}}=Σi=0norte1ωijvi{\displaystyle \Sigma _{i=0}^{n-1}\omega ^{ij}v_{i}}dónde,

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

Aquíi{\displaystyle i}es índice de tiempo ,j{\displaystyle j}es frecuencia yV{\displaystyle V}es el espectro . Una diferencia importante entre la transformada de Fourier en campo complejo y el campo de Galois es que el campo complejoω{\displaystyle \omega }existe para cada valor denorte{\displaystyle n}mientras estaba en el campo de Galoisω{\displaystyle \omega }existe solo sinorte{\displaystyle n}divideq1{\displaystyle q-1}En el caso de campos de extensión, habrá una transformada de Fourier en el campo de extensión.GRAMOF(qmetro){\displaystyle GF(q^{m})} sinorte{\displaystyle n}divideqmetro1{\displaystyle q^{m}-1}para algunosmetro{\displaystyle m}. En el campo de Galois, vector del dominio del tiempov{\displaystyle v}está sobre el campoGRAMOF(q){\displaystyle GF(q)}pero el espectroV{\displaystyle V}puede estar sobre el campo de extensiónGRAMOF(qmetro){\displaystyle GF(q^{m})}.

Descripción espectral

Cualquier palabra clave de código cíclico de longitud de bloquenorte{\displaystyle n}puede representarse mediante un polinomiodo(incógnita){\displaystyle c(x)}de grado como máximonorte1{\displaystyle n-1}Su codificador se puede escribir comodo(incógnita)=a(incógnita)gramo(incógnita){\displaystyle c(x)=a(x)g(x)}Por lo tanto, en el dominio de la frecuencia, el codificador se puede escribir comodoj=AjGRAMOj{\displaystyle C_{j}=A_{j}G_{j}}. Aquí espectro de palabras clavedoj{\displaystyle C_{j}}tiene un valor enGRAMOF(qmetro){\displaystyle GF(q^{m})}pero todos los componentes en el dominio del tiempo son deGRAMOF(q){\displaystyle GF(q)}. A medida que el espectro de datosAj{\displaystyle A_{j}}es arbitrario, el rol deGRAMOj{\displaystyle G_{j}}es especificar aquellosj{\displaystyle j}dóndedoj{\displaystyle C_{j}}será cero.

Por lo tanto, los códigos cíclicos también pueden definirse como

Dado un conjunto de índices espectrales,A=(j1,....,jnortek){\displaystyle A=(j_{1},....,j_{n-k})}, cuyos elementos se denominan frecuencias de verificación, el código cíclicodo{\displaystyle C}es el conjunto de palabras sobreGRAMOF(q){\displaystyle GF(q)}cuyo espectro es cero en los componentes indexados porj1,...,jnortek{\displaystyle j_{1},...,j_{n-k}}Cualquier espectro de este tipodo{\displaystyle C}tendrá componentes de la formaAjGRAMOj{\displaystyle A_{j}G_{j}}.

Por lo tanto, los códigos cíclicos son vectores en el campoGRAMOF(q){\displaystyle GF(q)}y el espectro dado por su transformada inversa de Fourier está sobre el campoGRAMOF(qmetro){\displaystyle GF(q^{m})}y están restringidos a ser cero en ciertos componentes. Pero cada espectro en el campoGRAMOF(qmetro){\displaystyle GF(q^{m})}y cero en ciertos componentes puede no tener transformaciones inversas con componentes en el campoGRAMOF(q){\displaystyle GF(q)}Dicho espectro no puede utilizarse como códigos cíclicos.

A continuación se presentan algunos límites del espectro de códigos cíclicos.

BCH unido

Sinorte{\displaystyle n}ser un factor de(qmetro1){\displaystyle (q^{m}-1)}para algunosmetro{\displaystyle m}. El único vector enGRAMOF(q)norte{\displaystyle GF(q)^{n}}de pesod1{\displaystyle d-1}o menos que tengad1{\displaystyle d-1}Los componentes consecutivos de su espectro iguales a cero forman un vector de ceros.

Hartmann-Tzeng se alinea

Sinorte{\displaystyle n}ser un factor de(qmetro1){\displaystyle (q^{m}-1)}para algunosmetro{\displaystyle m}, yb{\displaystyle b}un número entero que es coprimo connorte{\displaystyle n}. El único vectorv{\displaystyle v}enGRAMOF(q)norte{\displaystyle GF(q)^{n}}de pesod1{\displaystyle d-1}o menos cuyos componentes espectralesVj{\displaystyle V_{j}}igual a cero paraj=1+2b(modnorte){\displaystyle j=\ell _{1}+\ell _{2}b(\mod n)}, dónde1=0,....,ds1{\displaystyle \ell _{1}=0,....,d-s-1}y2=0,....,s1{\displaystyle \ell _{2}=0,....,s-1}, es el vector de ceros.

Roos se dirige

Sinorte{\displaystyle n}ser un factor deqmetro1{\displaystyle q^{m}-1}para algunosmetro{\displaystyle m}yGRAMOdoD(norte,b)=1{\displaystyle GCD(n,b)=1}. El único vector en GRAMOF(q)norte{\displaystyle GF(q)^{n}}de pesod1{\displaystyle d-1}o menos cuyos componentes espectralesVj{\displaystyle V_{j}}igual a cero paraj=l1+l2b(modnorte){\displaystyle j=l_{1}+l_{2}b(\mod n)}, dóndel1=0,...,ds2{\displaystyle l_{1}=0,...,d-s-2}yl2{\displaystyle l_{2}}toma al menoss+1{\displaystyle s+1}valores en el rango0,....,d2{\displaystyle 0,....,d-2}, es el vector de ceros.

Códigos de residuos cuadráticos

Cuando el primol{\displaystyle l}es un residuo cuadrático módulo el primopag{\displaystyle p}existe un código de residuo cuadrático que es un código cíclico de longitudpag{\displaystyle p}, dimensión(pag+1)/2{\displaystyle (p+1)/2}y peso mínimo al menospag{\displaystyle {\sqrt {p}}}encimaGRAMOF(l){\displaystyle GF(l)}.

Generalizaciones

Códigos constantes

Un código constacíclico es un código lineal con la propiedad de que para alguna constanteλ{\displaystyle \lambda }si(do1,do2,,donorte){\displaystyle (c_{1},c_{2},\dots ,c_{n})}es una palabra clave, entonces también lo es(λdonorte,do1,,donorte1){\displaystyle (\lambda c_{n},c_{1},\dots ,c_{n-1})}. Un código negacíclico es un código constacíclico conλ=1{\displaystyle \lambda =-1}. [ 10 ]

Código cuasicíclico

Un código cuasicíclico (código QC) tiene la propiedad de que para algúns{\displaystyle s}divisornorte{\displaystyle n}, cualquier cambio cíclico de una palabra clave pors{\displaystyle s}lugares es de nuevo una palabra clave. Es decir, para alguna constantes{\displaystyle s}, si(do0,do1,,donorte1){\displaystyle (c_{0},c_{1},\dots ,c_{n-1})}es una palabra clave, entonces también lo es(dos,do1s,,donortes1){\displaystyle (c_{-s},c_{1-s},\dots ,c_{n-s-1})}donde todos los subíndices se reducen modnorte{\displaystyle n}. [ 11 ] Dicho código se conoce como uns{\displaystyle s}-Código QC. Un código circulante doble es un código cuasicíclico de longitud par cons=2{\displaystyle s=2}. [ 11 ]

Códigos cíclicos abreviados

Un(norte,k){\displaystyle (n,k)}El código lineal se denomina código cíclico abreviado si se puede obtener eliminandob{\displaystyle b}puestos de un(norte+b,k+b){\displaystyle (n+b,k+b)}Código cíclico. Los códigos de esta forma generalmente no son cíclicos. [ 12 ]

En los códigos abreviados, se eliminan símbolos de información para obtener una longitud de bloque deseada menor que la longitud de bloque original. Al eliminar el primerob{\displaystyle b}El uso de símbolos es un enfoque común; en principio, cualquier conjunto de símbolos de información puede eliminarse. [ 12 ] Cualquier código cíclico puede convertirse en un código cuasicíclico eliminando cadab{\displaystyle b}-ésimo símbolo, dondeb{\displaystyle b}es un factor denorte{\displaystyle n}. Si los símbolos omitidos no son símbolos de control, este código cíclico también es un código cíclico abreviado.

Otras generalizaciones

Los códigos cuasi-retorcidos (códigos QT) combinan las propiedades de los códigos constacíclicos y cuasicíclicos, con el desplazamiento producido pors{\displaystyle s}lugares y con un multiplicador deλ{\displaystyle \lambda }. Es decir, para algunas constantesλ{\displaystyle \lambda }ys{\displaystyle s}, si(do0,do1,,donorte1){\displaystyle (c_{0},c_{1},\dots ,c_{n-1})}es una palabra clave, entonces también lo es(λdos,do1s,,donortes1){\displaystyle (\lambda c_{-s},c_{1-s},\dots ,c_{n-s-1})}donde todos los subíndices se reducen modnorte{\displaystyle n}. [ 13 ] Los códigos multi-retorcidos son generalizaciones adicionales de los códigos QT, que unen múltiples códigos QT de extremo a extremo. [ 13 ] [ 14 ]

Véase también

Notas

  1. Van Lint 1998 , pág. 76 
  2. Ryan y Lin 2009 , págs. 108–109 
  3. Van Lint 1998 , pág. 80 
  4. Ryan y Lin 2009 , cap. 10
  5. Hill 1988 , págs. 159–160 
  6. Blahut 2003 , Teorema 5.5.1
  7. Hill 1988 , págs. 162–163 
  8. P. Fire, E, P. (1959). Una clase de códigos binarios de corrección de errores múltiples para errores no independientes. Sylvania Reconnaissance Systems Laboratory, Mountain View, CA, Informe RSL-E-2, 1959.
  9. Wei Zhou, Shu Lin, Khaled Abdel-Ghaffar. Corrección de errores aleatorios o en ráfaga basada en códigos Fire y BCH. ITA 2014: 1-5 2013.
  10. Van Lint 1998 , pág. 75 
  11. ^ MacWilliams y Sloane 1977 , pág. 506 
  12. 1 2 Ryan y Lin 2009 , pág. 110 
  13. 1 2 Aydin, Nuh; Halilović, Ajdin (2017). "Una generalización de códigos cuasi-retorcidos: códigos multi-retorcidos" . Campos finitos y sus aplicaciones . 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). "La estructura de los códigos cuasi-retorcidos de 1 generador y los nuevos códigos lineales". Diseños, códigos y criptografía . 24 (3): 313– 326. doi : 10.1023/A:1011283523000 . S2CID 17376783 . 

Referencias

Lecturas adicionales

  • Ranjan Bose , Teoría de la información, codificación y criptografía , ISBN 0-07-048297-7
  • Irving S. Reed y Xuemin Chen, Codificación de control de errores para redes de datos , Boston: Kluwer Academic Publishers, 1999, ISBN 0-7923-8528-4.
  • Scott A. Vanstone , Paul C. Van Oorschot , Introducción a los códigos correctores de errores con aplicaciones , ISBN 0-7923-9017-2
  • Apuntes de clase de John Gill (Stanford) Apuntes n.º 3, 8 de octubre, Documento n.º 9 Archivado el 23/10/2012 en Wayback Machine , EE 387.
  • Apuntes de clase de Jonathan Hall (MSU) Capítulo 8. Códigos cíclicos - págs.  100-123
  • David Terr. "Código cíclico" . MathWorld .

Este artículo incorpora material del código cíclico de PlanetMath , que está bajo la licencia Creative Commons Attribution/Share-Alike License .