Bitácora · FEC · Clase práctica

El Golay por dentro

Ejercicios 2, 3 y 11 de la clase práctica de la Unidad 5 · los dos generadores recíprocos, una palabra sistemática con la división a la vista, y el código acortado con su ρ(X)

En la Unidad 4 el Golay (23,12) apareció por su distribución de pesos y por ser perfecto; eso, y sus octadas, está en el código de Golay. Acá se lo mira como código cíclico: todo el código queda guardado en un polinomio de grado 11, y las tres cuentas de estos ejercicios —un polinomio de paridad, una palabra sistemática, un código acortado— salen de multiplicar, dividir y leer coeficientes al revés. Los tres usan los mismos datos, los de la clase práctica:

X23+1=(X+1)g1(X)g2(X) g1(X)=1+X2+X4+X5+X6+X10+X11g2(X)=1+X+X5+X6+X7+X9+X11

Los vectores se escriben con la posición 0 a la izquierda: el bit i es el coeficiente de Xi.

01 · Ejercicio 2: los dos generadores son recíprocos

El enunciado, textual:

  1. «Verificar que g2(X) es el polinomio recíproco de g1(X), es decir, que g2(X)=X11g1(X−1).
  2. Sabiendo que X23+1=(X+1)g1(X)g2(X), obtener el polinomio de paridad h(X) del código generado por g1(X), sin efectuar la división.
  3. Justificar por qué g1(X) y g2(X) generan códigos (23,12) y por qué ambos son equivalentes.»

Antes de resolver. Son tres entregas de naturaleza distinta. La primera es una comprobación: una igualdad entre dos polinomios, que se ve en los exponentes. La segunda es un polinomio, h(X), que tiene que salir de grado k=12. La tercera son dos argumentos, sin cuentas: uno por los parámetros y otro por la equivalencia. «Sin efectuar la división» es una pista: la factorización ya la trae hecha.

Las herramientas. Cuatro resultados de la teoría, los de el polinomio generador:

Paso 1: el recíproco se ve en los exponentes. Los de g1(X) son {0,2,4,5,6,10,11}. Restados de 11 dan {11,9,7,6,5,1,0}, que son exactamente los de g2(X). Es la comprobación entera: un polinomio y su recíproco tienen la misma cantidad de términos, siete acá, y los exponentes se reflejan alrededor de 5,5.

Paso 2: h(X) es lo que queda al sacar g1(X) de la factorización. La factorización dice X23+1=g1(X)·(X+1)g2(X), así que el cociente por g1(X) es el resto de los factores, (X+1)g2(X). Multiplicar por X+1 es sumar el polinomio con su copia corrida un lugar:

g2(X)=1+X+X5+X6+X7+X9+X11 Xg2(X)=X+X2+X6+X7+X8+X10+X12 h(X)=1+X2+X5+X8+X9+X10+X11+X12

X, X6 y X7 aparecen en los dos renglones y se cancelan. Queda grado 12, como tenía que ser, y multiplicado por g1(X) da X23+1.

Paso 3: los parámetros salen del grado. g1(X) y g2(X) son factores de X23+1 y tienen grado 11. Por el Teorema 4, cada uno genera un cíclico con n=23 y n−k=11: un (23,12).

Paso 4: leer al revés lleva un código al otro. Una palabra del código de g1(X) es v(X)=a(X)g1(X), con a(X) de grado a lo sumo 11. Leerla al revés, de la posición 22 a la 0, es formar v*(X)=X22v(X−1), y el 22 se reparte en 11 y 11:

v*(X)=[X11a(X−1)][X11g1(X−1)]=a*(X)g2(X)

Como a(X) tiene grado a lo sumo 11, a*(X) es un polinomio, y v*(X) es un múltiplo de g2(X) de grado menor que 23: una palabra del otro código, con el mismo peso. La permutación es i↦22−i, y por eso los dos códigos son equivalentes.

Equivalentes no quiere decir iguales. Una palabra que estuviera en los dos sería múltiplo de g1(X) y de g2(X), dos irreducibles distintos, y por lo tanto de su producto g1(X)g2(X), que es (X23+1)/(X+1): la suma de todas las potencias de X hasta X22, de grado 22. Los únicos múltiplos de grado menor que 23 son el cero y él mismo: los dos códigos comparten exactamente dos palabras, la nula y la de todos unos. Enumeradas las 4096 palabras del código de g1(X), las 4096 leídas al revés caen en el de g2(X), las dos distribuciones de pesos coinciden término a término, y las comunes son esas dos.

La resolución, como se entrega.

  1. Los exponentes de g1(X) son {0,2,4,5,6,10,11}; restados de 11, {11,9,7,6,5,1,0}, los de g2(X). Luego g2(X)=X11g1(X−1).
  2. h(X)=(X23+1)/g1(X)=(X+1)g2(X), que desarrollado es 1+X2+X5+X8+X9+X10+X11+X12, de grado 12=k.
  3. g1(X) y g2(X) dividen a X23+1 y tienen grado 11=n−k: por el Teorema 4 generan cíclicos (23,12). Si v(X)=a(X)g1(X), su lectura al revés es X22v(X−1)=[X11a(X−1)]g2(X), palabra del código de g2(X) con el mismo peso. La permutación i↦22−i lleva un código al otro: son equivalentes.

02 · Ejercicio 3: codificar es una división

«Se transmite el mensaje u=100100000000, es decir u(X)=1+X3, con el código generado por g1(X).

  1. Escribir Xn−ku(X).
  2. Dividir por g1(X) y obtener el polinomio de paridad b(X).
  3. Armar la palabra de código v en forma sistemática.
  4. Calcular el peso de v y comentar el resultado.»

Antes de resolver. De las cuatro entregas, la que cuesta es la segunda: un resto de grado menor que 11. Las otras son acomodar —correr el mensaje, pegar paridad y mensaje— y un número, el peso, con una lectura: compararlo con la distancia mínima. Lo que se entrega al final es una cadena de 23 bits.

Las herramientas. La forma sistemática cíclica del codificador cíclico, la ecuación (15) del apunte:

v(X)=b(X)+Xn−ku(X),b(X)=Rg(X){Xn−ku(X)}

La paridad ocupa las posiciones 0 a n−k−1 y el mensaje, las últimas k. Y del Golay se usa su enumerador de pesos: dmin=7, con 253 palabras de peso 7 entre las 4096.

Paso 1: correr el mensaje. Con n−k=11, X11u(X)=X11+X14. El mensaje queda en las posiciones 11 y 14, donde va a quedar en la palabra.

Paso 2: dividir, restando el generador corrido debajo del uno más alto. Sobre GF(2) restar es sumar. Cada paso suma g1(X) corrido hasta que su X11 caiga sobre el término de mayor grado, que se cancela. Con un bit por columna se ve qué se va:

posición01234567891011121314
X11u(X)000000000001001
+X3g1(X)000101011100011
=000101011101010
+X2g1(X)001010111000110
=001111100101100
+Xg1(X)010101110001100
=b(X)011010010100000

Tres restas, con X3, X2 y X: el cociente es X+X2+X3, que no se pide. Cuando el grado baja de 11 la división terminó, y lo que queda es b(X)=X+X2+X4+X7+X9.

El mismo resto sale sin dividir, reduciendo término a término. Como g1(X)≡0, X11≡1+X2+X4+X5+X6+X10, y cada potencia más alta se baja multiplicando por X y volviendo a reemplazar. Es lo que se hace en el ejercicio 11.

Paso 3: armar la palabra. Paridad primero, en las posiciones 0 a 10, y el mensaje detrás, en las 11 a 22.

Paso 4: el peso, y lo que dice. La paridad aporta 5 unos y el mensaje 2: w(v)=7, la distancia mínima. Es una de las 253 palabras de peso mínimo. Que salga una no es raro con un mensaje de peso 2: la palabra pesa por lo menos 7, el mensaje pone 2, y a la paridad le alcanza con poner 5. Medido sobre los 66 mensajes de peso 2, 30 dan una palabra de peso 7; sobre los 12 de peso 1, siete. Un mensaje de peso 1 pide por lo menos 6 unos de paridad, y los restos Rg1(X){X11+j} pesan 6 o 7: está en la tabla de la sección 04.

Simulación El Golay a mano: dividir, leer al revés, acortar — tocá los bits del mensaje y dividí de a un paso. La paridad aparece recién cuando la división termina. Después apostá si la palabra leída al revés sigue en el mismo código.
Generador
Leída al revés, ¿sigue en el mismo código?

    
pasos — grado — peso de u — peso de v —

Arranca con el mensaje del ejercicio y la división sin hacer: el mensaje ya está en su lugar, y la paridad no. Tres restas la terminan. Después probá u(X)=1, un solo bit, y mirá cuántos unos pone la paridad. Con g2(X) el mismo mensaje da otra palabra, y leída al revés cae en el código de g1(X), nunca en el suyo, salvo un caso: el mensaje de todos unos.

La resolución, como se entrega.

  1. X11u(X)=X11+X14.
  2. b(X)=Rg1(X){X11+X14}, que da b(X)=X+X2+X4+X7+X9, con cociente X+X2+X3.
  3. v=01101001010100100000000: once bits de paridad y doce de mensaje.
  4. w(v)=7=dmin: es una de las 253 palabras de peso mínimo del Golay. No es casualidad: con un mensaje de peso 2, a la paridad le alcanzan 5 unos para llegar a 7.

03 · Ejercicio 11: acortar sin perder distancia

«Se acorta el Golay (23,12) suprimiendo las l=3 posiciones de información de mayor orden.

  1. Indicar los parámetros del código acortado y qué ocurre con su distancia mínima.
  2. Justificar si el código acortado sigue siendo cíclico.
  3. Al ingresar la palabra recibida por el extremo derecho del registro de síndrome hacen falta l desplazamientos adicionales. Calcular el polinomio ρ(X), resto de Xn−k+l módulo g1(X), que permite evitarlos.»

Antes de resolver. Tres entregas: un par (n,k) con una afirmación sobre dmin; un sí o un no, con su porqué; y un polinomio de grado menor que 11. El tercer punto trae su propia fórmula, así que la cuenta es directa; lo que hay que entender es por qué hacen falta esos desplazamientos.

Las herramientas. Las del código acortado, que en la Unidad 4 se armaban sacando columnas de una matriz y acá salen de un cíclico, como en los CRC y los códigos acortados:

Paso 1: los parámetros. Con l=3 sale un (20,9), de tasa 9/20=0,45 contra los 12/23≈0,522 del Golay. Las tres posiciones que se suprimen son las del mensaje de mayor orden, u9, u10 y u11, que en la palabra están en las posiciones 20, 21 y 22: el final de la cadena.

Paso 2: la distancia no baja, y acá tampoco sube. Por ser un subconjunto, dmin≥7. Para saber si es exactamente 7 alcanza con una palabra de peso 7 que sobreviva, y ya hay una a mano: la del ejercicio 3 tiene su último uno en la posición 14, así que sus posiciones 20 a 22 son cero y está en el (20,9). La distancia es 7. Enumeradas las 512 palabras del acortado, sobreviven 80 de las 253 de peso 7:

peso0781112151623
(23, 12)1253506128812885062531
(20, 9)1801301601201650

Lo que sí se pierde es la perfección. Una esfera de radio 3 en 20 bits tiene 1+20+190+1140=1351 vectores, y las 512 esferas cubren 691 712 de los 220=1 048 576: el 65,97 %. El acortado sigue corrigiendo tres errores, pero un tercio de lo que puede llegar queda a más de tres de toda palabra.

Paso 3: deja de ser cíclico. Girar una palabra v del (20,9) es calcular Xv(X) módulo X20+1. Si v19=0, el giro es Xv(X), un múltiplo de g1(X) de grado menor que 20: sigue en el código. Si v19=1, el giro es Xv(X)+X20+1, y su síndrome es

Rg1(X){X20+1}=1+X2+X4+X5+X7+X8+X9+X10≠0

El giro se cae del código. Como v19 es el bit de mensaje u8, eso le pasa a la mitad: de las 512 palabras, 256 siguen y 256 no. Con u(X)=X8, la palabra es X+X3+X4+X6+X7+X8+X9+X19, y girada da 1+X2+X4+X5+X7+X8+X9+X10, que tiene grado 10: es su propio resto, y no es cero. En el anillo original de 23 posiciones se ve lo mismo de otro modo: ese giro lleva el uno de la posición 19 a la 20, que en el acortado no existe.

Paso 4: por qué hacen falta l desplazamientos. Entrar la palabra recibida por el extremo derecho del registro equivale a multiplicarla por X11: después de los n−l=20 ciclos, el registro tiene Rg1(X){X11r(X)}. Pero el decodificador del (23,12) —un Meggitt, por ejemplo— examina primero la posición n−1=22, y en la palabra acortada el dígito de mayor orden, r19, está tres lugares más abajo. Hay que llevarlo arriba, multiplicando por X3: lo que hace falta es Rg1(X){X14r(X)}, y por la derecha eso son tres desplazamientos más. Con ρ(X)=Rg1(X){X14} como segundo juego de conexiones de entrada, cada bit entra ya multiplicado por X14 y el síndrome queda listo al ciclo 20.

La cuenta de ρ(X) es la del paso 2 del ejercicio 3: arrancar de X11≡1+X2+X4+X5+X6+X10 y, en cada renglón, multiplicar por X y reemplazar el X11 que aparezca. Es lo mismo que hace el registro en cada ciclo:

X12≡X+X3+X5+X6+X7+X11≡1+X+X2+X3+X4+X7+X10X13≡X+X2+X3+X4+X5+X8+X11≡1+X+X3+X6+X8+X10X14≡X+X2+X4+X7+X9+X11≡1+X+X5+X6+X7+X9+X10

El último renglón es ρ(X). El mismo cálculo, para el (28,23) que sale de acortar un Hamming, está en el ejemplo del apunte.

La resolución, como se entrega.

  1. Un (20,9) lineal. Sus palabras son un subconjunto de las del Golay, así que dmin≥7; la palabra de peso 7 del ejercicio 3 tiene ceros en las posiciones 20 a 22, así que dmin=7 y sigue corrigiendo t=3.
  2. No es cíclico. Si v19=1, el giro de v es Xv(X)+X20+1, con síndrome Rg1(X){X20+1}≠0: no es palabra.
  3. n−k+l=14: ρ(X)=Rg1(X){X14}, que es 1+X+X5+X6+X7+X9+X10.

04 · Lo que se lleva a otros ejercicios

La tabla de restos. Todo resto módulo g1(X) de un polinomio de grado menor que 23 es una suma de filas de esta tabla, más los términos de grado menor que 11, que quedan como están:

potenciaresto · posiciones 0 a 10peso
X11101011100016
X12111110010017
X13110100101016
X14110001110117
X15110011011006
X16011001101106
X17001100110116
X18101101111007
X19010110111107
X20001011011117
X21101110001106
X22010111000116

El ejercicio 3 y el 11 se cruzan acá. El resto es lineal, así que Rg1(X){X11+X14}=Rg1(X){X11}+Rg1(X){X14}: la suma de las dos filas destacadas, 10101110001+11000111011=01101001010, es la paridad del ejercicio 3, y la segunda fila es el ρ(X) del 11.

El recíproco da un código equivalente, siempre. El argumento del paso 4 del ejercicio 2 no usa nada del Golay: para cualquier cíclico, el generado por el recíproco del generador es el mismo código leído al revés. Y de ahí sale el dual: el apunte dice que lo genera el recíproco de h(X), X12h(X−1). El recíproco de (X+1)g2(X) es (X+1)g1(X), y sus múltiplos son las palabras del Golay de peso par: el dual del (23,12) es un (23,11) metido adentro de él, con 1+506+1288+253=2048 palabras, las de peso 0, 8, 12 y 16 de la tabla.

Acortar no cambia el circuito. El codificador del (20,9) es el del Golay con tres ceros de más en el mensaje, que no alteran la división. Del lado del síndrome lo único que cambia es por dónde entran los bits: ρ(X) es cableado, no un circuito nuevo. Ciclo a ciclo, el registro está en el registro ciclo a ciclo.

05 · Las trampas

Para tener a mano

  1. X23+1=(X+1)g1(X)g2(X), con g2(X)=X11g1(X−1): los exponentes de uno son 11 menos los del otro.
  2. h(X)=(X+1)g2(X), sin dividir: es el resto de la factorización. Vale 1+X2+X5+X8+X9+X10+X11+X12.
  3. Los códigos de g1(X) y g2(X) son el mismo leído al revés (i↦22−i): equivalentes, y comparten sólo la palabra nula y la de todos unos.
  4. b(X)=Rg1(X){X11u(X)}; con u(X)=1+X3, v=01101001010100100000000, de peso 7.
  5. X11≡1+X2+X4+X5+X6+X10, y cada potencia siguiente es multiplicar por X y volver a reemplazar.
  6. Acortado en 3: (20,9), dmin=7, ya no perfecto ni cíclico; ρ(X)=Rg1(X){X14}, que es 1+X+X5+X6+X7+X9+X10.
← Anterior Siguiente → Inicio
Relacionados El código de Golay El polinomio generador El codificador cíclico Los CRC y los códigos cíclicos acortados Los códigos acortados El registro ciclo a ciclo