Ejercicios 8, 9 y 10 de la clase práctica de la Unidad 5 · la ventana de paridad sobre el anillo, el (15,5) contra el Golay con la misma t, y las ráfagas que un código cíclico deja pasar
Los tres ejercicios usan los dos códigos de referencia de la práctica, que se presentan así: «Los ejercicios se apoyan en dos códigos cíclicos, ambos de distancia mínima 7 y capacidad correctora .» El (15,5), con polinomio generador
y el Golay (23,12), con
Corrigen lo mismo, y sin embargo uno se deja decodificar con el método más simple de la unidad y el otro no. Los ejercicios 8 y 9 son esa comparación. El 10 cambia de tema: no corrige, detecta, y cuenta qué ráfagas se le escapan a un código cíclico.
«El código (15,5) tiene y . La ventana de paridad abarca 10 posiciones consecutivas del anillo de 15.
Antes de resolver. Se entregan cuatro cosas: un argumento que valga para los 105 patrones dobles a la vez, no un recorrido de casos; un sí y un número de desplazamientos; un sí o un no; y un número, con la forma de los patrones que lo componen. En ninguno hace falta conocer la palabra transmitida: la captura mira sólo el patrón de error, porque el síndrome depende sólo de él. Y «capturar» tiene un sentido preciso, que conviene fijar antes de contar.
Tres resultados de la teoría, los tres en la nota de captura de errores y en la del síndrome cíclico.
El síndrome es un resto. Con y múltiplo de , el síndrome es . Si todos los errores caen en las posiciones de paridad, que en la forma sistemática cíclica son las primeras, de la 0 a la , entonces , la división tiene cociente nulo y
El registro contiene el patrón de error, bit por bit.
Un ciclo del registro gira la palabra. Por el teorema 5, es el síndrome de , la palabra recibida desplazada un lugar. Después de ciclos el registro tiene , el síndrome de módulo . Cada error subió posiciones, y el que pasa de la vuelve a la 0. Sobre las posiciones puestas en círculo, el patrón gira y la ventana de paridad queda quieta.
El test de peso no se equivoca. El decodificador no ve dónde están los errores: ve el peso del síndrome. Si los errores están en la ventana, el síndrome es el patrón y pesa a lo sumo . Al revés, si pero el patrón girado no fuera , la suma de los dos sería una palabra de código no nula de peso a lo sumo , menos que la distancia 7. Entonces el peso cae a o menos si y sólo si los errores están capturados. Si en ciclos eso no pasa, el decodificador declara la falla: hace decodificación incompleta, y nunca entrega una palabra equivocada.
Con eso, «se captura» deja de ser una pregunta sobre el registro y pasa a ser una pregunta sobre el anillo: ¿hay algún giro que meta los errores en las posiciones 0 a ? O, lo que es lo mismo, ¿hay posiciones consecutivas del anillo que los contengan a todos?
Contar ventanas que contienen errores es incómodo. Lo que conviene mirar es el complemento. Las posiciones de la ventana y las restantes parten el anillo en dos arcos. Los errores caben en la ventana exactamente cuando el otro arco, el de posiciones, cae entero sobre posiciones sin error. Así:
un patrón se captura si y sólo si el anillo tiene posiciones consecutivas sin errores.
En el (15,5) eso es pedir cinco posiciones limpias seguidas. La cuenta se hace con los tramos limpios: errores sobre un anillo de dejan posiciones limpias, repartidas en a lo sumo tramos, uno entre cada error y el siguiente.
Paso 1: dos errores. Quedan 13 posiciones limpias en dos tramos, . Si los dos tuvieran 4 o menos, sumarían 8 a lo sumo. Uno tiene por lo menos 7, y 7 ≥ 5.
Paso 2: tres errores. Quedan 12 limpias en tres tramos, . Para que ninguno llegue a 5, los tres tienen que valer 4 o menos, y como suman 12, : los errores están a distancia 5 uno de otro.
Paso 3: contar los que fallan. Un patrón con tramos 4, 4, 4 queda fijado por la posición de su primer error: . Con de 0 a 14 cada patrón aparece tres veces, una por cada error que se elija como primero: son .
El razonamiento no usa nada del (15,5) salvo , y que corrija tres errores. Es una cuenta sobre el anillo, y por eso la misma cuenta va a servir para el Golay. Y la captura misma se puede seguir ciclo por ciclo: el registro de abajo es el síndrome de verdad, calculado como resto.
Arranca con errores en 10, 12 y 14, fuera de la ventana: el síndrome pesa más de tres, y cada ciclo los sube un lugar hasta que el 14 da la vuelta. Probá después : el peso del síndrome va y viene entre 4 y 7 y no baja nunca, y a los quince ciclos el decodificador se rinde. Y pasá al Golay con : con sólo dos errores pasa lo mismo, y el peso no baja de 5 en ninguno de los 23 ciclos.
1. Dos errores dejan 13 posiciones limpias en dos tramos, así que uno de los tramos tiene al menos 7. Ese tramo contiene cinco posiciones limpias seguidas, y girando el patrón hasta que esas cinco queden en las posiciones 10 a 14, los dos errores caen en la ventana, de la 0 a la 9. Dicho de otra forma: dos posiciones del anillo de 15 distan a lo sumo 7 por el arco más corto, y ese arco ocupa 8 posiciones, menos que las 10 de la ventana. Los 105 dobles se capturan.
2. El patrón ya está en la ventana: tiene grado 6 < 10, y el síndrome es él mismo, 0011001000, de peso 3. Se captura con cero desplazamientos: el test de peso se cumple en el primer síndrome, antes del primer ciclo.
3. El patrón tiene sus tres tramos limpios de 4 posiciones. Ningún giro deja cinco limpias seguidas fuera de la ventana, así que no se captura. Calculado ciclo por ciclo, el peso del síndrome recorre 4, 4, 7, 7, 4 y se repite: nunca llega a 3, y el decodificador declara la falla.
4. Fallan los patrones de tramos 4, 4, 4, que son los con : 5 de los , el 1,1 %. Corriendo el decodificador sobre los 455 triples, captura 450 y declara la falla en los 5; no entrega mal ninguno. Para el (15,5), la captura simple corrige todo lo que el código promete salvo esos cinco, y a esos cinco los avisa.
«El Golay (23,12) tiene y : la misma capacidad correctora que el código del ejercicio anterior.
Antes de resolver. Los dos primeros ítems son el ejercicio 8 con otros números. El tercero pide una conclusión, y una conclusión honesta lleva una cuenta: cuántos dobles se pierden, y qué pasa con los triples, que el Golay también promete corregir. El cuarto pide una regla, y la regla tiene que salir de lo único que cambia entre los dos códigos, porque y son iguales.
Las herramientas son las de la sección 02, sin cambios: el test de peso vale en el Golay porque su distancia también es 7. Lo que cambia es el criterio de la sección 03: ahora , y un patrón se captura si el anillo de 23 tiene doce posiciones limpias seguidas.
El razonamiento. Dos errores dejan 21 limpias en dos tramos. Si ninguno llega a 12, son de 10 y 11: los dos errores están a distancia 11 por un arco y 12 por el otro. Eso pasa para con de 0 a 22, y los 23 son distintos: 23 dobles que no se capturan. Tres errores dejan 20 limpias en tres tramos, , y el patrón falla si los tres valen 11 o menos. Ternas ordenadas de enteros no negativos que suman 20 hay ; las que tienen un tramo de 12 o más son, restándole 12 a ese tramo, ternas que suman 8, por cada uno de los tres lugares, y dos tramos de 12 no entran en 20. Quedan ternas. Cada una, con su primer error en cualquiera de las 23 posiciones, da un patrón, y cada patrón sale tres veces:
triples que no se capturan, de . Se capturan 1035.
La resolución.
1. son dos errores adyacentes, en la ventana desde el principio: el síndrome es , de peso 2, y se captura sin desplazar.
2. Entre la 11 y la 22 hay 11 posiciones por un arco y por el otro. Una ventana de 11 posiciones consecutivas abarca diferencias de a lo sumo 10, así que no hay ninguna que contenga a las dos. Calculado sobre los 23 ciclos, el peso del síndrome no baja nunca de 5. No se captura.
3. La captura simple no alcanza la capacidad del Golay: falla ya con dos errores, en los 23 patrones de distancia cíclica 11 de los 253 dobles, y con tres errores falla en 736 de 1771, más de cuatro de cada diez. Corrido el decodificador sobre todos, captura 230 dobles y 1035 triples, y en los demás declara la falla: tampoco acá entrega mal ninguno. Para corregir todo patrón de peso 3 hacen falta los refinamientos de la teoría, el de Kasami o la búsqueda sistemática.
4. Lado a lado:
| código | ventana / anillo | tramo limpio | dobles | triples |
|---|---|---|---|---|
| (15,5) | 10 / 15 | 5 | 105 de 105 | 450 de 455 |
| Golay (23,12) | 11 / 23 | 12 | 230 de 253 | 1035 de 1771 |
Los dos tienen y . Lo único que cambia es cuánto del anillo cubre la ventana: dos tercios en el (15,5), menos de la mitad en el Golay, y por eso el Golay pide doce posiciones limpias seguidas donde el (15,5) pide cinco. La regla de diseño: la captura de errores sirve cuando es grande respecto de , en códigos de tasa baja o moderada, y se vuelve ineficaz en los largos y de tasa alta. Y es el método natural para errores que vienen juntos, porque una ráfaga de hasta posiciones deja limpio todo el resto del anillo.
El mismo Golay, factorizado, codificado y acortado, está en el Golay por dentro.
«Sea el código cíclico generado por .
Antes de resolver. Se entregan un número, cinco fracciones y una explicación. El enunciado no da , y no hace falta: la fracción no depende de él. Para ubicarse igual, , así que lo divide, y
con primitivo. El menor con divisor de es 15: es el (15,10) de distancia 4, las palabras de peso par del Hamming cíclico (15,11). Y una ráfaga de largo es un patrón cuyos errores caen en posiciones consecutivas, con la primera y la última erradas; lo del medio puede valer cualquier cosa.
Las herramientas. Polinómicamente, una ráfaga de largo es
y como los coeficientes de los dos extremos valen 1 y los del medio son libres, hay ráfagas de largo para cada arranque . La ráfaga no se detecta cuando es una palabra de código, o sea, un múltiplo de . Como , y no comparten factores, y eso pasa si y sólo si divide a . De ahí sale el teorema 6: si , es no nulo y de grado menor que , y toda ráfaga se detecta, también las que dan la vuelta por el extremo del bloque.
El razonamiento. Para hay que contar los múltiplos. Un de grado pide , y pide . Con el único posible es 1: una sola ráfaga, la propia . Con , tiene sus dos extremos en 1 y coeficientes libres. Las fracciones:
Las cuentas a la vista, con . Para reducir módulo alcanza con una regla: como en el resto,
La ráfaga de largo 6 con el medio limpio, , da
y se detecta. De las 16 de largo 6, la única con resto nulo es misma. De largo 7, la única es
una de 32. De largo 8 son dos de 64: y . Todas pesan par, y no es casualidad: divide a , así que toda palabra del código pesa par, y una ráfaga de peso impar no se le escapa nunca. Buscalas a mano abajo.
Con largo 4 o 5 no hay nada que encontrar: el resto nunca se anula. Con 6 hay exactamente una, y con 8 hay dos. Contadas también sobre el código de largo 15, poniendo cada ráfaga en sus 15 arranques, incluidos los que dan la vuelta, se escapan 15 de 240 de largo 6, 15 de 480 de largo 7 y 30 de 960 de largo 8: las mismas fracciones.
1. La redundancia es el grado del generador: .
2.
| largo | ráfagas | no detectadas | fracción | por qué |
|---|---|---|---|---|
| 4 | 4 | 0 | 0 | l ≤ n − k |
| 5 | 8 | 0 | 0 | l ≤ n − k |
| 6 | 16 | 1 | 1/16 = 2⁻⁴ | l = n − k + 1 |
| 7 | 32 | 1 | 1/32 = 2⁻⁵ | l > n − k + 1 |
| 8 | 64 | 2 | 1/32 = 2⁻⁵ | l > n − k + 1 |
La columna de ráfagas cuenta las de un arranque fijo; con cualquier otro la cuenta es la misma, porque multiplicar por no cambia si divide o no.
3. Una ráfaga se escapa si y sólo si es . Pasado , cada bit más de largo duplica las ráfagas posibles, que pasan de a , y duplica también los posibles, que ganan un coeficiente libre. El cociente queda fijo en , que depende de la redundancia y no del largo de la ráfaga ni del bloque. En la cuenta es otra porque no tiene dos extremos sino uno solo, el 1, y la fracción sale el doble.
Capturar es dejar limpio el arco del mensaje. Un patrón se captura si y sólo si el anillo tiene posiciones consecutivas sin error. Con eso, contar los patrones que fallan es repartir las posiciones limpias en tramos y pedir que todos sean cortos: sirve para cualquier código cíclico y cualquier peso, sin enumerar.
La que más se escapa es la que se pasa por uno. La fracción de ráfagas no detectadas no crece con el largo: salta en y después baja a la mitad y se queda. Para un CRC de 32 bits, el peor caso es , una de cada 2 147 483 648 ráfagas de largo 33; las de 34 o más pasan una de cada . Está contado entero en la ráfaga que más se escapa.
Y las trampas: