Bitácora · FEC · Unidad 4

Votar no es buscar la más cercana

Unidad 4 · El RM(1,5) de la Mariner 9, la votación de Reed y la transformada de Hadamard

El código de la Mariner 9 manda seis bits en treinta y dos y corrige siete errores. Hay dos maneras de decodificarlo. Una vota: decide cada bit del mensaje por mayoría entre varias estimaciones. La otra busca, entre las 64 palabras posibles, la más cercana a lo que llegó. Hasta siete errores dan lo mismo, siempre. Con uno más se separan. Con ocho errores, la palabra más cercana es única en el 92,4 % de los patrones, y la votación decide sin empatar en el 14,5 %. Son cuentas exactas, sobre los 10 518 300 patrones de ocho errores.

01 · El código y las dos reglas

Un código de Reed-Muller lee cada palabra como la tabla de verdad de una función booleana. En el RM(1,5) hay 32 posiciones, numeradas de 0 a 31, y cada una es un punto de cinco variables: los bits de su índice, j=(j5j4j3j2j1) en binario, con j1 el menos significativo. El mensaje son seis coeficientes, a0,…,a5, y la función es de grado 1:

vj=a0+a1j1+a2j2+a3j3+a4j4+a5j5

La suma es módulo 2. Cada una de las 26=64 elecciones de coeficientes da una palabra de código de 32 bits: es un (32,6), con tasa R=6/32=0,1875. Fuera de la nula y la de todos unos, las 62 palabras restantes tienen peso 16: dieciséis unos y dieciséis ceros. La distancia mínima es dmin=16, y la capacidad de corrección, t=⌊15/2⌋=7.

El canal le suma a la palabra v un patrón de error e, con un 1 en cada posición que dio vuelta, y llega r=v+e. Las dos reglas para recuperar el mensaje son éstas:

La más cercana. Medir la distancia de r a cada una de las 64 palabras —en cuántas posiciones difieren— y quedarse con la menor. Sobre un canal que da vuelta cada bit por separado, con probabilidad menor que ½, es la regla de máxima verosimilitud: ninguna se equivoca menos. Si dos palabras quedan a la misma distancia, la regla empata y tiene que elegir a la suerte.

La votación. El algoritmo de Reed no compara palabras: estima cada coeficiente por separado, con varias sumas de símbolos recibidos que en ausencia de errores darían todas lo mismo, y decide por mayoría. Es la lógica mayoritaria.

02 · Dieciséis votos por coeficiente

Dos posiciones j y j′ que difieren sólo en el bit ji tienen todos los términos iguales menos uno, así que al sumarlas se cancela todo y queda vj+vj′=ai. Las 32 posiciones se reparten en 16 pares así, sin que ninguna esté en dos: dieciséis estimaciones disjuntas de ai. Sobre lo recibido, cada par vota

rj+rj′=ai+ej+ej′

y el voto sale mal exactamente cuando una de las dos posiciones tiene error y la otra no. Si las dos lo tienen, los errores se cancelan y el voto sale bien. Decididos a1 a a5, se resta su aporte y queda a0+ej en cada una de las 32 posiciones: a0 se vota con 32.

De ahí sale la garantía. Cada error estropea a lo sumo un voto de cada coeficiente. Con siete errores hay, como mucho, siete votos malos de dieciséis, y la mayoría gana siempre; con a0 son siete de 32. Con ocho, como mucho ocho votos malos: la votación no puede perder, pero puede empatar ocho a ocho. Pasa cuando los ocho errores caen en ocho pares distintos. Con errores en las posiciones 0, 3, 6, 9, 13, 18, 24 y 29, los votos malos de a1 a a5 son 8, 8, 6, 8 y 6: tres coeficientes empatados, y la votación tiene que tirar tres monedas.

Que una dirección empate es contar: elegir 8 de los 16 pares y, en cada uno, cuál de las dos posiciones tiene el error. Son (168)·28=3294720 de los (328)=10518300 patrones, el 31,3 %, y hay cinco direcciones. Enumerando los patrones uno por uno, al menos un coeficiente empata en el 85,5 %, y la votación decide los seis sin moneda sólo en 1 521 920, el 14,5 %.

03 · La más cercana casi nunca duda

Con ocho errores, r queda a distancia 8 de la palabra transmitida. ¿Puede haber otra más cerca? La distancia a v+c es el peso de e+c. Si c es la de todos unos, 24. Si c es una de las 62 de peso 16, y s de los ocho errores caen sobre sus unos,

w(e+c)=8+16−2s≥8

con igualdad sólo si s=8: si los ocho errores caen todos adentro de los dieciséis unos de una misma palabra. Entonces lo recibido está justo a mitad de camino entre dos palabras, y la regla empata. Nunca hay una palabra estrictamente más cerca que la transmitida. Hay 62·(168)=797940 maneras de meter ocho errores en una de esas palabras, con repeticiones: 620 patrones caben en tres palabras a la vez. Enumerados, los que empatan son 796 700, el 7,6 %. En los otros 9 721 600, el 92,4 %, la más cercana es única y es la transmitida.

Las dos reglas, entonces, tienen con ocho errores la misma forma: ninguna se equivoca nunca, las dos a veces empatan. Lo que las separa es cuánto. La más cercana duda en el 7,6 % de los patrones; la votación, en el 85,5 %. Contando cada empate como una moneda —acierta con probabilidad ½ por coeficiente empatado—, la votación acierta en promedio el 42,5 %, y la más cercana, con la misma moneda, el 96,2 %.

Simulación Ocho errores en el RM(1,5) — tocá las posiciones que el canal da vuelta, o pedí ocho al azar. Antes de ver los votos y el espectro, apostá: ¿quién acierta sin tirar una moneda?
Pares de
Acierta sin moneda
errores 0 votación — más cercana — apuestas acertadas —

coeficientevotos bienmaldecide
Espectro de Hadamard F(b), b = 0 … 31
mitad de la verdadera — la otra mitad — diferencia / 64 —
patrones de 8 probados 0 votación sin moneda — más cercana única —

Con siete errores las dos aciertan siempre: buscá un patrón de siete que haga empatar algo y no lo vas a encontrar. Con ocho, pedí unos cuantos al azar: la votación casi siempre tiene algún coeficiente ocho a ocho, y el espectro casi siempre tiene una sola barra más alta que todas. Para que la más cercana dude hay que poner los ocho errores en una mitad del arreglo, por ejemplo la fila de arriba entera. Elegir el mensaje no cambia nada: las dos reglas dependen sólo del patrón de error.

04 · Lo que compraba la transformada de Hadamard

Buscar la más cercana por fuerza bruta son 64 distancias de 32 posiciones: 2048 comparaciones por bloque. La transformada de Hadamard hace lo mismo con mucho menos. Se escribe lo recibido como +1 donde hay un 0 y −1 donde hay un 1, y para cada b de cinco bits se suma

F(b)=∑j=031(−1)rj+b1j1+⋯+b5j5

Cada posición suma +1 si rj coincide con la palabra de coeficientes (0,b) y −1 si no. Con d desacuerdos, F(b)=32−2d, y la palabra complementaria, la de a0=1, está a 32−d. Las 32 sumas dan las 64 distancias: la palabra más cercana es la barra más alta en valor absoluto, y el signo dice a0. Y las 32 sumas no se hacen una por una: por mariposas, como una FFT, son cinco etapas de 32 sumas y restas, 160 operaciones. Es máxima verosimilitud a un costo del orden del de la votación, y según el apunte era lo que la electrónica de 1971 podía hacer.

La votación también se lee en el espectro, y ahí se ve qué tira. Cada voto de ai compara dos posiciones de r, y contar cuántos pares coinciden es una autocorrelación, que es lo que la transformada convierte en energía. La cuenta da exacta:

votos por ai=0−votos por ai=1=E0−E164

donde E0 es la suma de F(b)2 sobre las 16 barras con bi=0 y E1 sobre las otras 16. Verificada sobre los 10 518 300 patrones de ocho errores, sin una excepción. La votación pregunta en qué mitad del espectro hay más energía; la más cercana pregunta dónde está la barra más alta.

Con ocho errores la diferencia es todo. La energía total es siempre la misma, 322=1024, y la barra de la palabra transmitida mide 32−2·8=16: se lleva 256, un cuarto. Las otras 31 barras no pueden medir más de 16 —son el doble de una diferencia entre cuántos errores caen a cada lado de una palabra de peso 16— y miden 16 sólo en el caso de la sección anterior. En el ejemplo de las posiciones 0, 3, 6, 9, 13, 18, 24 y 29, la verdadera mide 16 y la siguiente, 12: la más cercana no duda. Pero los 768 que no son del pico se reparten en las dos mitades como quieren, y en a1 le tocan a la mitad del pico 256 y a la otra 512. Las dos mitades suman 512: empate.

05 · Con nueve, las dos se equivocan

Se enumeraron todos los patrones de cada peso, y para cada uno se contó si la más cercana es única y es la transmitida, y si la votación decide bien los seis coeficientes. Cuando hay empate, la columna «con moneda» lo cuenta como acierto a medias por cada coeficiente empatado, o como acierto en una de k si son k las palabras empatadas:

errorespatronesmás cercana únicacon monedavotación sin empatecon moneda
73 365 856100 %100 %100 %100 %
810 518 30092,43 %96,21 %14,47 %42,48 %
928 048 80055,46 %75,90 %31,05 %31,05 %

Con nueve errores la votación ya no empata: cada voto malo es un par con un solo error, los pares con dos se llevan los errores de a dos, y con nueve la cantidad de votos malos es impar, nunca ocho. Gana o pierde. Y la más cercana puede quedar en otra palabra, a distancia 7 de lo recibido, más cerca que la transmitida: pasada la mitad de dmin, ninguna regla puede acertar siempre. Pero no se equivocan igual: la más cercana cae en otra palabra en el 2,5 % de los patrones de nueve, y la votación en el 69,0 %.

La garantía de las dos es la misma, t=7, y por eso el apunte puede decir que la votación «alcanza exactamente la capacidad de corrección del código». Es cierto: la alcanza y no pasa de ahí. Lo que la votación tira es lo que hay más allá de t, y en un canal real esos patrones no son raros: son los que deciden cuántos bloques salen mal. Que decodificar por la más cercana sea la mejor apuesta posible está en con dos errores, el decodificador empeora; cómo se construye la familia entera y cómo vota con más de un grado, en los códigos de Reed-Muller.

← Anterior Siguiente → Inicio
Relacionados Los códigos de Reed-Muller La distancia mínima El código de Golay Con dos errores, el decodificador empeora El producto corrige más de lo que promete