Unidad 5 · Los treinta códigos cíclicos de largo 15 y la distancia que no sigue a la paridad
En un código de bloque, cada bit de paridad de más se paga con tasa y se cobra, en principio, en distancia. Entre los códigos cíclicos de largo 15 esa cuenta se rompe. Con 11 bits de paridad, el mejor tiene ; con 12, el mejor tiene 5. No es que el de 12 esté mal elegido: es el único que hay, y sus palabras son un patrón de tres bits repetido cinco veces. Con 8 bits, en cambio, hay tres para elegir, de distancias 5, 5 y 3, y equivocarse de polinomio cuesta dos de distancia sin ahorrar un bit.
Sea una palabra de bits. Su desplazamiento cíclico es : cada bit avanza un lugar y el último vuelve al principio, como sobre un anillo de posiciones. Un código lineal es cíclico si el desplazamiento de toda palabra del código es otra palabra del código.
El desplazamiento se escribe mejor con polinomios. A la palabra se le asocia
y multiplicar por corre todos los coeficientes un lugar. El único que se pasa es , y vuelve a la posición 0 si se cuenta , o sea, si se toma el resto de dividir por :
es el resto de dividir por . Desplazar es multiplicar por módulo , y todo lo que sigue sale de ahí.
En todo código cíclico no trivial hay una sola palabra no nula de grado mínimo. Es el polinomio generador , tiene grado y término independiente 1. Lo hacen generador tres hechos, demostrados en El polinomio generador:
Las palabras son sus múltiplos. es una palabra del código si y sólo si , con de grado menor que . Son palabras, una por mensaje.
Divide a . Y al revés: todo divisor de de grado genera un código cíclico . Elegir un código cíclico de largo es elegir un divisor de , y su grado es la redundancia.
Lo que sobra es el polinomio de paridad. , de grado . Como , toda palabra cumple
Esta condición es la que va a explicar la caída. Mientras dice qué palabras hay, dice qué ecuaciones cumplen todas.
Con , los divisores salen de factorizar en polinomios irreducibles sobre GF(2):
Son cinco factores distintos, de grados 1, 2, 4, 4 y 4. Cada subconjunto da un generador, su producto. Sacando el conjunto vacío, que da , y el completo, que da el código de una sola palabra, quedan códigos cíclicos de largo 15. La redundancia de cada uno es la suma de los grados que eligió, y es la suma de los que dejó para .
Hay algo más que distingue a los factores: su orden, el menor tal que el factor divide a . Para es 1. Para es 3, y para es 5, porque
Los otros dos, y , tienen orden 15: son primitivos. es irreducible y de grado 4 igual que ellos, pero no es primitivo. Un factor de orden chico es un factor que también divide a un o a un , y eso, en un código de largo 15, tiene consecuencias.
Arranca con el mejor código de 11 bits de paridad, un de distancia 8. Buscá ahora uno con 12: no hay un factor de grado 1 para agregar, así que hay que cambiar el reparto entero. Después probá los tres de 8 bits, que se arman con dos factores de grado 4, y mirá cuál de los tres pares deja una palabra de peso 3.
Medido sobre los 30 códigos, enumerando las palabras de cada uno, la mejor para cada redundancia:
| n − k | códigos | dmin de cada uno | mejor |
|---|---|---|---|
| 1 · 2 · 3 | 1 cada una | 2 | 2 |
| 4 | 3 | 3 · 3 · 2 | 3 |
| 5 | 3 | 4 · 4 · 2 | 4 |
| 6 | 3 | 4 · 3 · 3 | 4 |
| 7 | 3 | 4 · 4 · 4 | 4 |
| 8 | 3 | 5 · 5 · 3 | 5 |
| 9 | 3 | 6 · 6 · 6 | 6 |
| 10 | 3 | 7 · 7 · 3 | 7 |
| 11 | 3 | 8 · 8 · 6 | 8 |
| 12 | 1 | 5 | 5 |
| 13 | 1 | 10 | 10 |
| 14 | 1 | 15 | 15 |
Hasta 11 la mejor distancia sube o se queda quieta. En 12 cae de 8 a 5, y vuelve a subir a 10 y a 15 en las dos siguientes. La primera pista está en la segunda columna: con 12 bits de paridad hay un solo código.
Con 11, , y es el factor de grado 4 que quedó afuera de . Hay tres maneras. Cuando es uno de los dos primitivos, el código es el símplex , el dual del Hamming : sus quince palabras no nulas pesan 8, todas. Con la distancia es 6.
Con 12, , y tiene que tener grado 3. Con factores de grados 1, 2, 4, 4 y 4, la única forma de sumar 3 es 1 + 2:
Ahora la condición de la sección 02. Con , dice , o sea
Toda palabra es igual a su desplazamiento de orden 3: para todo módulo 15. La palabra la decide su primer tramo, , y el resto lo repite: cada palabra es un patrón de tres bits repetido cinco veces. Hay ocho patrones y ocho palabras, que es , así que están todas. El peso de cada una es cinco veces el de su patrón:
| patrón | palabra | peso |
|---|---|---|
| 000 | 000 000 000 000 000 | 0 |
| 100 · 010 · 001 | 100 100 100 100 100 y sus giros | 5 |
| 110 · 011 · 101 | 110 110 110 110 110 y sus giros | 10 |
| 111 | 111 111 111 111 111 | 15 |
La distancia mínima es 5, y la palabra de peso 5 con la posición 0 en uno es el propio . El código es, en el fondo, una repetición: cada uno de los tres bits de información sale cinco veces. Doce bits de paridad compran exactamente lo que compra repetir cinco veces, y nada más.
Lo que hace caer la distancia no es el bit de más sino el orden de . tiene orden 3, y un de orden obliga a toda palabra a repetirse con período . Lo mismo explica la otra fila de la tabla con de orden chico: con 11 bits y , de orden 5, las palabras son un patrón de cinco bits de peso par repetido tres veces, y la distancia es .
Ocho bits de paridad sólo se juntan con dos factores de grado 4, y hay tres pares. Los tres códigos son , con la misma tasa, 7/15:
| factores de g(X) | g(X) | dmin |
|---|---|---|
| 5 | ||
| 5 | ||
| 3 |
El tercero tiene cinco palabras de peso 3, y son los giros de una sola:
Es la palabra de período 5, 10000 10000 10000. Está en el código cuando la divide, y eso pasa cuando no se queda con ninguno de los dos factores de : ni con ni con . Los dos primeros pares llevan a adentro de y la excluyen; el tercero se lo deja a , junto con , y la palabra entra.
La regla vale para los tres divisores chicos de 15. La palabra de período , , pesa y está en el código si y sólo si no comparte factores con . Comprobado sobre los 30 códigos con : 90 casos de 90. Es la misma caída que la de 12 bits, vista desde la otra punta: allá todas las palabras eran periódicas; acá basta con una.
Distancia 3 en vez de 5 es corregir un error en vez de dos, con los mismos ocho bits de paridad. Elegir el par es elegir qué factor de orden chico queda en .
Entre los códigos lineales, un bit más de paridad nunca obliga a perder distancia. Del símplex se puede sacar cualquier subcódigo de dimensión 3, y como todas sus palabras no nulas pesan 8, el subcódigo también tiene distancia 8: un con , tres más que el cíclico. Medido: el símplex tiene 15 subcódigos de dimensión 3, todos de distancia 8, y ninguno es cíclico. En cada uno hay una palabra cuyo giro cae afuera, en el resto del símplex.
La distancia no cae porque falte redundancia. Cae porque la condición de ser cíclico deja pocos códigos para elegir, y en deja uno solo. La salida es salir de la familia: cambiar el largo, o acortar un código de otra redundancia. El símplex acortado en un bit da un de distancia 8, medido sobre sus ocho palabras, que deja de ser cíclico pero se sigue codificando con el mismo circuito.