Códigos Reed Solomon - norman-ipn/Errores GitHub Wiki

Códigos Reed-Solomon :

Este tipo de códigos emplea algo de todo lo visto hasta ahora para llevar a cabo la detección y corrección de errores.

Sus elementos forman parte de un campo finito donde rigen reglas como las vistas en el apartado 4. Parten de una raíz a , un polinomio y un campo finito de dimensión q=2m, osea GF(q)= GF(2m), en este caso codificamos los bits según los pesos ( a m-1 a m-2 ............a 1).

Veamos cómo se codifican y decodifican códigos Reed-Solomon con un ejemplo.

Supongamos un campo finito de 8 elementos, osea GF(23) luego los pesos serán ( a 2 a 1 ) una tripleta de este tipo se considera un símbolo para distinguirlo de un bit. Por tanto, en nuestro ejemplo un símbolo es de 3 bits, así que si tenemos los siguientes símbolos ( a 1 0 a 2 ) realmente tendríamos la siguiente secuencia de bits ( 010 001 000 100 ) por tanto 4 símbolos de nuestro ejemplo suponen 4x3=12 bits. Pues bien, los códigos Reed-Solomon detectan símbolos erróneos y corrigen símbolos, lo que significa que en nuestro caso, si somos capaces de corregir dos símbolos, seremos capaces de corregir 6 bits erróneos, pero no nos confundamos, no 6 bits cualesquiera, tendrían que pertenecer a dos símbolos ya que podría darse el caso de 6 bits erróneos pero cada uno en un símbolo lo que supondría corregir 6 símbolos. Para la secuencia de 4 símbolos anterior, dos símbolos erróneos podrían ser ( 001 001 000 010 ) donde el primer símbolo a pasado de a a 1 y el último de a 2 a a , se observa que han cambiado 4 bits pero en 2 símbolos, así que lo mejor para no confundirnos será saber que somos capaces de corregir símbolos y no bits.

En los códigos Reed-Solomon la distancia de código viene dada por la fórmula d=m+1=n-k+1 donde m es el grado de un polinomio generador g(x), k viene dada por el exponente de la base 2 en las dimensiones del campo de Galois, osea GF(2k). Así que si nos dicen que g(x) tiene grado m=4 y los elementos del código se toman de un campo finito GF(23) entonces k=3 y como m=n-k, obtenemos n=7, por tanto el código será (7,3). Que significa que empleamos 7 símbolos y 3 son para el mensaje que queremos transmitir o almacenar. Para obtener con cuantos bits codificamos cada símbolo empleamos otro polinomio y una raíz de él.