Unidad 5 · Los códigos cíclicos · la definición, la palabra como polinomio, el desplazamiento como producto por X módulo Xⁿ + 1, y el (7,4) que ya era cíclico
Un código lineal se decodifica con una tabla que asocia cada síndrome con su líder de coset, y esa tabla tiene entradas: ocho en el (7,4), más de cuatro mil millones con 32 bits de paridad. La salida no es abandonar la linealidad sino agregarle una simetría: que el código no cambie al girar sus palabras. Con esa sola condición, la tabla se reemplaza por un circuito. Los BCH, los Reed-Solomon y los CRC son todos cíclicos o salen de uno.
Sea una -tupla sobre . Su desplazamiento cíclico es
Cada componente se corre un lugar a la derecha y la última vuelve al principio. Aplicado veces da el desplazamiento de orden , , y con la tupla vuelve a ser la misma: las posiciones se leen como un anillo.
Definición. Un código de bloque lineal es cíclico si el desplazamiento cíclico de toda palabra de código es también una palabra de código.
Alcanza con pedirlo para un lugar: es el desplazamiento de un lugar aplicado veces, y cada vez se cae adentro del código. Girar no cambia la cantidad de unos, así que una palabra y sus giros tienen el mismo peso. Las palabras de un código cíclico se agrupan entonces en órbitas: cada una con todos sus giros, que son a lo sumo distintos.
La condición es fuerte. Un código lineal puede ser cualquier conjunto de palabras cerrado bajo la suma; ser cíclico pide además un cierre que depende del orden de las posiciones, algo que a la suma y a las distancias les da igual.
En notación de vectores el desplazamiento es incómodo. A la -tupla se le asocia el polinomio
de grado menor que y coeficientes en . La posición es el coeficiente de . La correspondencia es biunívoca y la suma de vectores es la suma de polinomios, así que nada se pierde. Lo que se gana es una cuenta para el desplazamiento.
Paso 1: multiplicar por . Cada coeficiente sube un grado:
Casi es el desplazamiento, salvo por el último término, que llegó a grado y no corresponde a ninguna posición.
Paso 2: sumar dos veces . Sobre sumar dos veces lo mismo es sumar cero. Agrupando una de las copias con el término de grado y la otra con el resto:
El paréntesis tiene los coeficientes : es exactamente el polinomio de .
Paso 3: leer un resto. La igualdad tiene la forma de una división por , con cociente y un resto de grado menor que . Ese resto es el desplazamiento:
donde es el resto de dividir por . Girar es multiplicar por módulo . En la práctica se cuenta con : el término que llega a grado vuelve a grado 0.
Con y , la posición 0 a la izquierda:
o sea : el 1 de la posición 6 dio la vuelta a la posición 0, y los demás se corrieron un lugar.
La cuenta del paso 3 tiene una consecuencia que la notación de vectores escondía. En un código cíclico, es una palabra para todo , y la suma de palabras es una palabra. Un polinomio cualquiera es una suma de potencias de , así que
también es una palabra. Un código cíclico es cerrado bajo el producto por cualquier polinomio, módulo . De ahí sale que una sola palabra alcanza para generarlo todo: la no nula de menor grado, el polinomio generador . Es única, tiene grado , las palabras son sus múltiplos de grado menor que , divide a , y todo divisor de genera un cíclico. Las pruebas están en el polinomio generador.
Con eso, buscar los cíclicos de un largo es factorizar. Para ,
tres factores irreducibles. Cada producto de algunos de ellos, sin tomar ninguno ni todos, es un generador: códigos. Con la distancia mínima de cada uno, sacada enumerando sus palabras:
| g(X) | (n, k) | dmin |
|---|---|---|
| 1 + X | (7, 6) | 2 |
| 1 + X + X³ | (7, 4) | 3 |
| 1 + X² + X³ | (7, 4) | 3 |
| 1 + X + X² + X⁴ | (7, 3) | 4 |
| 1 + X² + X³ + X⁴ | (7, 3) | 4 |
| 1 + X + X² + X³ + X⁴ + X⁵ + X⁶ | (7, 1) | 7 |
El primero es el de paridad par; el último, la repetición. Una matriz pasa a ser un polinomio de coeficientes, y la ganancia es de implementación: codificar es una división y el síndrome es un resto, las dos cosas con un registro de desplazamiento de etapas, sin tablas. Está en el codificador cíclico y en el síndrome cíclico.
El Hamming (7,4) que se usa desde la Unidad 3 tiene la matriz generadora en forma sistemática , con el mensaje adelante y tres ecuaciones de paridad:
Nada en esa construcción habla de giros. Y sin embargo, comparadas una por una, sus 16 palabras son exactamente las mismas que las del cíclico de . No es casualidad, y se ve en cuatro pasos.
Paso 1: las filas de son múltiplos de . Leídas como polinomios y divididas por , las cuatro dan resto cero:
Paso 2: entonces generan el mismo código. Los múltiplos de de grado menor que 7 son palabras del cíclico, así que las 16 combinaciones de esas cuatro filas también lo son. Las filas de una son independientes, y dan 16 palabras distintas; el cíclico tiene . No queda ninguna afuera.
Paso 3: las ecuaciones de paridad son las mismas. La forma sistemática de un cíclico pone la paridad adelante y el mensaje al final:
Con , el mensaje entra multiplicado por , y hacen falta los restos de a . Como módulo vale , cada uno sale del anterior multiplicando por y volviendo a reemplazar, siempre módulo :
Entonces
y juntando por potencias:
Son las tres ecuaciones de la Unidad 3, letra por letra. La de aquel (7,4) tiene por filas los restos de , , y módulo .
Paso 4: lo único que cambia es dónde va el mensaje. El cíclico escribe ; la Unidad 3, . Mismo conjunto, otra asignación: de los 16 mensajes, sólo 0000 y 1111 van a parar a la misma palabra en las dos. El mensaje 1000 es 110 1000 en el cíclico —el propio — y 1000 110 en la Unidad 3. De una a otra hay un giro: la palabra de la Unidad 3 es la cíclica girada cuatro lugares, , comprobado en los 16 mensajes. Ese atajo sólo existe porque el código es cíclico.
Las órbitas. Las siete palabras de peso 3 son los siete giros de , y las siete de peso 4, los siete giros de . Con 0000000 y 1111111, que giran sobre sí mismas, el código entero son cuatro órbitas: . La distribución de pesos del Hamming, , , , , es la lista de esas órbitas.
Arranca en el orden natural, con 0011001. Apostá y girá: la girada, 1001100, sigue en el código. Girá otra vez. Después pasá al (7,4) del curso y buscá una palabra que se salga.
El orden natural pone en la posición la columna de que vale en binario. Es el mismo Hamming (7,4) con las posiciones en otro orden: las mismas columnas en , los mismos pesos, la misma distancia. Y de sus 16 palabras, sólo 4 siguen en el código al girarlas: 0000000, 1111111, 0011001 y 1100110. Medido con giros de 1 a 6 lugares, la cuenta da 4 en todos. Ser cíclico no es una propiedad de las distancias: es una propiedad del orden.
Cuánto pide ese orden se puede contar. Las maneras de reordenar las posiciones del (7,4) dan 30 códigos distintos, todos con los mismos pesos. Dos son cíclicos: el de , que es el del curso, y el de . Entre esos dos sólo hay dos palabras en común, 0000000 y 1111111. Entre los reordenamientos del (7,4), uno de cada quince es cíclico; que el del curso lo sea depende de cómo se armó su en la Unidad 3.
La estructura también restringe qué parámetros existen. Los generadores de largo 7 tienen grado 1, 3, 4 o 6, que son las sumas posibles de los grados de los factores de : no hay ningún cíclico (7,5) ni (7,2). Y para una misma redundancia puede haber varios cíclicos con distancias distintas, o uno solo, y malo: en largo 15, un bit más de redundancia puede costar distancia. Cuando el largo que se necesita no es uno con buena factorización, el cíclico se acorta, y deja de ser cíclico sin perder el circuito: está en los CRC y los códigos acortados.