stringtranslate.com

Algoritmo de Berlekamp-Welch

El algoritmo Berlekamp–Welch , también conocido como algoritmo Welch–Berlekamp , ​​debe su nombre a Elwyn R. Berlekamp y Lloyd R. Welch . Se trata de un algoritmo decodificador que corrige de forma eficiente los errores en los códigos Reed–Solomon para un código RS( n , k ), basado en la visión original de Reed Solomon, donde un mensaje se utiliza como coeficiente de un polinomio o se utiliza con interpolación de Lagrange para generar el polinomio de grado < k para las entradas y luego se aplica para crear una palabra de código codificada .

El objetivo del decodificador es recuperar el polinomio de codificación original , utilizando las entradas conocidas y la palabra de código recibida con posibles errores. También calcula un polinomio de error donde corresponde a los errores en la palabra de código recibida.

Las ecuaciones clave

Definiendo e = número de errores, el conjunto clave de n ecuaciones es

Donde E( a i ) = 0 para los casos e cuando b i ≠ F( a i ), y E( a i ) ≠ 0 para los n - e casos sin error donde b i = F( a i ) . Estas ecuaciones no se pueden resolver directamente, pero definiendo Q() como el producto de E() y F():

y añadiendo la restricción de que el coeficiente más significativo de E(a i ) = e e = 1, el resultado conducirá a un conjunto de ecuaciones que pueden resolverse con álgebra lineal.

donde q = n - e - 1. Como e está restringido a ser 1, las ecuaciones se convierten en:

resultando en un conjunto de ecuaciones que pueden resolverse usando álgebra lineal, con complejidad temporal .

El algoritmo comienza suponiendo que el número máximo de errores es e = ⌊( n - k )/2⌋. Si las ecuaciones no se pueden resolver (debido a la redundancia), e se reduce en 1 y el proceso se repite hasta que las ecuaciones se puedan resolver o e se reduzca a 0, lo que indica que no hay errores. Si Q()/E() tiene un resto = 0, entonces F() = Q()/E() y los valores de las palabras de código F( ​​a i ) se calculan para las ubicaciones donde E( a i ) = 0 para recuperar la palabra de código original. Si el resto ≠ 0, entonces se ha detectado un error incorregible.

Ejemplo

Consideremos RS(7,3) ( n = 7, k = 3) definido en GF (7) con α = 3 y valores de entrada: a i = i-1 : {0,1,2,3,4,5,6}. El mensaje que se va a codificar sistemáticamente es {1,6,3}. Utilizando la interpolación de Lagrange, F(a i ) = 3 x 2 + 2 x + 1, y aplicando F(a i ) para a 4 = 3 a a 7 = 6, se obtiene la palabra de código {1,6,3,6,1,2,2}. Supongamos que se producen errores en c 2 y c 5, lo que da como resultado la palabra de código recibida {1,5,3,6,3,2,2}. Empecemos con e = 2 y resolvamos las ecuaciones lineales:



Comenzando desde la parte inferior de la matriz derecha y la restricción e 2 = 1:

con resto = 0.

E( a i ) = 0 en a 2 = 1 y a 5 = 4 Calcule F( a 2 = 1) = 6 y F( a 5 = 4) = 1 para producir la palabra de código corregida {1,6,3,6,1,2,2}.

Véase también

Enlaces externos