Los códigos Reed-Muller son códigos correctores de errores que se utilizan en aplicaciones de comunicaciones inalámbricas, particularmente en comunicaciones en el espacio profundo. [ 1 ] Además, el estándar 5G propuesto [ 2 ] se basa en los códigos polares estrechamente relacionados [ 3 ] para la corrección de errores en el canal de control. Debido a sus favorables propiedades teóricas y matemáticas, los códigos Reed-Muller también se han estudiado ampliamente en la informática teórica . Por ejemplo, se ha demostrado que alcanzan asintóticamente la capacidad de Shannon en canales simétricos sin memoria. [ 4 ] [ 5 ] [ 6 ] [ 7 ]
Los códigos de Reed-Muller generalizan los códigos de Reed-Solomon y el código de Walsh-Hadamard . Son códigos de bloques lineales que se pueden comprobar localmente , decodificar localmente y decodificar mediante listas . Estas propiedades los hacen particularmente útiles en el diseño de pruebas verificables probabilísticamente .
Los códigos Reed-Muller tradicionales son códigos binarios, lo que significa que los mensajes y las palabras clave son cadenas binarias. Cuando r y m son enteros con 0 ≤ r ≤ m , el código Reed-Muller con parámetros r y m se denota como RM( r , m ). Cuando se pide codificar un mensaje que consta de k bits, donde Si se cumplen las condiciones, el código RM( r , m ) produce una palabra clave que consta de 2 m bits.
Los códigos Reed-Muller reciben su nombre de David E. Muller , quien descubrió los códigos en 1954, [ 8 ] e Irving S. Reed , quien propuso el primer algoritmo de decodificación eficiente. [ 9 ]
Descripción mediante polinomios de bajo grado
Los códigos de Reed-Muller pueden describirse de varias maneras diferentes (pero en última instancia equivalentes). La descripción basada en polinomios de bajo grado es bastante elegante y particularmente adecuada para su aplicación como códigos localmente verificables y códigos localmente decodificables . [ 10 ]
Codificador
Un código de bloques puede tener una o más funciones de codificación.esos mensajes del mapaa palabras clave. El código Reed - Muller RM( r , m ) tiene longitud de mensajey longitud del bloqueUna forma de definir una codificación para este código se basa en la evaluación de polinomios multilineales con m variables y grado total como máximo r . Todo polinomio multilineal sobre el cuerpo finito con dos elementos se puede escribir de la siguiente manera: Elson las variables del polinomio y los valoresson los coeficientes del polinomio. Nótese que hay exactamentecoeficientes. Teniendo esto en cuenta, un mensaje de entrada consta de:valoresque se utilizan como estos coeficientes. De esta manera, cada mensajeda lugar a un polinomio únicoen m variables. Para construir la palabra clave, el codificador evalúa el polinomioen todos los puntosdonde el polinomio se toma con multiplicación y suma módulo 2. Es decir, la función de codificación se define mediante
El hecho de que la palabra clavebasta para reconstruir de forma únicaEsto se deduce de la interpolación de Lagrange , que establece que los coeficientes de un polinomio están determinados de forma única cuando se proporcionan suficientes puntos de evaluación. Dado queyse mantiene para todos los mensajes, la funciónes un mapa lineal . Por lo tanto, el código de Reed - Muller es un código lineal .
Ejemplo
Para el código RM( 2 , 4 ) , los parámetros son los siguientes:
Dejarsea la función de codificación que acabamos de definir. Para codificar la cadena x = 1 1010 010101 de longitud 11, el codificador primero construye el polinomioen 4 variables:Luego evalúa este polinomio en los 16 puntos de evaluación (0101 significa:
Como resultado, se cumple C(1 1010 010101) = 1101 1110 0001 0010.
Descifrador
Como ya se mencionó, la interpolación de Lagrange permite recuperar el mensaje de forma eficiente a partir de una palabra clave. Sin embargo, un decodificador debe funcionar incluso si la palabra clave se ha corrompido en algunas posiciones, es decir, cuando la palabra recibida difiere de cualquier palabra clave. En este caso, un procedimiento de decodificación local puede ser útil.
El algoritmo de Reed se basa en la siguiente propiedad: se parte de la palabra clave, que es una secuencia de puntos de evaluación de un polinomio desconocido.dede grado como máximoque deseas encontrar. La secuencia puede contener cualquier número de errores hastaincluido.
Si consideramos un monomiodel más alto gradoeny sumar todos los puntos de evaluación del polinomio donde todas las variables entienen los valores 0 o 1, y todas las demás variables tienen el valor 0, se obtiene el valor del coeficiente (0 o 1) deen(Haytales puntos). Esto se debe al hecho de que todos los divisores monomiales inferiores deaparece un número par de veces en la suma, y soloaparece una vez.
Para tener en cuenta la posibilidad de errores, también puede observar que puede fijar el valor de otras variables a cualquier valor. Entonces, en lugar de hacer la suma solo una vez para otras variables que no están encon valor 0, lo hacesveces para cada valor fijo de las demás variables. Si no hay error, todas esas sumas deberían ser iguales al valor del coeficiente buscado. El algoritmo consiste en tomar la mayoría de las respuestas como el valor buscado. Si la minoría es mayor que el número máximo de errores posibles, el paso de decodificación falla al saber que hay demasiados errores en el código de entrada.
Una vez calculado un coeficiente, si es 1, actualice el código para eliminar el monomio.a partir del código de entrada y continuar con el siguiente monomio, en orden inverso de su grado.
Ejemplo
Consideremos el ejemplo anterior y comencemos desde el código. ConPodemos corregir como máximo 1 error en el código. Consideremos el código de entrada como 1101 1110 0001 0110 (este es el código anterior con un error).
Conocemos el grado del polinomioes como máximo, comenzamos buscando un monomio de grado 2.
- comenzamos buscando puntos de evaluación conEn el código esto es: 1101 1110 0001 0110. La primera suma es 1 (número impar de 1).
- buscamos puntos de evaluación con. En el código esto es: 1101 1110 0001 0110. La segunda suma es 1.
- buscamos puntos de evaluación con. En el código esto es: 1101 1110 0001 0110. La tercera suma es 1.
- buscamos puntos de evaluación con. En el código esto es: 1101 1110 0001 0110 . La tercera suma es 0 (número par de 1).
Las cuatro sumas no coinciden (por lo que sabemos que hay un error), pero el informe de la minoría no es mayor que el número máximo de errores permitidos (1), por lo que tomamos la mayoría y el coeficiente dees 1.
Nosotros eliminamosdel código antes de continuar : código : 1101 1110 0001 0110, valoración dees 0001000100010001, el nuevo código es 1100 1111 0000 0111
- 11 00 11 11 0000 0111. La suma es 0
- 11 00 11 11 0000 0111. La suma es 0
- 1100 1111 00 00 01 11. La suma es 1
- 1100 1111 00 00 01 11 . La suma es 0
Se ha detectado un error, el coeficiente es 0, no se realizan cambios en el código actual.
- 11 00 1111 00 00 0111. La suma es 0
- 11 00 1111 00 00 0111. La suma es 0
- 1100 11 11 0000 01 11. La suma es 1
- 1100 11 11 0000 01 11 . La suma es 0
Se ha detectado un error, el coeficiente es 0, no se realizan cambios en el código actual.
- 1 1 0 0 1 1 1 1 0000 0111. La suma es 1
- 1 1 0 0 1 1 1 1 0000 0111. La suma es 1
- 1100 1111 0 0 0 0 0 1 1 1. La suma es 1
- 1100 1111 0 0 0 0 0 1 1 1 . La suma es 0
Se detectó un error, el coeficiente es 1, valoración dees 0000 0011 0000 0011, el código actual ahora es 1100 1100 0000 0100.
- 1 1 0 0 1100 0 0 0 0 0100. La suma es 1
- 1 1 0 0 1100 0 0 0 0 0100. La suma es 1
- 1100 1 1 0 0 0000 0 1 0 0. La suma es 1
- 1100 1 1 0 0 0000 0 1 0 0 . La suma es 0
Se detectó un error, el coeficiente es 1, valoración dees 0000 0000 0011 0011, el código actual ahora es 1100 1100 0011 0111.
- 1 100 1 100 0 011 0 111. La suma es 0
- 1 1 00 1 1 00 0 0 11 0 1 11. La suma es 1
- 11 0 0 11 0 0 00 1 1 01 1 1. La suma es 0
- 110 0 110 0 001 1 011 1 . La suma es 0
Se ha detectado un error, el coeficiente es 0, no se modifica el código actual. Ahora que conocemos todos los coeficientes de grado 2 del polinomio, podemos empezar con los mononios de grado 1. Observa que para cada grado siguiente, hay el doble de sumas, y cada suma es la mitad.
- 11 00 1100 0011 0111. La suma es 0
- 11 00 1100 0011 0111. La suma es 0
- 1100 11 00 0011 0111. La suma es 0
- 1100 11 00 0011 0111. La suma es 0
- 1100 1100 00 11 0111. La suma es 0
- 1100 1100 00 11 0111. La suma es 0
- 1100 1100 0011 01 11. La suma es 1
- 1100 1100 0011 01 11 . La suma es 0
Se ha detectado un error, el coeficiente es 0, no se realizan cambios en el código actual.
- 1 1 0 0 1100 0011 0111. La suma es 1
- 1 1 0 0 1100 0011 0111. La suma es 1
- 1100 1 1 0 0 0011 0111. La suma es 1
- 1100 1 1 0 0 0011 0111. La suma es 1
- 1100 1100 0 0 1 1 0111. La suma es 1
- 1100 1100 0 0 1 1 0111. La suma es 1
- 1100 1100 0011 0 1 1 1. La suma es 1
- 1100 1100 0011 0 1 1 1 . La suma es 0
Se detectó un error, el coeficiente es 1, valoración dees 0011 0011 0011 0011, el código actual ahora es 1111 1111 0000 0100.
Entonces encontraremos 0 para, 1 paray el código actual se convierte en 1111 1111 1111 1011.
Para el grado 0, tenemos 16 sumas de solo 1 bit. La minoría sigue siendo de tamaño 1, y encontramosy la palabra inicial correspondiente 1 1010 010101
Generalización a alfabetos más grandes mediante polinomios de bajo grado.
Utilizando polinomios de bajo grado sobre un campo finito.de tamaño, es posible extender la definición de códigos Reed - Muller a alfabetos de tamaño. Dejarysean enteros positivos, dondedebe considerarse más grande quePara codificar un mensajede ancho, el mensaje se interpreta nuevamente como unpolinomio multivariadode grado total como máximoy con coeficiente de. De hecho, tal polinomio tienecoeficientes. La codificación Reed-Muller dees la lista de todas las evaluaciones deen generalPor lo tanto, la longitud del bloque es.
Descripción mediante una matriz generadora
Una matriz generadora para un código Reed - Muller RM( r , m ) de longitud N = 2m se puede construir de la siguiente manera. Escribamos el conjunto de todos los vectores binarios m- dimensionales como:
Definimos en el espacio N -dimensionallos vectores indicadores
en subconjuntospor:
junto con, también en, la operación binaria
denominado producto exterior (que no debe confundirse con el producto exterior definido en álgebra exterior). Aquí,yson puntos en( vectores binarios N -dimensionales) y la operaciónes la multiplicación habitual en el campo.
es un espacio vectorial m -dimensional sobre el campo, por lo que es posible escribir
Definimos en el espacio N -dimensionallos siguientes vectores con longitudy
donde 1 ≤ i ≤ m y los H i son hiperplanos en(con dimensión m − 1 ):
La matriz generadora
El código Reed - Muller RM( r , m ) de orden r y longitud N = 2m es el código generado por v0 y los productos de cuña de hasta r de los vi, 1 ≤ i ≤ m ( donde, por convención , un producto de cuña de menos de un vector es la identidad para la operación). En otras palabras, podemos construir una matriz generadora para el código RM( r , m ) , utilizando vectores y sus permutaciones de productos de cuña hasta r a la vez., como las filas de la matriz generadora, donde 1 ≤ i k ≤ m .
Ejemplo 1
Sea m = 3. Entonces N = 8, y
y
El código RM(1,3) es generado por el conjunto
o, más explícitamente, por las filas de la matriz:
Ejemplo 2
El código RM(2,3) se genera mediante el conjunto:
o, más explícitamente, por las filas de la matriz:
Propiedades
Se cumplen las siguientes propiedades:
- El conjunto de todos los posibles productos de cuña de hasta m de los v i forman una base para.
- El código RM ( r , m ) tiene rango
- RM ( r , m ) = RM ( r , m − 1) | RM ( r − 1, m − 1) donde '|' denota el producto barra de dos códigos.
- RM ( r , m ) tiene un peso de Hamming mínimo de 2 m − r .
La distribución completa de los pesos de las palabras clave es más compleja que la fórmula de distancia mínima. Tadao Kasami y Nobuki Tokura estudiaron la estructura de pesos de los códigos Reed-Muller, incluyendo palabras clave de bajo peso más allá del peso mínimo. [ 11 ]
Prueba
- Hay
tales vectores ytienen dimensión N, por lo que es suficiente comprobar que los N vectores generan; equivalentemente, es suficiente comprobar que.
Sea x un vector binario de longitud m , un elemento de X. Sea ( x ) i el i- ésimo elemento de x . Definimos
donde 1 ≤ i ≤ m .
Entonces
La expansión mediante la distributividad del producto cuña da como resultado. Entonces, dado que los vectoresdurartenemos. - Por 1 , todos esos productos de cuña deben ser linealmente independientes, por lo que el rango de RM( r, m ) debe ser simplemente el número de tales vectores.
- Omitido.
- Por inducción.
- El código RM(0, m ) es el código de repetición de longitud N =2 m y peso N = 2 m − 0 = 2 m − r . Por 1y tiene un peso 1 = 2 0 = 2 m − r .
El artículo producto barra (teoría de codificación) proporciona una prueba de que el peso del producto barra de dos códigos C 1 , C 2 viene dado por
- Si 0 < r < m y si
- RM( r , m − 1) tiene un peso de 2 m − 1 − r
- RM( r − 1, m − 1) tiene un peso de 2 m − 1 − ( r − 1) = 2 m − r
- entonces el producto en barra tiene peso
Decodificación de códigos RM
Los códigos RM( r , m ) se pueden decodificar mediante decodificación por lógica de mayoría . La idea básica de la decodificación por lógica de mayoría es construir varias sumas de verificación para cada elemento de la palabra código recibida. Dado que todas las sumas de verificación deben tener el mismo valor (es decir, el valor del peso del elemento de la palabra mensaje), podemos usar la decodificación por lógica de mayoría para descifrar el valor de dicho elemento. Una vez decodificado cada orden del polinomio, la palabra recibida se modifica eliminando las palabras código correspondientes ponderadas por las contribuciones del mensaje decodificado, hasta la etapa actual. Así, para un código RM de orden r , debemos decodificarlo iterativamente r+1 veces antes de llegar a la palabra código final recibida. Además, los valores de los bits del mensaje se calculan mediante este esquema; finalmente, podemos calcular la palabra código multiplicando la palabra mensaje (recién decodificada) por la matriz generadora.
Una señal de que la decodificación se realizó correctamente es obtener una palabra modificada compuesta únicamente por ceros al final de la decodificación de ( r + 1) etapas mediante la lógica de mayoría. Esta técnica fue propuesta por Irving S. Reed y resulta más general al aplicarse a otros códigos de geometría finita .
Descripción mediante una construcción recursiva
Existe un código Reed-Muller RM( r,m ) para cualquier número entero.y. RM( m , m ) se define como el universo () código. RM( − 1,m) se define como el código trivial (). Los códigos RM restantes se pueden construir a partir de estos códigos elementales utilizando la construcción de duplicación de longitud.
A partir de esta construcción, RM( r,m ) es un código de bloque lineal binario ( n , k , d ) con longitud n = 2 m , dimensióny distancia mínimaparaEl código dual de RM( r,m ) es RM( m - r -1, m ). Esto demuestra que los códigos de repetición y SPC son duales, los códigos biorthogonales y de Hamming extendidos son duales y que los códigos con k = n /2 son autoduales.
Casos especiales de códigos Reed - Müller
Tabla de todos los códigos RM(r,m) para m≤5
Todos los códigos RM( r , m ) con y el tamaño del alfabeto 2 se muestran aquí, anotados con la notación estándar de la teoría de codificación [n,k,d] para códigos de bloque . El código RM( r , m ) es un-código, es decir, es un código lineal sobre un alfabeto binario , tiene longitud de bloque, longitud (o dimensión) del mensaje k y distancia mínima.
Propiedades de los códigos RM(r,m) para r≤1 o r≥m-2
- Los códigos RM(0, m ) son códigos de repetición de longitud N = 2 m , tasay distancia mínima.
- Los códigos RM(1, m ) son códigos de verificación de paridad de longitud N = 2 m , tasay distancia mínima.
- Los códigos RM( m − 1, m ) son códigos de verificación de paridad simple de longitud N = 2 m , tasay distancia mínima.
- Los códigos RM( m − 2, m ) son la familia de códigos de Hamming extendidos de longitud N = 2 m con distancia mínima. [ 12 ]
Referencias
- ↑ Massey, James L. (1992), "Comunicaciones y codificación en el espacio profundo: una combinación perfecta", Métodos avanzados para comunicaciones satelitales y en el espacio profundo , Notas de clase en ciencias del control e información, vol. 182, Springer-Verlag, pp. 1–17 , CiteSeerX 10.1.1.36.4265 , doi : 10.1007/bfb0036046 , ISBN 978-3540558514PDF
- ↑ "Informe final de la reunión n.º 87 de 3GPP RAN1" . 3GPP . Consultado el 31 de agosto de 2017 .
- ↑ Arikan, Erdal (2009). "Polarización de canal: un método para construir códigos que alcanzan capacidad para canales sin memoria de entrada binaria simétrica - IEEE Journals & Magazine". IEEE Transactions on Information Theory . 55 (7): 3051– 3073. arXiv : 0807.3917 . doi : 10.1109/TIT.2009.2021379 . hdl : 11693/11695 . S2CID 889822 .
- ↑ Abbe, Emmanuel; Shpilka, Amir; Wigderson, Avi (14 de junio de 2015). Códigos Reed-Muller para borrados y errores aleatorios . ACM. págs. 297–306 . doi : 10.1145/2746539.2746575 . ISBN 978-1-4503-3536-2. Consultado el 12 de noviembre de 2025 .
- ↑ Kudekar, Shrinivas; Kumar, Santhosh; Mondelli, Marco; Pfister, Henry D.; Sasoglu, Eren; Urbanke, Ridiger L. (2017). "Los códigos Reed-Muller alcanzan capacidad en canales de borrado" . IEEE Transactions on Information Theory . 63 (7): 4298– 4316. doi : 10.1109/TIT.2017.2673829 . ISSN 0018-9448 . Recuperado el 12 de noviembre de 2025 .
- ↑ Reeves, Galen; Pfister, Henry D. (2024). "Los códigos Reed-Muller en canales BMS logran una probabilidad de error de bit nula para todas las tasas por debajo de la capacidad" . IEEE Transactions on Information Theory . 70 (2): 920– 949. doi : 10.1109/TIT.2023.3286452 . ISSN 0018-9448 . Recuperado el 12 de noviembre de 2025 .
- ↑ Abbe, Emmanuel; Sandon, Colin (6 de noviembre de 2023). Una prueba de que los códigos Reed-Muller alcanzan la capacidad de Shannon en canales simétricos . IEEE. págs. 177–193 . doi : 10.1109/FOCS57990.2023.00020 . ISBN 979-8-3503-1894-4. Consultado el 12 de noviembre de 2025 .
- ↑ Muller, David E. (1954). "Aplicación del álgebra booleana al diseño de circuitos de conmutación y a la detección de errores". Transactions of the IRE Professional Group on Electronic Computers . EC-3 (3): 6– 12. doi : 10.1109/irepgelc.1954.6499441 . ISSN 2168-1740 .
- ↑ Reed, Irving S. (1954). "Una clase de códigos de corrección de errores múltiples y el esquema de decodificación". Transactions of the IRE Professional Group on Information Theory . 4 (4): 38– 49. doi : 10.1109/tit.1954.1057465 . hdl : 10338.dmlcz/143797 . ISSN 2168-2690 .
- ↑ Prahladh Harsha et al., Límites de los algoritmos de aproximación: PCP y juegos únicos (Notas de clase del tutorial de DIMACS) , Sección 5.2.1.
- ↑ Kasami, Tadao; Tokura, Nobuki (noviembre de 1970). "Sobre la estructura de pesos de los códigos Reed-Muller". IEEE Transactions on Information Theory . 16 (6): 752– 759. doi : 10.1109/TIT.1970.1054545 .
- ↑ Trellis y Turbo Coding, C. Schlegel y L. Perez, Wiley Interscience, 2004, pág. 149.
Lecturas adicionales
- Shu Lin; Daniel Costello (2005). Codificación de control de errores (2.ª ed.). Pearson. ISBN 978-0-13-017973-9.Capítulo 4.
- JH van Lint (1992). Introducción a la teoría de la codificación . GTM . Vol. 86 (2.ª ed.). Springer-Verlag . ISBN 978-3-540-54894-2.Capítulo 4.5.
Enlaces externos
- MIT OpenCourseWare , 6.451 Principios de la comunicación digital II, sección 6.4 de las notas de clase
- Implementación en Matlab de códigos RM bajo licencia GPL
- Código fuente GPL Implementación en Matlab de códigos RM
- Weiss, E. (septiembre de 1962). "Códigos Reed-Muller generalizados". Information and Control . 5 (3): 213– 222. doi : 10.1016/s0019-9958(62)90555-7 . ISSN 0019-9958 .
- Detección y corrección de errores
- Teoría de la codificación
- informática teórica