Bitácora · FEC · Concepto

Los códigos de Reed-Muller

Unidad 4 · Las familias · las palabras como tablas de verdad, la familia RM(r, m) con sus dos parámetros, la construcción (u, u + v), la dualidad y el algoritmo de Reed, que decide cada coeficiente por mayoría

Los códigos de Hamming tienen un solo parámetro libre: cada m da un código, y siempre con t=1. Para corregir más hace falta otra construcción. La de Reed-Muller, de 1954, tiene dos parámetros: la longitud 2m y el orden r, que recorre toda la escala entre la repetición y la paridad simple. Y trae un decodificador que no calcula síndromes ni consulta una tabla: vota.

01 · Un vector es una tabla de verdad

Se toma un bloque de n=2m posiciones, y a la posición j se le asocia el punto (j1,…,jm) de {0,1}m que da su representación binaria, con j1 el bit menos significativo. Con esa numeración, un vector de Vn es la tabla de verdad de una función booleana de m variables: la componente j es lo que la función vale en el punto j. La correspondencia es biunívoca, porque hay 22m funciones y otros tantos vectores.

Toda función booleana se escribe de una sola manera como polinomio sobre GF(2), como suma de monomios sin exponentes —en {0,1} vale x2=x—:

f(x1,…,xm)=∑S⊆{1,…,m}aSxS,xS=∏i∈Sxi

con cada coeficiente aS en 0 o 1. El grado de f es el del monomio más grande que aparece. Los vectores base son las tablas de los monomios: v0, la de la constante 1, que es todos unos; vi, la de xi, que vale 1 en las posiciones cuyo bit i es 1; y sus productos componente a componente. Con m=3, de la posición 0 a la 7:

monomiotabla de verdadgrado
1111111110
x₁010101011
x₂001100111
x₃000011111
x₁x₂000100012
x₁x₃000001012
x₂x₃000000112
x₁x₂x₃000000013

La tabla de un monomio de grado s vale 1 donde sus s variables valen 1 a la vez: en 2m−s posiciones. Ese conteo vuelve en todas las pruebas de abajo.

02 · La definición

Para 0≤r≤m, el código de Reed-Muller de orden r y longitud 2m, RM(r,m), es el subespacio de V2m generado por v0 y los productos de a lo sumo r de los vi. Dicho de otro modo: las tablas de verdad de todas las funciones booleanas de m variables de grado ≤r. Sus parámetros son

n=2m,k=∑s=0r(ms),dmin=2m−r

La dimensión sale de contar: hay (ms) monomios de grado s, y son linealmente independientes porque la escritura como polinomio es única: dos combinaciones distintas de monomios son funciones distintas, y por lo tanto tablas distintas. Las filas de la matriz generadora son esas tablas, ordenadas por grado, y la distancia mínima se prueba en la sección 04.

El ejemplo del apunte es RM(1,3): v0 y las tres variables,

G=( 11111111 01010101 00110011 00001111 )←v0←v1←v2←v3

con n=8, k=1+3=4 y dmin=23−1=4. El mensaje son los cuatro coeficientes (a0,a1,a2,a3), y la palabra de código vale en la posición j

a0+a1j1+a2j2+a3j3

una función afín evaluada en el punto j. Enumeradas las dieciséis palabras, hay una de peso 0, catorce de peso 4 y una de peso 8. Que las catorce pesen exactamente 4 no es casualidad: una función afín que no es constante vale 1 en exactamente la mitad de los puntos.

03 · Equivalente al (8,4) extendido, no el mismo

RM(1,3) es un (8,4,4) con catorce palabras de peso 4: los parámetros y la distribución de pesos del Hamming extendido (8,4). Pero no es el mismo conjunto de palabras. El (8,4) del curso, que se arma desde el (7,4) sistemático con un bit de paridad global, comparte con RM(1,3) sólo cuatro de sus dieciséis palabras: 00000000, 01101001, 10010110 y 11111111.

Lo que tienen en común está en las columnas. RM(1,3) es su propio dual: las filas de la G de arriba son ortogonales entre sí y k=n/2, así que esa G es también su matriz de paridad. Sus columnas son (1,j1,j2,j3): un 1 arriba y debajo la posición en binario, los ocho vectores de tres bits. La H del (8,4) es la del (7,4) con una columna de ceros agregada y una fila de unos debajo: sus columnas son las siete del (7,4) y la nula, cada una con un 1 abajo. Otra vez los ocho vectores de tres bits con un 1 agregado, en otro orden.

Reordenar las columnas de H es reordenar las posiciones de todas las palabras. La posición i del (8,4) va a la posición de RM(1,3) cuyo número en binario es la columna i de la H del (7,4), leída con la primera fila como bit menos significativo: las posiciones 0 a 7 van a 3, 6, 7, 5, 1, 2, 4 y 0, y las dieciséis palabras del (8,4) caen, todas, en RM(1,3). Son códigos equivalentes. Probadas las 40 320 permutaciones de ocho posiciones, 1344 llevan uno sobre el otro.

Para todo lo que depende sólo de los pesos —dmin, t, la probabilidad de error sobre el BSC— da lo mismo cuál se use. Para un circuito no: el bit 3 de una palabra de RM(1,3) no es el bit 3 de la palabra del (8,4), y un decodificador de uno no sirve para el otro sin recablear.

04 · La construcción (u, u + v)

La fórmula de la distancia sale de una descripción recursiva de la familia, que se debe a Plotkin.

Paso 1: separar por la última variable. Agrupando los monomios que contienen xm y los que no, toda función de grado ≤r se escribe de una sola manera como

f(x1,…,xm)=g(x1,…,xm−1)+xmh(x1,…,xm−1)

con g de grado ≤r y h de grado ≤r−1, porque xm ya pone un grado.

Paso 2: evaluar en las dos mitades. Las posiciones 0 a 2m−1−1 tienen xm=0, y ahí f vale g; en la segunda mitad xm=1 y f vale g+h. Con u la tabla de g y v la de h, para 1≤r≤m−1:

RM(r,m)={(u,u+v): u∈RM(r,m−1),v∈RM(r−1,m−1)}

RM(1,3), por ejemplo, son los pares (u,u+v) con u en RM(1,2), que es la paridad simple (4,3,2), y v en RM(0,2), la repetición (4,1,4): ocho por dos, dieciséis palabras. Armados los pares desde los dos códigos de m−1, sale exactamente RM(r,m) en los cinco casos de m=3 y 4.

Paso 3: la dimensión. Cada palabra es un par (u,v) elegido libremente, así que k(r,m)=k(r,m−1)+k(r−1,m−1): la identidad de Pascal sobre la suma de binomiales.

Paso 4: la distancia, por inducción en m. Los extremos son inmediatos: RM(0, m) es la repetición, de distancia 2m, y RM(m, m) es todo V2m, de distancia 1. Para el resto, se toma una palabra no nula (u,u+v). Si v=0, la palabra es (u,u) con u no nula, y pesa

2w(u)≥2·2(m−1)−r=2m−r

Si v≠0, toda posición donde v vale 1 tiene un 1 en u o en u+v, así que

w(u)+w(u+v)≥w(v)≥2(m−1)−(r−1)=2m−r

Las dos cotas se alcanzan, así que dmin=2m−r exacto. La tabla del monomio x1⋯xr es una palabra de ese peso.

05 · La familia

Anidamiento. Los generadores de orden r−1 son parte de los de orden r, así que

RM(0,m)⊂RM(1,m)⊂⋯⊂RM(m,m)=V2m

Para cada longitud, una sola familia contiene toda la escala de tasas, ordenada por inclusión: subir un orden suma (mr) filas a G y divide la distancia por dos. La capacidad de corrección que da esa distancia es t=2m−r−1−1, y la familia, en (n,k,dmin):

rm = 3m = 4m = 5
0(8, 1, 8)(16, 1, 16)(32, 1, 32)
1(8, 4, 4)(16, 5, 8)(32, 6, 16)
2(8, 7, 2)(16, 11, 4)(32, 16, 8)
3(8, 8, 1)(16, 15, 2)(32, 26, 4)
4—(16, 16, 1)(32, 31, 2)
5——(32, 32, 1)

Las columnas de m=3 y 4 están contadas enumerando las palabras de cada código; las de m=5 salen de la fórmula, y RM(1,5) y RM(2,5) además se enumeraron.

Dualidad. El código dual de RM(r,m) es otro de la familia:

RM(r,m)⊥=RM(m−r−1,m)

Por qué: un monomio de grado a≤r por uno de grado b≤m−r−1 da un monomio de grado a lo sumo m−1, cuya tabla pesa 2m−grado: un número par. El producto interno de dos tablas es el peso de su producto módulo 2, así que es 0, y por linealidad los dos códigos son ortogonales. Las dimensiones suman 2m, porque (ms)=(mm−s) reparte los binomiales entre los dos: ortogonales y de dimensiones complementarias, uno es el dual del otro. Comprobado en los siete casos de m=3 y 4. Con m impar, RM((m−1)/2,m) es su propio dual, de tasa 1/2: RM(1,3) y el (32,16,8). La consecuencia práctica es que la H de un Reed-Muller es la G de otro.

Los casos particulares. RM(0, m) es la repetición (2m,1,2m), y su dual RM(m − 1, m) es la paridad simple (2m,2m−1,2). Y RM(m − 2, m) es, salvo el orden de las posiciones, el Hamming extendido de longitud 2m. Que las dimensiones coincidan no alcanza para decirlo; lo que lo prueba es la dualidad. La H de RM(m − 2, m) es la G de RM(1, m): una fila de unos y debajo las m variables. Sus columnas son (1,j1,…,jm) para las 2m posiciones: todos los vectores de m bits con un 1 agregado, que son las columnas de la H del Hamming extendido. Es el argumento de la sección 03, para toda m, y deja lo mismo: el mismo conjunto de columnas en otro orden. Con m=4, RM(2,4) y el (16,11) extendido desde el (15,11) sistemático tienen la misma distribución de pesos —140 palabras de peso 4, 448 de peso 6, 870 de peso 8— y comparten 128 de sus 2048 palabras.

Mariner 9. En 1971, la sonda Mariner 9 mandó sus imágenes de Marte con RM(1,5), el (32,6,16): seis bits de información en treinta y dos transmitidos, R=6/32=0,1875, y hasta 7 errores corregidos por bloque. Enumeradas sus 64 palabras, las 62 que no son constantes pesan exactamente 16: cualquier par de palabras que no son complementarias está a distancia 16. En el espacio profundo lo que escasea es la potencia, no el ancho de banda, así que gastar redundancia sale barato. Para las imágenes en color de Júpiter y Saturno, Voyager pasó al Golay (24,12): tasa 1/2 contra 3/16, porque el volumen de datos pasó a mandar.

06 · El algoritmo de Reed

El decodificador de Reed, contemporáneo de la construcción, no pasa por el síndrome: recupera los coeficientes aS del mensaje, del grado mayor al menor, cada uno por mayoría de votos. Se ve entero en RM(1,3).

Paso 1: sumar dos posiciones vecinas. En la posición j la palabra vale a0+a1j1+a2j2+a3j3. Dos posiciones que difieren sólo en j1 tienen los mismos a0, a2j2 y a3j3; sumadas, eso se cancela y queda a1.

Paso 2: hay cuatro pares así, y no se tocan. Las ocho posiciones se parten en cuatro pares, cada posición en uno solo:

a1=r0+r1=r2+r3=r4+r5=r6+r7 a2=r0+r2=r1+r3=r4+r6=r5+r7 a3=r0+r4=r1+r5=r2+r6=r3+r7

Sin errores, las cuatro sumas de cada fila dan lo mismo. Con un error, la posición equivocada está en un solo par de cada fila: de cada coeficiente se arruina un voto, quedan tres contra uno y la mayoría acierta.

Paso 3: restar y votar el resto. Decididos a1, a2 y a3, se calcula r′=r+a1v1+a2v2+a3v3, que debería ser a0v0 con el mismo error encima: ocho copias de a0, y se decide por mayoría entre las ocho.

En general. Para un monomio xS de grado r, el máximo, se fijan las variables que no están en S y se recorren las 2r combinaciones de las que sí: un subcubo de 2r posiciones. Sumada sobre él, la tabla de cualquier otro monomio de grado ≤r da 0, porque le falta alguna variable de S y cada valor aparece dos veces; la de xS vale 1 en un solo punto del subcubo. Queda aS. Hay un subcubo por cada valor de las variables de afuera: 2m−r votos disjuntos. Se restan los términos de grado r, queda una palabra de RM(r−1,m) con el mismo error, y se repite. Son r+1 etapas, y a0 se vota al final entre las 2m posiciones.

Por qué alcanza t. Cada posición está en un solo subcubo, así que cada error arruina a lo sumo un voto de cada coeficiente. Con t=2m−r−1−1 errores, los votos malos son menos de la mitad de 2m−r, y la mayoría acierta. Las etapas siguientes tienen más votos —en RM(2,4), cuatro por coeficiente de grado 2, ocho de grado 1 y dieciséis para a0— con los mismos errores, así que el límite lo pone la primera. Enumerados todos los mensajes por todos los patrones de peso ≤t en RM(1,3), RM(1,4) y RM(2,4), el algoritmo los corrige a todos: alcanza exactamente la capacidad del código, sin tabla y con sumas de pocos bits.

Decodificador Los votos de cada coeficiente — elegís el código, el mensaje y dónde se equivoca el canal. Abajo, cada coeficiente con sus sumas disjuntas y la mayoría; pasá el mouse o el foco por un voto (con las flechas) y se marcan en r las posiciones que suma. Arranca sin errores.
Código
Mensaje: los coeficientes aₛ

errores — t — votos por coeficiente de grado r — decodificada —

Arranca en el ejemplo de RM(1,3) con el mensaje (a0,a1,a2,a3)=(1,0,1,1) y sin errores: todos los votos coinciden. Prendé un bit de e y mirá cuántos votos se ponen en rojo en cada fila: uno solo, siempre, porque la posición cae en un solo par de cada coeficiente. Pasá a RM(1,4): cada coeficiente tiene ocho votos y aguanta tres errores; el cuarto ya deja algún cuatro a cuatro. En RM(2,4), los coeficientes de grado 2 votan de a cuatro sumas de cuatro bits y los de grado 1 de a ocho: con un error, la primera etapa es la que tiene menos margen.

07 · Un error más que t

Con t+1=2m−r−1 errores, puede haber exactamente la mitad de los votos malos, y entonces no hay mayoría. Con el mismo mensaje de antes y errores en las posiciones 5 y 6, llega r=11000101 y los votos son 0,0,1,1 para a1, 1,1,0,0 para a2 y 1,0,0,1 para a3: tres empates.

No es mala suerte. En RM(1,3), dos errores en las posiciones p y q caen en el mismo par de ai sólo si p y q difieren únicamente en el bit i; en cualquier otro coeficiente arruinan dos votos distintos y dejan dos contra dos. Enumerados todos los mensajes por todos los patrones de peso t+1, la primera etapa empata en algún coeficiente siempre: en los 28 patrones dobles de RM(1,3), en los 1820 cuádruples de RM(1,4) y en los 120 dobles de RM(2,4).

Un empate se rompe con una regla, y la regla es arbitraria: acá decide 0, y con otra el mismo r sale decodificado distinto. Lo que el algoritmo garantiza termina en t. Más allá, votar y buscar la palabra más cercana dejan de dar lo mismo, y cuánto se separan en el código de Mariner está en votar no es buscar la más cercana. Para r=1 la búsqueda de la más cercana tiene atajo: la transformada rápida de Hadamard la hace en O(nlogn) operaciones.

Para tener a mano

  1. La posición j es el punto (j1,…,jm), con j1 el bit menos significativo; una palabra es la tabla de verdad de una función booleana.
  2. RM(r,m): las tablas de las funciones de grado ≤r. n=2m, k=∑s=0r(ms), dmin=2m−r, t=2m−r−1−1.
  3. RM(r,m)={(u,u+v)} con u∈RM(r,m−1) y v∈RM(r−1,m−1): de ahí dmin, por inducción.
  4. Anidados: RM(r−1,m)⊂RM(r,m). Duales: RM(r,m)⊥=RM(m−r−1,m).
  5. RM(0, m) es la repetición, RM(m − 1, m) la paridad simple y RM(m − 2, m) el Hamming extendido salvo una permutación: RM(1,3) comparte sólo 4 de sus 16 palabras con el (8,4) del curso.
  6. Mariner 9: RM(1,5) = (32,6,16), R=0,1875, t=7; sus 62 palabras no constantes pesan 16.
  7. Algoritmo de Reed: de grado r a 0, cada coeficiente por mayoría de 2m−grado sumas disjuntas, restando lo decidido. Cada error arruina un voto por coeficiente: corrige hasta t exacto, y con t+1 siempre hay algún empate.
← Anterior Siguiente → Inicio
Relacionados Los códigos de Hamming El Hamming extendido y el SEC-DED El código de Golay La matriz de paridad y el código dual Votar no es buscar la más cercana