Articulo de referencia

Código de Reed-Muller

2^m "},"message_length":{"wt":" k=\\sum_{i=0}^r \\binom{m}{i} "},"rate":{"wt":" k/2^m "},"distance":{"wt":" 2^{m-r} "},"alphabet_size":{"wt":" 2 "},"notation":{"wt":" [2^m,k,2^{...

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 ≤ rm , 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  k=i=0r(metroi){\displaystyle \textstyle k=\sum _{i=0}^{r}{\binom {m}{i}}}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.do:{0,1}k{0,1}norte{\textstyle C:\{0,1\}^{k}\to \{0,1\}^{n}}esos mensajes del mapaincógnita{0,1}k{\textstyle x\in \{0,1\}^{k}}a palabras clavedo(incógnita){0,1}norte{\textstyle C(x)\in \{0,1\}^{n}}. El código Reed - Muller RM( r , m ) tiene longitud de mensajek=i=0r(metroi){\displaystyle \textstyle k=\sum _{i=0}^{r}{\binom {m}{i}}}y longitud del bloquenorte=2metro{\displaystyle \textstyle n=2^{m}}Una 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: pagdo(Z1,,Zmetro)=S{1,,metro}|S|rdoSiSZi.{\displaystyle p_{c}(Z_{1},\dots ,Z_{m})=\sum _{\underset {|S|\leq r}{S\subseteq \{1,\dots ,m\}}}c_{S}\cdot \prod _{i\in S}Z_{i}\,.} ElZ1,,Zmetro{\textstyle Z_{1},\dots ,Z_{m}}son las variables del polinomio y los valoresdoS{0,1}{\textstyle c_{S}\in \{0,1\}}son los coeficientes del polinomio. Nótese que hay exactamentek=i=0r(metroi){\textstyle k=\sum _{i=0}^{r}{\binom {m}{i}}}coeficientes. Teniendo esto en cuenta, un mensaje de entrada consta de:k{\textstyle k}valoresincógnita{0,1}k{\textstyle x\in \{0,1\}^{k}}que se utilizan como estos coeficientes. De esta manera, cada mensajeincógnita{\textstyle x}da lugar a un polinomio únicopagincógnita{\textstyle p_{x}}en m variables. Para construir la palabra clavedo(incógnita){\textstyle C(x)}, el codificador evalúa el polinomiopagincógnita{\textstyle p_{x}}en todos los puntosZ=(Z1,,Zmetro){0,1}metro{\textstyle Z=(Z_{1},\ldots ,Z_{m})\in \{0,1\}^{m}}donde el polinomio se toma con multiplicación y suma módulo 2(pagincógnita(Z)mod2){0,1}{\textstyle (p_{x}(Z){\bmod {2}})\in \{0,1\}}. Es decir, la función de codificación se define mediantedo(incógnita)=(pagincógnita(Z)mod2)Z{0,1}metro.{\displaystyle C(x)=\left(p_{x}(Z){\bmod {2}}\right)_{Z\in \{0,1\}^{m}}\,.}

El hecho de que la palabra clavedo(incógnita){\displaystyle C(x)}basta para reconstruir de forma únicaincógnita{\displaystyle x}Esto 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 quedo(0)=0{\displaystyle C(0)=0}ydo(incógnita+y)=do(incógnita)+do(y)mod2{\displaystyle C(x+y)=C(x)+C(y){\bmod {2}}}se mantiene para todos los mensajesincógnita,y{0,1}k{\displaystyle x,y\in \{0,1\}^{k}}, la funcióndo{\displaystyle C}es 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:

r=2metro=4k=(42)+(41)+(40)=6+4+1=11norte=2metro=16{\textstyle {\begin{aligned}r&=2\\m&=4\\k&=\textstyle {\binom {4}{2}}+{\binom {4}{1}}+{\binom {4}{0}}=6+4+1=11\\n&=2^{m}=16\\\end{aligned}}}

Dejardo:{0,1}11{0,1}16{\textstyle C:\{0,1\}^{11}\to \{0,1\}^{16}}sea ​​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 polinomiopagincógnita{\textstyle p_{x}}en 4 variables:pagincógnita(Z1,Z2,Z3,Z4)=1+(1Z1+0Z2+1Z3+0Z4)+(0Z1Z2+1Z1Z3+0Z1Z4+1Z2Z3+0Z2Z4+1Z3Z4)=1+Z1+Z3+Z1Z3+Z2Z3+Z3Z4{\displaystyle {\begin{aligned}p_{x}(Z_{1},Z_{2},Z_{3},Z_{4})&=1+(1\cdot Z_{1}+0\cdot Z_{2}+1\cdot Z_{3}+0\cdot Z_{4})+(0\cdot Z_{1}Z_{2}+1\cdot Z_{1}Z_{3}+0\cdot Z_{1}Z_{4}+1\cdot Z_{2}Z_{3}+0\cdot Z_{2}Z_{4}+1\cdot Z_{3}Z_{4})\\&=1+Z_{1}+Z_{3}+Z_{1}Z_{3}+Z_{2}Z_{3}+Z_{3}Z_{4}\end{aligned}}}Luego evalúa este polinomio en los 16 puntos de evaluación (0101 significaZ1=0,Z2=1,Z3=0,Z4=1){\displaystyle Z_{1}=0,Z_{2}=1,Z_{3}=0,Z_{4}=1)}: pagincógnita(0000)=1,pagincógnita(0001)=1,pagincógnita(0010)=0,pagincógnita(0011)=1,{\displaystyle p_{x}(0000)=1,\;p_{x}(0001)=1,\;p_{x}(0010)=0,\;p_{x}(0011)=1,\;}

pagincógnita(0100)=1,pagincógnita(0101)=1,pagincógnita(0110)=1,pagincógnita(0111)=0,{\displaystyle p_{x}(0100)=1,\;p_{x}(0101)=1,\;p_{x}(0110)=1,\;p_{x}(0111)=0,\;}

pagincógnita(1000)=0,pagincógnita(1001)=0,pagincógnita(1010)=0,pagincógnita(1011)=1,{\displaystyle p_{x}(1000)=0,\;p_{x}(1001)=0,\;p_{x}(1010)=0,\;p_{x}(1011)=1,\;}

pagincógnita(1100)=0,pagincógnita(1101)=0,pagincógnita(1110)=1,pagincógnita(1111)=0.{\displaystyle p_{x}(1100)=0,\;p_{x}(1101)=0,\;p_{x}(1110)=1,\;p_{x}(1111)=0\,.}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.pagincógnita{\textstyle p_{x}}deF2[incógnita1,incógnita2,...,incógnitametro]{\textstyle {\mathbb {F} }_{2}[X_{1},X_{2},...,X_{m}]}de grado como máximor{\textstyle r}que deseas encontrar. La secuencia puede contener cualquier número de errores hasta2metror11{\textstyle 2^{m-r-1}-1}incluido.

Si consideramos un monomioμ{\textstyle \mu }del más alto gradod{\textstyle d}enpagincógnita{\textstyle p_{x}}y sumar todos los puntos de evaluación del polinomio donde todas las variables enμ{\textstyle \mu }tienen los valores 0 o 1, y todas las demás variables tienen el valor 0, se obtiene el valor del coeficiente (0 o 1) deμ{\textstyle \mu }enpagincógnita{\textstyle p_{x}}(Hay2d{\textstyle 2^{d}}tales puntos). Esto se debe al hecho de que todos los divisores monomiales inferiores deμ{\textstyle \mu }aparece un número par de veces en la suma, y ​​soloμ{\textstyle \mu }aparece 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 enμ{\textstyle \mu }con valor 0, lo haces2metrod{\textstyle 2^{m-d}}veces 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.μ{\textstyle \mu }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. Conr=2,metro=4{\textstyle r=2,m=4}Podemos 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 polinomiopagincógnita{\textstyle p_{x}}es como máximor=2{\textstyle r=2}, comenzamos buscando un monomio de grado 2.

  • μ=incógnita3incógnita4{\textstyle \mu =X_{3}X_{4}}
    • comenzamos buscando puntos de evaluación conincógnita1=0,incógnita2=0,incógnita3{0,1},incógnita4{0,1}{\textstyle X_{1}=0,X_{2}=0,X_{3}\in \{0,1\},X_{4}\in \{0,1\}}En el código esto es: 1101 1110 0001 0110. La primera suma es 1 (número impar de 1).
    • buscamos puntos de evaluación conincógnita1=0,incógnita2=1,incógnita3{0,1},incógnita4{0,1}{\textstyle X_{1}=0,X_{2}=1,X_{3}\in \{0,1\},X_{4}\in \{0,1\}}. En el código esto es: 1101 1110 0001 0110. La segunda suma es 1.
    • buscamos puntos de evaluación conincógnita1=1,incógnita2=0,incógnita3{0,1},incógnita4{0,1}{\textstyle X_{1}=1,X_{2}=0,X_{3}\in \{0,1\},X_{4}\in \{0,1\}}. En el código esto es: 1101 1110 0001 0110. La tercera suma es 1.
    • buscamos puntos de evaluación conincógnita1=1,incógnita2=1,incógnita3{0,1},incógnita4{0,1}{\textstyle X_{1}=1,X_{2}=1,X_{3}\in \{0,1\},X_{4}\in \{0,1\}}. 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 deμ{\textstyle \mu }es 1.

Nosotros eliminamosμ{\textstyle \mu }del código antes de continuar  : código  : 1101 1110 0001 0110, valoración deμ{\textstyle \mu }es 0001000100010001, el nuevo código es 1100 1111 0000 0111

  • μ=incógnita2incógnita4{\textstyle \mu =X_{2}X_{4}}
    • 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.

  • μ=incógnita1incógnita4{\textstyle \mu =X_{1}X_{4}}
    • 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.

  • μ=incógnita2incógnita3{\textstyle \mu =X_{2}X_{3}}
    • 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 deμ{\textstyle \mu }es 0000 0011 0000 0011, el código actual ahora es 1100 1100 0000 0100.

  • μ=incógnita1incógnita3{\textstyle \mu =X_{1}X_{3}}
    • 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 deμ{\textstyle \mu }es 0000 0000 0011 0011, el código actual ahora es 1100 1100 0011 0111.

  • μ=incógnita1incógnita2{\textstyle \mu =X_{1}X_{2}}
    • 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.

  • μ=incógnita4{\textstyle \mu =X_{4}}
    • 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.

  • μ=incógnita3{\textstyle \mu =X_{3}}
    • 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 deμ{\textstyle \mu }es 0011 0011 0011 0011, el código actual ahora es 1111 1111 0000 0100.

Entonces encontraremos 0 paraμ=incógnita2{\textstyle \mu =X_{2}}, 1 paraμ=incógnita1{\textstyle \mu =X_{1}}y 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 encontramospagincógnita=1+incógnita1+incógnita3+incógnita1incógnita3+incógnita2incógnita3+incógnita3incógnita4{\textstyle p_{x}=1+X_{1}+X_{3}+X_{1}X_{3}+X_{2}X_{3}+X_{3}X_{4}}y 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.F{\displaystyle \mathbb {F} }de tamañoq{\displaystyle q}, es posible extender la definición de códigos Reed - Muller a alfabetos de tamañoq{\displaystyle q}. Dejarmetro{\displaystyle m}yd{\displaystyle d}sean enteros positivos, dondemetro{\displaystyle m}debe considerarse más grande qued{\displaystyle d}Para codificar un mensajeincógnitaFk{\textstyle x\in \mathbb {F} ^{k}}de anchok=(metro+dmetro){\displaystyle k=\textstyle {\binom {m+d}{m}}}, el mensaje se interpreta nuevamente como unmetro{\displaystyle m}polinomio multivariadopagincógnita{\displaystyle p_{x}}de grado total como máximod{\displaystyle d}y con coeficiente deF{\displaystyle \mathbb {F} }. De hecho, tal polinomio tiene(metro+dmetro){\displaystyle \textstyle {\binom {m+d}{m}}}coeficientes. La codificación Reed-Muller deincógnita{\displaystyle x}es la lista de todas las evaluaciones depagincógnita(a){\displaystyle p_{x}(a)}en generalaFmetro{\displaystyle a\in \mathbb {F} ^{m}}Por lo tanto, la longitud del bloque esnorte=qmetro{\displaystyle n=q^{m}}.

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:

incógnita=F2metro={incógnita1,,incógnitanorte}.{\displaystyle X=\mathbb {F} _{2}^{m}=\{x_{1},\ldots ,x_{N}\}.}

Definimos en el espacio N -dimensionalF2norte{\displaystyle \mathbb {F} _{2}^{N}}los vectores indicadores

IAF2norte{\displaystyle \mathbb {I} _{A}\in \mathbb {F} _{2}^{N}}

en subconjuntosAincógnita{\displaystyle A\subset X}por:

(IA)i={1 si incógnitaiA0 de lo contrario{\displaystyle \left(\mathbb {I} _{A}\right)_{i}={\begin{cases}1&{\mbox{ if }}x_{i}\in A\\0&{\mbox{ otherwise}}\\\end{cases}}}

junto con, también enF2norte{\displaystyle \mathbb {F} _{2}^{N}}, la operación binaria

wz=(w1z1,,wnorteznorte),{\displaystyle w\wedge z=(w_{1}\cdot z_{1},\ldots ,w_{N}\cdot z_{N}),}

denominado producto exterior (que no debe confundirse con el producto exterior definido en álgebra exterior). Aquí,w=(w1,w2,,wnorte){\displaystyle w=(w_{1},w_{2},\ldots ,w_{N})}yz=(z1,z2,,znorte){\displaystyle z=(z_{1},z_{2},\ldots ,z_{N})}son puntos enF2norte{\displaystyle \mathbb {F} _{2}^{N}}( vectores binarios N -dimensionales) y la operación{\displaystyle \cdot }es la multiplicación habitual en el campoF2{\displaystyle \mathbb {F} _{2}}.

F2metro{\displaystyle \mathbb {F} _{2}^{m}}es un espacio vectorial m -dimensional sobre el campoF2{\displaystyle \mathbb {F} _{2}}, por lo que es posible escribir

(F2)metro={(ymetro,,y1)yiF2}.{\displaystyle (\mathbb {F} _{2})^{m}=\{(y_{m},\ldots ,y_{1})\mid y_{i}\in \mathbb {F} _{2}\}.}

Definimos en el espacio N -dimensionalF2norte{\displaystyle \mathbb {F} _{2}^{N}}los siguientes vectores con longitudnorte:v0=(1,1,,1){\displaystyle N:v_{0}=(1,1,\ldots ,1)}y

vi=IHi,{\displaystyle v_{i}=\mathbb {I} _{H_{i}},}

donde 1 ≤ i ≤ m y los H i son hiperplanos en(F2)metro{\displaystyle (\mathbb {F} _{2})^{m}}(con dimensión m 1 ):

Hi={y(F2)metroyi=0}.{\displaystyle H_{i}=\{y\in (\mathbb {F} _{2})^{m}\mid y_{i}=0\}.}

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, 1im ( 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.v0,v1,,vnorte,,(vi1vi2),(vi1vi2vir){\displaystyle {v_{0},v_{1},\ldots ,v_{n},\ldots ,(v_{i_{1}}\wedge v_{i_{2}}),\ldots (v_{i_{1}}\wedge v_{i_{2}}\ldots \wedge v_{i_{r}})}}, como las filas de la matriz generadora, donde 1 ≤ i km .

Ejemplo 1

Sea m = 3. Entonces N = 8, y

incógnita=F23={(0,0,0),(0,0,1),(0,1,0),(1,1,1)},{\displaystyle X=\mathbb {F} _{2}^{3}=\{(0,0,0),(0,0,1),(0,1,0)\ldots ,(1,1,1)\},}

y

v0=(1,1,1,1,1,1,1,1)v1=(1,0,1,0,1,0,1,0)v2=(1,1,0,0,1,1,0,0)v3=(1,1,1,1,0,0,0,0).{\displaystyle {\begin{aligned}v_{0}&=(1,1,1,1,1,1,1,1)\\[2pt]v_{1}&=(1,0,1,0,1,0,1,0)\\[2pt]v_{2}&=(1,1,0,0,1,1,0,0)\\[2pt]v_{3}&=(1,1,1,1,0,0,0,0).\end{aligned}}}

El código RM(1,3) es generado por el conjunto

{v0,v1,v2,v3},{\displaystyle \{v_{0},v_{1},v_{2},v_{3}\},\,}

o, más explícitamente, por las filas de la matriz:

(11111111101010101100110011110000){\displaystyle {\begin{pmatrix}1&1&1&1&1&1&1&1\\1&0&1&0&1&0&1&0\\1&1&0&0&1&1&0&0\\1&1&1&1&0&0&0&0\end{pmatrix}}}

Ejemplo 2

El código RM(2,3) se genera mediante el conjunto:

{v0,v1,v2,v3,v1v2,v1v3,v2v3}{\displaystyle \{v_{0},v_{1},v_{2},v_{3},v_{1}\wedge v_{2},v_{1}\wedge v_{3},v_{2}\wedge v_{3}\}}

o, más explícitamente, por las filas de la matriz:

(11111111101010101100110011110000100010001010000011000000){\displaystyle {\begin{pmatrix}1&1&1&1&1&1&1&1\\1&0&1&0&1&0&1&0\\1&1&0&0&1&1&0&0\\1&1&1&1&0&0&0&0\\1&0&0&0&1&0&0&0\\1&0&1&0&0&0&0&0\\1&1&0&0&0&0&0&0\\\end{pmatrix}}}

Propiedades

Se cumplen las siguientes propiedades:

  1. El conjunto de todos los posibles productos de cuña de hasta m de los v i forman una base paraF2norte{\displaystyle \mathbb {F} _{2}^{N}}.
  2. El código RM ( r , m ) tiene rango
    s=0r(metros).{\displaystyle \sum _{s=0}^{r}{m \choose s}.}
  3. RM ( r , m ) = RM ( r , m 1) | RM ( r 1, m 1) donde '|' denota el producto barra de dos códigos.
  4. 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

  1. Hay
    s=0metro(metros)=2metro=norte{\displaystyle \sum _{s=0}^{m}{m \choose s}=2^{m}=N}

    tales vectores yF2norte{\displaystyle \mathbb {F} _{2}^{N}}tienen dimensión N, por lo que es suficiente comprobar que los N vectores generan; equivalentemente, es suficiente comprobar queRMETRO(metro,metro)=F2norte{\displaystyle \mathrm {RM} (m,m)=\mathbb {F} _{2}^{N}}.

    Sea x un vector binario de longitud m , un elemento de X. Sea ( x ) i el i- ésimo elemento de x . Definimos

    yi={vi si (incógnita)i=0v0+vi si (incógnita)i=1{\displaystyle y_{i}={\begin{cases}v_{i}&{\text{ if }}(x)_{i}=0\\v_{0}+v_{i}&{\text{ if }}(x)_{i}=1\\\end{cases}}}

    donde 1 ≤ im .

    EntoncesI{incógnita}=y1ymetro{\displaystyle \mathbb {I} _{\{x\}}=y_{1}\wedge \cdots \wedge y_{m}}

    La expansión mediante la distributividad del producto cuña da como resultadoI{incógnita}RMETRO(metro,metro){\displaystyle \mathbb {I} _{\{x\}}\in \mathrm {RM} (m,m)}. Entonces, dado que los vectores{I{incógnita}incógnitaincógnita}{\displaystyle \{\mathbb {I} _{\{x\}}\mid x\in X\}}durarF2norte{\displaystyle \mathbb {F} _{2}^{N}}tenemosRMETRO(metro,norte)=F2norte{\displaystyle \mathrm {RM} (m,n)=\mathbb {F} _{2}^{N}}.
  2. 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.
  3. Omitido.
  4. 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 1RMETRO(metro,norte)=F2norte{\displaystyle \mathrm {RM} (m,n)=\mathbb {F} _{2}^{n}}y 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

    min{2w(do1),w(do2)}{\displaystyle \min\{2w(C_{1}),w(C_{2})\}}
    Si 0 < r < m y si
    1. RM( r , m 1)   tiene un peso de 2 m 1 r
    2. RM( r 1, m 1)     tiene un peso de 2 m 1 ( r 1) = 2 m r
    entonces el producto en barra tiene peso
    min{2×2metro1r,2metror}=2metror.{\displaystyle \min\{2\times 2^{m-1-r},2^{m-r}\}=2^{m-r}.}

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.metro0{\displaystyle m\geq 0}y0rmetro{\displaystyle 0\leq r\leq m}. RM( m , m ) se define como el universo (2metro,2metro,1{\displaystyle 2^{m},2^{m},1}) código. RM( 1,m) se define como el código trivial (2metro,0,{\displaystyle 2^{m},0,\infty }). Los códigos RM restantes se pueden construir a partir de estos códigos elementales utilizando la construcción de duplicación de longitud.

RMETRO(r,metro)={(,+v)RMETRO(r,metro1),vRMETRO(r1,metro1)}.{\displaystyle \mathrm {RM} (r,m)=\{(\mathbf {u} ,\mathbf {u} +\mathbf {v} )\mid \mathbf {u} \in \mathrm {RM} (r,m-1),\mathbf {v} \in \mathrm {RM} (r-1,m-1)\}.}

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ónk(r,metro)=k(r,metro1)+k(r1,metro1){\displaystyle k(r,m)=k(r,m-1)+k(r-1,m-1)}y distancia mínimad=2metror{\displaystyle d=2^{m-r}}parar0{\displaystyle r\geq 0}El 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 )  con0metro5{\displaystyle 0\leq m\leq 5} 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[2metro,k,2metror]2{\displaystyle \textstyle [2^{m},k,2^{m-r}]_{2}}-código, es decir, es un código lineal sobre un alfabeto binario , tiene longitud de bloque2metro{\displaystyle \textstyle 2^{m}}, longitud (o dimensión) del mensaje k y distancia mínima2metror{\displaystyle \textstyle 2^{m-r}}.

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 , tasaR=1norte{\displaystyle {R={\tfrac {1}{N}}}}y distancia mínimadmin=norte{\displaystyle d_{\min }=N}.
  • Los códigos RM(1, m )  son códigos de verificación de paridad de longitud N  =  2 m , tasaR=metro+1norte{\displaystyle R={\tfrac {m+1}{N}}}y distancia mínimadmin=norte2{\displaystyle d_{\min }={\tfrac {N}{2}}}.
  • Los códigos RM( m 1, m )    son códigos de verificación de paridad simple de longitud N  =  2 m , tasaR=norte1norte{\displaystyle R={\tfrac {N-1}{N}}}y distancia mínimadmin=2{\displaystyle d_{\min }=2}.
  • Los códigos RM( m 2, m )    son la familia de códigos de Hamming extendidos de longitud N  =  2 m con distancia mínimadmin=4{\displaystyle d_{\min }=4}. [ 12 ]

Referencias

  1. 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
  2. "Informe final de la reunión n.º 87 de 3GPP RAN1" . 3GPP . Consultado el 31 de agosto de 2017 .
  3. 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 . 
  4. 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 .
  5. 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 . 
  6. 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 . 
  7. 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 .
  8. 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 . 
  9. 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 . 
  10. 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.
  11. 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 .
  12. 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.
  • 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 .