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 .

Definición
Dejarser un código lineal sobre un cuerpo finito (también llamado cuerpo de Galois )de longitud del bloque.Se denomina código cíclico si, para cada palabra clavede, la palabraenobtenido 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 aDesplazamientos 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 lineales 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. sea un cociente de un anillo de polinomios sobre el cuerpo finito. Identificar los elementos del código cíclicocon polinomios ende tal manera que mapea al polinomio : por lo tanto, la multiplicación porcorresponde a un cambio cíclico. Entonceses un ideal eny por lo tanto principal , ya quees un anillo ideal principal . El ideal se genera mediante el único elemento mónico ende grado mínimo, el polinomio generador. [ 1 ] Esto debe ser un divisor de. De ello se deduce que todo código cíclico es un código polinomial . Si el polinomio generadortiene títuloluego el rango del códigoes.
Sies un código cíclico, el código dualTambién es un código cíclico. El polinomio generadorparaTambién se le llama polinomio de verificación de paridad o simplemente polinomio de verificación paraTambién se puede demostrar que, dóndedenota el polinomio recíproco de. [ 2 ]
El idempotente dees una palabra clavede tal manera que(eso es,es un elemento idempotente de) yes una identidad para el código, es decirpara cada palabra clave. Siyson 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 en, de modo que su polinomio de verificación sea un polinomio irreducible .
Ejemplos
Por ejemplo, siy, el conjunto de palabras clave contenidas en el código cíclico generado pores precisamente
Este código corresponde al ideal engenerado por.
El polinomioes 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 polinomio, correspondiente a la palabra clave.
Ejemplos triviales
Ejemplos triviales de códigos cíclicos son:el código mismo y el código que contiene solo la palabra clave cero. Estos corresponden a generadoresyrespectivamente: estos dos polinomios siempre deben ser factores de.
EncimaEl código de bits de paridad , que consta de todas las palabras de peso par, corresponde al generador.. Otra vez másesto siempre debe ser un factor de.
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 generadorEste polinomio tiene un cero en el cuerpo de extensión de Galois .en el elemento primitivoy todas las palabras clave satisfacenLos códigos cíclicos también se pueden utilizar para corregir errores dobles en el campo.. La longitud del bloque seráigual ay elementos primitivosycomo ceros en elporque aquí estamos considerando el caso de dos errores, por lo que cada uno representará un error.
La palabra recibida es un polinomio de gradodado como
dóndepuede tener como máximo dos coeficientes distintos de cero correspondientes a 2 errores.
Definimos el polinomio del síndrome ,como el resto del polinomiocuando se divide por el polinomio generadores decir
como.
Para corregir dos errores
Dejemos los elementos del campoysean los dos números de ubicación del error. Si solo ocurre un error entonceses igual a cero y si no ocurre ninguno, ambos son cero.
Dejary.
Estos elementos de campo se denominan "síndromes". Ahora bien, porquees cero en los elementos primitivosy, para que podamos escribiry. Si, por ejemplo, ocurren dos errores, entonces
y .
Y estos dos pueden considerarse como dos pares de ecuaciones encon dos incógnitas y por lo tanto podemos escribir
y .
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 generadorDe 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) con, el conjunto de palabras clave pares forma un ciclo-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 tienefilas, luego cada columna es unaNúmero binario de bits . Hayposibles columnas. Por lo tanto, si una matriz de verificación de un código binario conal menos 3 tienefilas, entonces solo puede tenercolumnas, no más que eso. Esto define unacódigo, llamado código de Hamming.
Es fácil definir códigos de Hamming para alfabetos grandes de tamañoNecesitamos definir unomatriz con columnas linealmente independientes. Para cualquier palabra de tamañoHabrá columnas que sean múltiplos entre sí. Por lo tanto, para obtener independencia lineal, todos los valores distintos de cero deben ser iguales.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, haycolumnas distintas de cero con uno como el elemento distinto de cero más alto. Por lo tanto, un código Hamming es uncódigo.
Ahora, para códigos cíclicos, seaser elemento primitivo eny dejar. Entoncesy por lo tantoes un cero del polinomioy es un polinomio generador para el código cíclico de longitud de bloque.
Si no fuera por,. Y la palabra recibida es un polinomio de grado dado como
dónde,odónderepresenta las ubicaciones de los errores.
Pero también podemos usarcomo elemento depara indexar la ubicación del error. Porque, tenemosy todos los poderes dedeason distintos. Por lo tanto, podemos determinar fácilmente la ubicación del error.dea menos quelo que no representa ningún error. Por lo tanto, un código de Hamming es un único código corrector de errores sobrecony.
Para corregir errores de ráfaga
A partir del concepto de distancia de Hamming , un código con distancia mínimapuede corregir cualquiererrores. 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 longitudes un vector cuyos componentes no nulos se encuentran entre(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 longitudpuede describirse comoconcomo un polinomio de gradocon coeficiente distinto de cero. Aquídefine el patrón ydefine el punto de inicio del error. La longitud del patrón viene dada por grados.. El polinomio del síndrome es único para cada patrón y viene dado por
Un código de bloque lineal que corrige todos los errores de ráfaga de longitudo menos debe tener al menossímbolos de verificación. Prueba: Porque cualquier código lineal que pueda corregir el patrón de ráfaga de longitudo menos no puede tener una ráfaga de longitudo menos como palabra clave porque si lo hiciera entonces una ráfaga de longitudpodría cambiar la palabra clave a un patrón de ráfaga de longitud, que también podría obtenerse haciendo un error de ráfaga de longituden todo cero palabra clave. Ahora, cualesquiera dos vectores que no sean cero en el primeroLos componentes deben ser de diferentes conjuntos co-sustitutos de una matriz para evitar que su diferencia sea una palabra clave de ráfagas de longitudPor lo tanto, el número de tales conjuntos colaterales es igual al número de tales vectores que sonPor lo tanto, al menosconjuntos conjuntos y por lo tanto al menossí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 formapara algún entero impar positivo. [ 9 ] El código de fuego es un código de corrección de errores de ráfaga cíclica sobrecon el polinomio generador
dóndees un polinomio primo con gradono menor queyno divideLa longitud del bloque del código de incendio es el entero más pequeño.de tal manera quedivide .
Un código de incendios puede corregir todos los errores de ráfaga de longitud t o menos si no hay dos ráfagasyaparecen en el mismo coconjunto. Esto se puede probar por contradicción. Supongamos que hay dos ráfagas distintas no nulas.yde longitudo 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 deTambién es un múltiplo de. Por lo tanto,
.
Esto demuestra quees un múltiplo de, Entonces
para algunosAhora, comoes menor queyes menor queentonceses una palabra clave. Por lo tanto,
.
DesdeEl grado es menor que el grado de,no puede dividir. Sino es cero, entoncestampoco puede dividircomoes menor quey por definición de,dividepara nomás pequeño que. Por lo tantoyigual 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 yson iguales, la redundancia es mínima y es igual a. 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 denominancó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.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 vector está dado por un vectordónde,
=dónde,
donde exp() es unraíz enésima de la unidad . De manera similar en el campo finito.La raíz enésima de la unidad es el elementodel orden. Por lo tanto
Sies un vector sobre, yser un elemento dedel orden, luego la transformada de Fourier del vectores el vectory los componentes vienen dados por
=dónde,
Aquíes índice de tiempo ,es frecuencia yes el espectro . Una diferencia importante entre la transformada de Fourier en campo complejo y el campo de Galois es que el campo complejoexiste para cada valor demientras estaba en el campo de Galoisexiste solo sidivideEn el caso de campos de extensión, habrá una transformada de Fourier en el campo de extensión. sidividepara algunos. En el campo de Galois, vector del dominio del tiempoestá sobre el campopero el espectropuede estar sobre el campo de extensión.
Descripción espectral
Cualquier palabra clave de código cíclico de longitud de bloquepuede representarse mediante un polinomiode grado como máximoSu codificador se puede escribir comoPor lo tanto, en el dominio de la frecuencia, el codificador se puede escribir como. Aquí espectro de palabras clavetiene un valor enpero todos los componentes en el dominio del tiempo son de. A medida que el espectro de datoses arbitrario, el rol dees especificar aquellosdóndeserá cero.
Por lo tanto, los códigos cíclicos también pueden definirse como
Dado un conjunto de índices espectrales,, cuyos elementos se denominan frecuencias de verificación, el código cíclicoes el conjunto de palabras sobrecuyo espectro es cero en los componentes indexados porCualquier espectro de este tipotendrá componentes de la forma.
Por lo tanto, los códigos cíclicos son vectores en el campoy el espectro dado por su transformada inversa de Fourier está sobre el campoy están restringidos a ser cero en ciertos componentes. Pero cada espectro en el campoy cero en ciertos componentes puede no tener transformaciones inversas con componentes en el campoDicho 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
Siser un factor depara algunos. El único vector ende pesoo menos que tengaLos componentes consecutivos de su espectro iguales a cero forman un vector de ceros.
Hartmann-Tzeng se alinea
Siser un factor depara algunos, yun número entero que es coprimo con. El único vectorende pesoo menos cuyos componentes espectralesigual a cero para, dóndey, es el vector de ceros.
Roos se dirige
Siser un factor depara algunosy. El único vector en de pesoo menos cuyos componentes espectralesigual a cero para, dóndeytoma al menosvalores en el rango, es el vector de ceros.
Códigos de residuos cuadráticos
Cuando el primoes un residuo cuadrático módulo el primoexiste un código de residuo cuadrático que es un código cíclico de longitud, dimensióny peso mínimo al menosencima.
Generalizaciones
Códigos constantes
Un código constacíclico es un código lineal con la propiedad de que para alguna constantesies una palabra clave, entonces también lo es. Un código negacíclico es un código constacíclico con. [ 10 ]
Código cuasicíclico
Un código cuasicíclico (código QC) tiene la propiedad de que para algúndivisor, cualquier cambio cíclico de una palabra clave porlugares es de nuevo una palabra clave. Es decir, para alguna constante, sies una palabra clave, entonces también lo esdonde todos los subíndices se reducen mod. [ 11 ] Dicho código se conoce como un-Código QC. Un código circulante doble es un código cuasicíclico de longitud par con. [ 11 ]
Códigos cíclicos abreviados
UnEl código lineal se denomina código cíclico abreviado si se puede obtener eliminandopuestos de unCó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 primeroEl 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 cada-ésimo símbolo, dondees un factor de. 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 porlugares y con un multiplicador de. Es decir, para algunas constantesy, sies una palabra clave, entonces también lo esdonde todos los subíndices se reducen mod. [ 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
- ↑ Van Lint 1998 , pág. 76
- ↑ Ryan y Lin 2009 , págs. 108–109
- ↑ Van Lint 1998 , pág. 80
- ↑ Ryan y Lin 2009 , cap. 10
- ↑ Hill 1988 , págs. 159–160
- ↑ Blahut 2003 , Teorema 5.5.1
- ↑ Hill 1988 , págs. 162–163
- ↑ 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.
- ↑ 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.
- ↑ Van Lint 1998 , pág. 75
- ^ MacWilliams y Sloane 1977 , pág. 506
- 1 2 Ryan y Lin 2009 , pág. 110
- 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 .
- ↑ 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
- Blahut, Richard E. (2003), Códigos algebraicos para la transmisión de datos (2.ª ed.), Cambridge University Press , ISBN 0-521-55374-1
- Hill, Raymond (1988), Un primer curso de teoría de la codificación , Oxford University Press , ISBN 0-19-853803-0
- MacWilliams, FJ ; Sloane, NJA (1977), The Theory of Error-Correcting Codes , Nueva York: North-Holland Publishing, ISBN 0-444-85011-2
- Ryan, William E.; Lin, Shu (2009), Códigos de canal: Clásicos y modernos (1.ª ed.), Cambridge University Press, ISBN 978-0521848688
- Van Lint, JH (1998), Introducción a la teoría de la codificación , Textos de posgrado en matemáticas 86 (3.ª ed.), Springer Verlag , ISBN 3-540-64133-5
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
Enlaces externos
- 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 .
- Teoría de la codificación
- Campos finitos