Código Bowes-Chowdhury-Hockwingham

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 25 de febrero de 2021; las comprobaciones requieren 3 ediciones .

Códigos Bowes-Chowdhury-Hokvingham (códigos BCH)  : en la teoría de la codificación, se trata de una amplia clase de códigos cíclicos que se utilizan para proteger la información de errores (consulte Detección y corrección de errores ). Se diferencia por la posibilidad de construir un código con propiedades correctivas predeterminadas, a saber, la distancia mínima del código. Un caso especial de códigos BCH es el código Reed-Solomon .

Descripción formal

Un código BCH es un código cíclico que puede ser dado por un polinomio generador . Para encontrarlo en el caso de un código BCH, es necesario determinar de antemano la longitud del código (no puede ser arbitrario) y la distancia mínima requerida . Puede encontrar un polinomio generador de la siguiente manera.

Sea  un elemento primitivo del campo (es decir ), sea , un elemento del campo de orden , . Entonces, un polinomio normalizado de grado mínimo sobre un campo cuyas raíces son potencias sucesivas de un elemento para algún número entero (incluyendo 0 y 1) es un polinomio generador de un código BCH sobre un campo con longitud y distancia mínima .

Expliquemos por qué el código resultante tendrá exactamente esas características (longitud del código , distancia mínima ). De hecho, como lo muestra Sagalovich [1] , la longitud del código BCH es igual al orden de los elementos si , e igual al orden de los elementos si . Como no nos interesa el caso (tal código no puede corregir errores, solo detectarlos), la longitud del código será igual al orden del elemento , es decir, igual a . La distancia mínima puede ser mayor que cuando las raíces de las funciones mínimas [2] de los elementos son los elementos que expanden la sucesión, es decir, los elementos .

El número de símbolos de verificación es igual al grado , el número de símbolos de información , el valor se denomina distancia constructiva del código BCH. Si , entonces el código se llama primitivo , de lo contrario, no primitivo .

Al igual que para el código cíclico, el polinomio de código se puede obtener del polinomio de información de grado máximo , multiplicando y :

Edificio

Para encontrar el polinomio generador, es necesario realizar varios pasos [3] :

Ejemplos de código

Código binario primitivo (15, 7, 5)

Sea , la longitud de código requerida y la distancia mínima . Tome  — un elemento primitivo del campo , y  — cuatro potencias consecutivas del elemento . Pertenecen a dos clases ciclotómicas sobre el campo al que corresponden los polinomios irreducibles y . Entonces el polinomio

tiene elementos como raíces y es un polinomio generador del código BCH con parámetros .

Código hexadecimal (15, 11, 5) (código Reed-Solomon)

Sea , y  sea un elemento primitivo de . Después

Cada elemento del campo se puede asignar a 4 bits , por lo que una palabra de código equivale a 60 = 15 × 4 bits, por lo que un conjunto de 44 bits se asigna a un conjunto de 60 bits. Podemos decir que dicho código funciona con fragmentos de información.

Codificación

Para la codificación con códigos BCH, se utilizan los mismos métodos que para la codificación con códigos cíclicos.

Métodos de decodificación

Los códigos BCH son códigos cíclicos, por lo que se les aplican todos los métodos utilizados para decodificar códigos cíclicos. Sin embargo, existen algoritmos mucho mejores desarrollados específicamente para los códigos BCH [4] .

La idea principal en la decodificación de códigos BCH es utilizar los elementos del campo final para numerar las posiciones de la palabra clave (o, de manera equivalente, en el orden de los coeficientes del polinomio asociado). A continuación se muestra una enumeración de este tipo para el vector correspondiente al polinomio .

valores
localizadores de posición

Sea la palabra recibida asociada al polinomio , donde el polinomio de error se define como: , donde  es el número de errores en la palabra recibida. Los conjuntos y se denominan valores de error y localizadores de error, respectivamente, donde , y .

Los síndromes se definen como los valores del polinomio recibido en los ceros del polinomio de código generador:

donde _

Para encontrar el conjunto de localizadores de errores, introducimos el polinomio localizador de errores

cuyas raíces son iguales a los recíprocos de los localizadores de errores. Entonces es válida la siguiente relación entre los coeficientes del polinomio localizador de errores y los síndromes [5] :

Los siguientes métodos son conocidos para resolver este sistema de ecuaciones con respecto a los coeficientes del polinomio localizador de errores ( sistema clave de ecuaciones ).

Algoritmo de Berlekamp-Massey

Este algoritmo se ve mejor como un proceso iterativo de construcción de un registro mínimo de retroalimentación (desplazamiento) que genera una secuencia conocida de síndromes . Su objetivo real es construir un polinomio del menor grado que satisfaga la ecuación

La solución de esta ecuación es equivalente a la condición

El proceso iterativo de construcción de dicho polinomio es el Algoritmo de Berlekamp-Massey .

Algoritmo euclidiano

Este método se basa en el conocido algoritmo de Euclides para encontrar el máximo común divisor de dos números (mcd), solo que en este caso no estamos buscando el mcd de dos números, sino de dos polinomios. Denotemos el polinomio de valores de error como , donde el polinomio sindrómico es igual a . Del sistema de ecuaciones se sigue que . El problema esencialmente se reduce a determinar cuál satisface la última ecuación y al mismo tiempo el grado no es mayor . De hecho, tal solución dará el algoritmo de Euclides extendido aplicado a polinomios y , donde . Si en el enésimo paso el algoritmo euclidiano extendido produce una solución tal que , entonces , y . En este caso, el polinomio encontrado ya no participa en la decodificación (se busca solo como auxiliar). De esta manera, se encontrará el polinomio localizador de errores .

Solución directa (algoritmo Peterson-Gorenstein-Zierler, PGC)

Deje que el código BCH sobre el campo de longitud y con una distancia constructiva esté dado por un polinomio generador , que tiene entre sus elementos raíces  : un número entero (por ejemplo, 0 o 1). Entonces cada palabra clave tiene la propiedad de que . La palabra recibida se puede escribir como , donde  es el polinomio de error. Deje que los errores ocurran en las posiciones (  es el número máximo de errores corregibles), entonces , y  son las magnitudes de los errores.

Puedes componer el síndrome th de la palabra aceptada :

La tarea es encontrar el número de errores , sus posiciones y sus significados para los síndromes conocidos .

Supongamos para empezar que es exactamente igual a . Escribimos los síndromes en forma de un sistema de ecuaciones no lineales en forma explícita:

Denote por el localizador del -ésimo error, y por  — la magnitud del error, . En este caso, todos son diferentes, ya que el orden del elemento es , y por lo tanto, cuando se conoce , se puede definir como .

Compongamos un polinomio de localizadores de errores :

Las raíces de este polinomio son los elementos inversos a los localizadores de errores. Multiplica ambos lados de este polinomio por . La igualdad resultante será válida para :

Si sustituimos aquí , entonces obtenemos una igualdad que es válida para todos y para todos :

Por lo tanto, para cada , puedes escribir tu propia igualdad. Si se suman , entonces obtenemos una igualdad que es válida para cada uno :

Dado que (es decir, cambia dentro de los mismos límites que antes), el sistema de ecuaciones para síndromes se transforma en un sistema de ecuaciones lineales :

o, en forma matricial,

dónde

Si el número de errores es realmente igual a , entonces este sistema tiene solución y se pueden encontrar los valores de los coeficientes . Si el número es , entonces el determinante de la matriz será igual a . Esta es una señal de que el número de errores es menor . Por tanto, es necesario componer un sistema, suponiendo el número de errores igual a , calcular el determinante de la nueva matriz , etc. hasta establecer el verdadero número de errores.

Buscar Chen

Después de resolver el sistema clave de ecuaciones, se obtienen los coeficientes del polinomio localizador de errores. Sus raíces (los elementos inversos a los localizadores de errores) se pueden encontrar simplemente iterando sobre todos los elementos del campo . Para ellos, encuentre elementos que sean inversos a la multiplicación: estos son localizadores de errores . Este proceso es fácil de implementar en hardware.

Algoritmo de Forney

Usando los localizadores, puede encontrar las posiciones de error ( ), y los valores de error del sistema para síndromes, al aceptar . Decodificación completada.

Véase también

Notas

  1. Sagalovich, 2007 , pág. 175-176.
  2. Sagalovich, 2007 , pág. 176.
  3. Sagalovich, 2007 , pág. 168.
  4. ↑ El arte de la codificación con corrección de errores. Archivado el 1 de abril de 2013 en Wayback Machine , p. 91.
  5. Sagalovich, 2007 , pág. 200.

Literatura