Código cíclico

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

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

Si 00010111 es una palabra clave válida, la aplicación de un cambio circular derecho da la cadena 10001011. Si el código es cíclico, entonces 10001011 es de nuevo una palabra clave válida. En general, la aplicación de un cambio circular derecho mueve el bit menos significativo (LSB) a la posición más izquierda, de modo que se convierte en el bit más significativo (MSB); las otras posiciones se desplazan por 1 a la derecha.

Definición

Vamos. ser un código lineal sobre un campo finito (también llamado Campo Galois) longitud de bloque . se llama Código cíclico si, por cada palabra clave desde , la palabra dentro obtenido por un cambio cíclico derecho de los componentes es otra vez una palabra clave. Porque un cambio cíclico derecho es igual a Cambios cíclicos izquierdos, un código cíclico también se puede definir a través de turnos cíclicos izquierdos. Por lo tanto, el código lineal es cíclico precisamente cuando es invariante bajo todos los cambios cíclicos.

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

Estructura algebraica

Los códigos cíclicos pueden estar vinculados a ideales en ciertos anillos. Vamos. ser un anillo polinomio sobre el campo finito . Identificar los elementos del código cíclico con polinomios en tales que mapas al polinomio : por tanto multiplicación corresponde a un cambio cíclico. Entonces... es un ideal en , y por lo tanto principal, desde es un anillo ideal principal. El ideal es generado por el elemento monico único en de grado mínimo, generador polinomio . Esto debe ser un divisor de . Sigue que cada código cíclico es un código polinomio. Si el generador polinomio grado entonces el rango del código es .

El idempotente de es una palabra clave tales que (es decir, es un elemento idempotente ) y es una identidad para el código, es decir para cada palabra clave . Si y son coprime tal palabra siempre existe y es única; es un generador del código.

An 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 , por lo que su control polinomio es un polinomio irreducible.

Ejemplos

Por ejemplo, si y , el conjunto de palabras clave contenidas en código cíclico generado por Precisamente

.

Corresponde al ideal en generados por .

El polinomio es irreducible en el anillo polinomio, 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 en sí mismo y el código que contiene sólo la palabra clave cero. Estos corresponden a generadores y respectivamente: estos dos polinomios deben ser siempre factores de .

Cambio el código de bit de paridad, que consiste en todas las palabras de peso, corresponde al generador . Otra vez esto debe ser siempre un factor .

Códigos cuasi-cíclicos y códigos acortados

Antes de profundizar en los detalles de los códigos cíclicos, analizaremos primero los códigos cuasicíclicos y abreviados, que están estrechamente relacionados con los códigos cíclicos y que pueden convertirse entre sí.

Definición

Códigos cuasi-cíclicos:

An código cuasi-cíclico es un código de bloque lineal tal que, para algunos que es coprime , el polinomio es un codeword polinomial siempre es un polinomio de la palabra clave.

Aquí, codeword polinomial es un elemento de un código lineal cuyas palabras clave son polinomios divisibles por un polinomio de longitud más corta llamado el generador polinomio. Cada polinomio de la palabra clave se puede expresar en la forma , donde es el polinomio generador. Cualquier palabra clave de un código cíclico se puede asociar con un polinomio de la palabra clave, es decir, . Un código cuasi-cíclico con iguales es un código cíclico.

Definición

Códigos abreviados:

An código lineal se llama adecuado código cíclico acortado si se puede obtener eliminando posiciones de un Código cíclico.

En códigos acortados se eliminan símbolos de información para obtener un bloqueo deseado más pequeño que el bloque de diseño. Los símbolos de información que faltan generalmente se imaginan estar al principio de la palabra clave y se consideran 0. Por lo tanto, es fijo, y luego es menor que eventualmente disminuye . No es necesario eliminar los símbolos iniciales. Dependiendo de la aplicación a veces posiciones consecutivas se consideran 0 y se eliminan.

Todos los símbolos que se eliminan no necesitan ser transmitidos y en el extremo receptor se pueden reinsertar. Para convertir Código cíclico a código acortado, conjunto símbolos a cero y soltarlos de cada palabra clave. Cualquier código cíclico se puede convertir en códigos cuasi-cíclicos bajando cada uno símbolo donde es un factor . Si los símbolos caídos no son símbolos de verificación, este código cíclico es también un código acortado.

Para corregir errores

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

El código Hamming (7,4) tiene un polinomio generador . Este polinomio tiene cero en el campo de extensión Galois en el elemento primitivo , y todas las palabras clave satisfacer . Los códigos cíclicos también se pueden utilizar para corregir errores dobles sobre el campo . El bloqueo será iguales y elementos primitivos y como ceros en el porque estamos considerando el caso de dos errores aquí, así que cada uno representará un error.

La palabra recibida es un polinomio de grado dados

Donde puede tener en la mayoría de dos coeficientes no cero correspondientes a 2 errores.

Definimos el síndrome polinomio, como el resto del polinomio cuando se divide por el polinomio generador i.e.

como .

Para corregir dos errores

Deje que los elementos de campo y sean los dos números de ubicación de errores. Si sólo se produce un error entonces es igual a cero y si ninguno ocurre ambos son cero.

Vamos. y .

Estos elementos de campo se llaman "syndromes". Ahora es cero en elementos primitivos y Así podemos escribir y . Si dicen que ocurren dos errores, entonces

y .

Y estos dos pueden considerarse como dos pares de ecuaciones en con dos desconocidos y por lo tanto podemos escribir

y .

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

Código de Hamming

El código Hamming(7,4) puede ser escrito como un código cíclico sobre GF(2) con generador . De hecho, cualquier código binario Hamming del formulario Ham(r, 2) es equivalente a un código cíclico, y cualquier código Hamming del formulario Ham(r,q) con r y q-1 relativamente primo es también equivalente a un código cíclico. Dado un código Hamming del formulario Ham(r,2) con , el conjunto de incluso codewords forma un ciclo - código.

Código de regulación para corregir errores individuales

Un código cuya distancia mínima es de al menos 3, tiene una matriz de verificación todas cuyas columnas son distintas y no cero. Si una matriz de verificación para un código binario tiene filas, entonces cada columna es una - número binario. Hay columnas posibles. Por lo tanto, si una matriz de verificación de un código binario con al menos 3 filas, entonces sólo puede tener columnas, no más que eso. Esto define un código, llamado código Hamming.

Es fácil definir códigos Hamming para grandes alfabetos de tamaño . Necesitamos definir uno matriz con columnas linealmente independientes. Para cualquier palabra de tamaño habrá columnas que son múltiples entre sí. Así que, para conseguir la independencia lineal todo no cero -tuples con uno como elemento superior más no cero serán elegidos como columnas. Entonces dos columnas nunca dependerán linealmente porque tres columnas podrían depender linealmente con la distancia mínima del código como 3.

Así que, hay columnas no cero con uno como el elemento más alto no cero. Por lo tanto, un código de Hamming es un código.

Ahora, para los códigos cíclicos, ser elemento primitivo en , y dejar . Entonces... y así es un cero del polinomio y es un polinomio generador para el código cíclico de la longitud del bloque .

Pero... , . Y la palabra recibida es un polinomio de grado dados

¿Dónde? o Donde representa las ubicaciones de errores.

Pero también podemos usar como elemento de a la ubicación de error índice. Porque... , tenemos y todos los poderes desde a son distintos. Por lo tanto, podemos determinar fácilmente la ubicación del error desde a) que no representa ningún error. Entonces, un código de Hamming es un código de corrección de errores en con y .

Para corregir errores de explosión

Desde el concepto Hamming distancia, un código con distancia mínima puede corregir cualquier errores. Pero en muchos canales el patrón de error no es muy arbitrario, se produce dentro de un segmento muy corto del mensaje. Tal tipo de errores se llaman errores de explosión. Por lo tanto, para corregir tales errores obtendremos un código más eficiente de tasa más alta debido a las menos limitaciones. Los códigos cíclicos se utilizan para corregir el error de explosión. De hecho, los códigos cíclicos también pueden corregir errores de ciclismo junto con errores de ráfaga. Los errores de la explosión cíclica se definen como

Una explosión cíclica de longitud es un vector cuyos componentes no cero están entre (cíclica) componentes consecutivos, el primero y el último de los cuales no son cero.

En forma polinomio ciclismo estallido de longitud puede describirse como con como polinomio de grado con coeficiente no cero . Aquí. define el patrón y define el punto de partida del error. La longitud del patrón se da por ejemplo. El síndrome polinomio es único para cada patrón y es dado por

Un código de bloqueo lineal que corrige todos los errores de la longitud de la explosión o menos debe tener al menos comprobar símbolos. Prueba: Porque cualquier código lineal que pueda corregir el patrón de la longitud de la explosión o menos no puede tener una explosión de longitud o menos como una palabra clave porque si lo hizo entonces una explosión de longitud podría cambiar la palabra clave para romper el patrón de longitud , que también podría obtenerse haciendo un error de explosión de longitud en la palabra clave cero. Ahora, los dos vectores que no son cero en el primero componentes deben ser de diferentes conjuntos de una matriz para evitar su diferencia siendo una palabra clave de ráfagas de longitud . Por lo tanto, el número de esos conjuntos es igual al número de esos vectores que son . Por lo menos co-sets and hence at least Verifique el símbolo.

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 fuego como límites cíclicos

En 1959, Philip El fuego presentó una construcción de códigos cíclicos generados por un producto de un binomio y un polinomio primitivo. El binomio tiene la forma para un entero positivo . Código de fuego es un código de error de explosión cíclica sobre con el polinomio generador

Donde es un polinomio primario con grado no menor que y no divide . Longitud del bloque del código de fuego es el entero más pequeño tales que divideciones .

Un código de fuego puede corregir todos los errores de la longitud t o menos si no hay dos estallidos y aparecen en el mismo conjunto. Esto puede probarse por contradicción. Supongamos que hay dos ráfagas distintas sin cero y de longitud o menos y están en el mismo conjunto del código. Entonces, su diferencia es una palabra clave. Como la diferencia es múltiples es también un múltiple de . Por lo tanto,

.

Esto demuestra que es un múltiple de Entonces

para algunos . Ahora, como es menos que y es menos que Así que... es una palabra clave. Por lo tanto,

.

Desde grado es inferior al grado , no pueden dividir . Si no es cero, entonces Tampoco puede dividirse como es menos que y por definición , divideciones por no más pequeño que . Por lo tanto y equivale a cero. Eso significa que ambas ráfagas son iguales, contrariamente a la suposición.

Los códigos de fuego son los mejores códigos de corrección de una sola explosión con alta velocidad y se construyen analíticamente. Son de muy alta velocidad y cuando y son iguales, la redundancia es menor y es igual . Mediante el uso de múltiples códigos de fuego más largos errores también se pueden corregir.

Para la detección de errores los códigos cíclicos son ampliamente utilizados y se llaman Códigos de redundancia cíclica.

En Fourier transform

Las aplicaciones de la transformación de Fourier son generalizadas en procesamiento de señales. Pero sus aplicaciones no se limitan a los campos complejos solamente; Fourier transforma también existen en el campo Galois . Los códigos cíclicos que utilizan la transformación Fourier se pueden describir en un entorno más cercano al procesamiento de la señal.

Fourier transforma sobre campos finitos

Transformada de Fourier sobre cuerpos finitos

La discreta transformación Fourier de vectores es dado por un vector ¿Dónde?

= ¿Dónde?

donde exp() es un la raíz de la unidad. Del mismo modo en el campo finito la raíz de la unidad es elemento de orden . Por lo tanto

Si es un vector sobre , y ser un elemento de de orden , entonces Fourier transformación del vector es el vector y los componentes son proporcionados por

= ¿Dónde?

Aquí. es tiempo índice, es frecuencia y es espectro espectro espectro espectro espectro espectro espectro espectro espectro. Una diferencia importante entre la transformación de Fourier en campo complejo y el campo de Galois es que campo complejo existe para cada valor mientras que en el campo Galois existe sólo si divideciones . En caso de campos de extensión, habrá una transformación Fourier en el campo de extensión si divideciones para algunos . In Galois field time domain vector está sobre el terreno pero el espectro puede estar sobre el campo de extensión .

Descripción espectral

Cualquier palabra clave del código cíclico de bloqueo puede ser representado por un polinomio de grado en la mayoría . Su encoder puede ser escrito como . Por lo tanto, en el encoder de dominio de frecuencia se puede escribir como . Aquí. espectro de palabras clave tiene un valor pero todos los componentes del dominio del tiempo son de . Como el espectro de datos es arbitraria, el papel de es especificar los Donde será cero.

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

Dado un conjunto de índices espectrales, , cuyos elementos se llaman frecuencias de verificación, el código cíclico es el conjunto de palabras sobre cuyo espectro es cero en los componentes indexados por . Cualquier espectro de ese tipo tendrá componentes de la forma .

Así que los códigos cíclicos son vectores en el campo y el espectro dado por su inversa transformación cuatroier está sobre el campo y se limitan a ser cero en ciertos componentes. Pero cada espectro en el campo y cero en ciertos componentes puede no tener transformaciones inversas con componentes en el campo . Tal espectro no se puede utilizar como códigos cíclicos.

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

BCH bound

Si ser un factor para algunos . El único vector en de peso o menos que tenga componentes consecutivos de su espectro igual a cero es todo-cero vector.

Hartmann-Tzeng bound

Si ser un factor para algunos , y un entero que es coprime . El único vector dentro de peso o menos cuyo espectral componentes igual cero para , donde y Es el vector cero.

Roos bound

Si ser un factor para algunos y . El único vector en de peso o menos cuyos componentes espectrales igual a cero para , donde y al menos valores en el rango , es el vector de todo cero.

Códigos de residuos cuadráticos

Cuando la primera es un modulo de residuos cuadráticos hay un código de residuos cuadráticos que es un código cíclico de longitud , dimensión y peso mínimo al menos sobre .

Generalizaciones

Un código constacíclico es un código lineal con la propiedad de que para alguna constante λ si (c1,c2,...,cn) es una palabra de código, entonces también lo es (λcn,c1,...,cn-1). Un código negacíclico es un código constacíclico con λ=-1. Un código cuasicíclico tiene la propiedad de que para alguna s, cualquier desplazamiento cíclico de una palabra de código en s lugares es nuevamente una palabra de código. Un código doble circulante es un código cuasicíclico de longitud par con s=2. Los códigos cuasi-trenzados y los códigos multi-trenzados son otras generalizaciones de los códigos constacíclicos.

Véase también

  • Código BCH
  • Código binario Golay
  • Control de redundancia cíclica
  • Eugene Prange
  • Código Reed-Muller
  • Ternary Golay code

Notas

  1. ^ Van Lint 1998, pág. 76
  2. ^ Van Lint 1998, pág. 80
  3. ^ Hill 1988, págs. 159 a 160
  4. ^ Blahut 2003, Theorem 5.5.1
  5. ^ Hill 1988, pp. 162–163
  6. ^ P. Fire, E, P. (1959). Una clase de códigos binarios corregidos por múltiples terrores para errores no independientes. Sylvania Reconnaissance Systems Laboratory, Mountain View, CA, Rept. RSL-E-2, 1959.
  7. ^ Wei Zhou, Shu Lin, Khaled Abdel-Ghaffar. Corrección de errores al azar o al azar basado en códigos Fire y BCH. ITA 2014: 1-5 2013.
  8. ^ Van Lint 1998, pág. 75
  9. ^ a b MacWilliams " Sloane 1977, pág. 506
  10. ^ Aydin, Nuh; Siap, Irfan; K. Ray-Chaudhuri, Dijon (2001). "La estructura de los códigos Quasi-Twisted 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.
  11. ^ Aydin, Nuh; Halilović, Ajdin (2017). "Una generalización de códigos cuasi-twisted: códigos multi-twisted". Finite Fields y sus aplicaciones. 45: 96-106. arXiv:1701.01044. doi:10.1016/j.ffa.2016.12.002. S2CID 7694655.

Referencias

  • Blahut, Richard E. (2003), Códigos algebraicos para la transmisión de datos (2a edición), Cambridge University Press, ISBN 0-521-55374-1
  • Hill, Raymond (1988), Un primer curso en la teoría de codificación, Oxford University Press, ISBN 0-19-853803-0
  • MacWilliams, F. J.; Sloane, N. J. A. (1977), Teoría de códigos de corrección de errores, Nueva York: North-Holland Publishing, ISBN 0-444-85011-2
  • Van Lint, J. H. (1998), Introducción a la codificación Teoría, Textos de Graduación en Matemáticas 86 (3a ed.), Springer Verlag, ISBN 3-540-64133-5

Más lectura

  • 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 códigos de corrección de errores con aplicaciones, ISBN 0-7923-9017-2
  • Notas de clase de John Gill (Stanford) – Notas #3, 8 de octubre, Ejercicio #9 Archivado 2012-10-23 en la máquina Wayback, EE 387.
  • Notas de clase de Jonathan Hall (MSU) – Capítulo 8. Códigos cíclicos - pp. 100 - 123
  • David Terr. "Código Civil". MathWorld.

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

Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save