La PizarraMatemática.

Máster y doctorado

Códigos algebraicos y decodificación

Si enviamos cualquier palabra, una palabra alterada puede parecer perfectamente válida. Un código reserva solo algunas palabras: separarlas permite detectar cambios y, a veces, reconstruir lo enviado. Empezaremos con tres bits y llegaremos a un ejemplo de decodificación con polinomios, haciendo las cuentas en un cuerpo finito.

1. Un código reserva palabras y Hamming cuenta posiciones diferentes

Con q símbolos y longitud n hay qⁿ palabras posibles. El código C elige un subconjunto y asigna un mensaje a cada palabra elegida. Las demás palabras no representan directamente mensajes. Usar menos posibilidades introduce redundancia.

La distancia de Hamming d(u,v) cuenta posiciones donde u y v difieren. No resta sus valores como números enteros. El peso wt(u) cuenta posiciones no nulas; sobre un cuerpo, d(u,v)=wt(u−v). En códigos no binarios se cuentan símbolos, no necesariamente bits.

Comparar bit a bit

u=01011 y v=01101.

  1. Alinear

    Las posiciones uno y dos coinciden.

  2. Marcar

    Las posiciones tres y cuatro cambian; la quinta coincide.

  3. Contar

    Hay dos diferencias: d(u,v)=2.
Resultado

El tamaño de la resta entre los números binarios no interviene.

Lo comprobamos

Las palabras deben tener la misma longitud.

Reservar solo dos palabras

C={000,111}.

  1. Universo

    Hay 2³=8 palabras de tres bits.
  2. Código

    Solo dos son válidas: representan un bit de mensaje.

  3. Recibir 010

    No pertenece a C; detectamos que algo cambió si se transmitió una palabra válida.

Resultado

La redundancia deja huecos entre palabras válidas.

Lo comprobamos

Una alteración de 000 a 111 no dejaría una palabra inválida.

2. La distancia mínima determina un radio garantizado

Para al menos dos palabras válidas, d es la menor distancia entre dos distintas. Se detectan hasta d−1 errores: menos de d cambios no convierten una palabra válida en otra. Para corregir de forma única hasta t errores se exige 2t<d.

Las bolas de un error no se superponen
Dos mensajes, ocho recibidosCentro 000000001010100Centro 111111110101011Cada bola tiene 1+3=4 palabras.2·4=8: cubren todo el espacio.Garantía: como máximo 1 error.
Dos grupos de cuatro palabras binarias de longitud tres. La bola de radio uno alrededor de cero cero cero contiene cero cero cero, cero cero uno, cero uno cero y uno cero cero. La bola de radio uno alrededor de uno uno uno contiene uno uno uno, uno uno cero, uno cero uno y cero uno uno. Son disjuntas y juntas contienen las ocho palabras posibles. Cada grupo indica el resultado de decodificar por mínima distancia, siempre que se acepte ese decodificador; el recibido podría provenir del otro mensaje con dos o tres cambios. La corrección garantizada cubre como máximo un cambio.

La razón es triangular. Si r estuviera a distancia como máximo t de c y de c′, tendríamos d(c,c′)≤d(c,r)+d(r,c′)≤2t<d, imposible. Por eso el radio garantizado es \lfloor(d-1)/2\rfloor.

Repetición de tres bits

Entre 000 y 111 hay distancia tres.

  1. Detectar

    Uno o dos cambios no producen la otra palabra válida.

  2. Corregir

    t=1 cumple 2<3; las bolas de radio uno no se tocan.

  3. Fuera del radio

    Si 000 sufre dos cambios y llega 110, la mayoría elige 111 y falla.

Resultado

Detectar dos cambios no significa corregirlos dos.

Lo comprobamos

La detección por pertenencia y la decisión de un decodificador son operaciones distintas.

Una distancia par

Un código tiene distancia mínima cuatro.

  1. Un error

    2·1<4: corrección garantizada.
  2. Dos errores

    2·2=4: no hay garantía uniforme.
  3. Detección

    Se detectan hasta tres cambios por pertenencia al código.

Resultado

El radio garantizado es uno, no dos.

Lo comprobamos

Fuera de la garantía algunos patrones pueden seguir siendo corregibles.

3. Un código lineal convierte mensajes en combinaciones de columnas

Un cuerpo finito F_{q} permite sumar, multiplicar y dividir por elementos no nulos. Un código lineal es un subespacio de F_{q}ⁿ de dimensión k y contiene qᵏ palabras. Para q primo operamos módulo q. Si q es una potencia prima no prima, F_{q} no se identifica con enteros módulo q.

Usamos mensajes columna y G de tamaño n×k, con rango k: c=Gm. Una matriz H de tamaño (n−k)×n y rango n−k describe C=ker H.

La compatibilidad es HG=0.

En un código lineal, la distancia mínima es el menor peso no nulo: la diferencia de dos palabras vuelve al código.

Generar repetición

En F₂, G es la columna (1,1,1).

  1. Mensaje cero

    G·0=(0,0,0).
  2. Mensaje uno

    G·1=(1,1,1).
  3. Control

    H=\begin{pmatrix}1&1&0\\0&1&1\end{pmatrix} da HG=0 porque 1+1=0 en F₂.
Resultado

Dimensión uno, longitud tres y dos palabras.

Lo comprobamos

La misma G sobre los reales no sería este código binario.

Una división modular

En F₅ queremos resolver 2a=1.

  1. Buscar inverso

    2·3=6≡1 módulo cinco.
  2. Multiplicar

    a=3.
  3. Distinguir

    En enteros módulo cuatro, dos no tiene inverso; por eso ese anillo no es F₄.

Resultado

Un campo no es cualquier aritmética modular.

Lo comprobamos

Las cuentas de Reed–Solomon siguientes serán en F₅.

4. El síndrome comprueba paridades, pero no conoce el error real

Si se recibe r=c+e, con c válida, Hr=Hc+He=He.

El síndrome depende del error, no del mensaje. Para corregir buscamos un error compatible, dentro del radio garantizado o según un criterio declarado.

Un síndrome nulo significa que r pertenece al código. Puede no haber error o puede haberse sumado una palabra válida no nula. Dos errores con el mismo síndrome difieren en una palabra del código: H(e−e′)=0.

Localizar un cambio

Usamos la H de repetición y recibimos 101.

  1. Síndrome

    Hr=(1+0,0+1)=(1,1) en F₂.
  2. Comparar columnas

    Las columnas de H son (1,0), (1,1), (0,1): un error único estaría en la segunda posición.

  3. Corregir

    101+010=111.
Resultado

La localización usa la hipótesis de como máximo un error.

Lo comprobamos

Sin esa hipótesis también podría haberse enviado 000 y cambiado dos posiciones.

Error invisible al control

Se transmite 000 y ocurre e=111.

  1. Recibido

    r=111 es otra palabra válida.
  2. Síndrome

    H111=(0,0).
  3. Conclusión

    El control no detecta este error de peso tres.

Resultado

Síndrome cero no prueba transmisión intacta.

Lo comprobamos

No contradice la garantía de detección de hasta dos cambios.

5. Las bolas y el borrado de posiciones dan dos cotas distintas

Una bola de radio t contiene todas las palabras con hasta t posiciones cambiadas: V_q(n,t)=\sum_{j=0}^t\binom nj(q-1)^j. Si 2t<d, las bolas centradas en las palabras válidas son disjuntas.

Caber en el universo exige |C|V_{q}(n,t)≤qⁿ: cota de Hamming.

Para Singleton, borramos d−1 posiciones fijas. Dos palabras distintas no pueden quedar iguales: entonces diferirían en menos de d posiciones.

La proyección es inyectiva, así que |C|≤qⁿ⁻ᵈ⁺¹.
En un código lineal esto equivale a d≤n−k+1.

Dos bolas llenan el cubo

Repetición binaria de longitud tres y t=1.

  1. Volumen

    V₂(3,1)=1+3=4.
  2. Centros

    Dos palabras válidas dan 2·4=8.
  3. Universo

    Hay ocho palabras. Las bolas son disjuntas y cubren todas.

Resultado

Cada recibido tiene una palabra más cercana, pero puede no ser la transmitida.

Lo comprobamos

La partición no garantiza corregir dos errores.

Aplicar Singleton

Código lineal de longitud siete y dimensión cuatro.

  1. Redundancia

    n−k=3.
  2. Cota

    d≤7−4+1=4.
  3. Leer

    La cota no afirma que todo código así tenga distancia cuatro.

Resultado

Es una limitación de parámetros, no una construcción.

Lo comprobamos

Otra cota puede ser más fuerte para un alfabeto específico.

6. Reed–Solomon envía evaluaciones de un polinomio

Elegimos n puntos distintos α_i en F_{q}, con 1≤k≤n≤q.

El mensaje son los k coeficientes de un polinomio p de grado menor que k. Se envía (p(\alpha_1),\ldots,p(\alpha_n)). Evaluar es lineal e inyectivo: un polinomio no nulo de grado menor que k no tiene k raíces distintas.

Evaluaciones correctas y una evaluación alterada
F₅: p(x)=1+2xEvaluamos en 0, 1, 2, 30123401233 → 4: errorCorrecta: (1,3,0,2)Recibida: (1,4,0,2)Grado <2; distancia mínima 3.
Cuatro puntos discretos de un código Reed–Solomon sobre el cuerpo de cinco elementos. En los puntos cero uno dos tres, el polinomio uno más dos x da residuos uno tres cero dos, dibujados en azul. En la segunda posición se recibe cuatro en vez de tres, marcado en rojo. No se unen los puntos mediante una curva real porque todas las operaciones son en el cuerpo finito. El código tiene longitud cuatro, dimensión dos y distancia tres. Corregir un error requiere aprovechar el grado del polinomio y comprobar la palabra reconstruida; no redondear visualmente una altura.

Dos mensajes distintos difieren por un polinomio de grado como máximo k−1: coinciden como mucho en k−1 posiciones.

Así d≥n−k+1.
Singleton da la desigualdad opuesta y resulta d=n−k+1.

Si solo hay borrados conocidos, cualquier k evaluaciones intactas permiten interpolar.

Codificar en cinco elementos

En F₅, n=4, k=2, puntos 0,1,2,3 y p(x)=1+2x.

  1. Primeros

    p(0)=1 y p(1)=3.
  2. Reducir

    p(2)=5≡0; p(3)=7≡2.
  3. Palabra

    (1,3,0,2).

    Distancia mínima 4−2+1=3; corrige un error.
Resultado

Las alturas del dibujo son residuos, no valores de una curva real.

Lo comprobamos

Cada operación se reduce módulo cinco.

Recuperar dos coeficientes sin errores

Sabemos p(0)=1 y p(2)=0, con grado menor que dos.

  1. Forma

    p(x)=a+bx; la primera evaluación da a=1.
  2. Segunda

    1+2b=0, luego 2b=4 en F₅.
  3. Resolver

    Multiplicamos por tres: b=12≡2.

    Recuperamos 1+2x.

Resultado

Dos puntos distintos fijan este polinomio lineal.

Lo comprobamos

Con errores de posición desconocida no basta interpolar dos valores cualquiera.

7. Berlekamp–Welch oculta los errores con un localizador

Para corregir hasta t errores con n≥k+2t, buscamos un polinomio E no nulo de grado a lo sumo t y Q de grado menor que k+t, tales que Q(\alpha_i)=r_iE(\alpha_i) en cada posición. Si E se anula donde hubo error y Q=pE, las ecuaciones se cumplen. Son lineales en los coeficientes desconocidos.

Toda solución no nula tiene E≠0: si E fuera cero, Q tendría n raíces y grado menor que n. Además Q−pE tiene grado menor que k+t y al menos n−t≥k+t raíces intactas; por eso es cero. Dividimos Q/E, verificamos grado menor que k y distancia a r como máximo t.

Fuera de las hipótesis, la verificación puede rechazar.

Un error en la segunda evaluación

Se recibe r=(1,4,0,2) en lugar de (1,3,0,2).

  1. Localizar

    El punto erróneo es uno.

    E(x)=x−1.
  2. Multiplicar

    Q=(1+2x)(x−1)=2x²+4x+4 en F₅.
  3. Comprobar

    E en 0,1,2,3 vale 4,0,1,2. Q vale 4,0,0,4, igual a r·E componente a componente.

Resultado

El factor cero elimina la evaluación equivocada de las ecuaciones.

Lo comprobamos

El decodificador busca E y Q; aquí mostramos la solución para entenderla.

Terminar y verificar

Tenemos E=x−1 y Q=2x²+4x+4.

  1. División

    Q/E=1+2x, sin resto en F₅.
  2. Grado

    Es uno, menor que k=2.
  3. Reevaluar

    (1,3,0,2) difiere de r en una posición; cumple t=1.
Resultado

La palabra reconstruida pasa ambas comprobaciones.

Lo comprobamos

La cota es floor((n−k)/2), no un redondeo hacia arriba.

8. La estructura cíclica permite construir códigos con polinomios

Asociamos (c₀,…,cₙ₋₁) a c₀+c₁x+…+cₙ₋₁xⁿ⁻¹. Multiplicar por x módulo xⁿ−1 gira las posiciones. Un código lineal cíclico es un ideal de F_{q}[x]/(xⁿ−1), generado por un divisor mónico g de xⁿ−1; su dimensión es n−grado(g).

En BCH se elige n coprimo con q y una raíz n-ésima primitiva α en una extensión. Exigir que g tenga como raíces αᵇ,…,αᵇ⁺ᵟ⁻² da distancia mínima al menos δ. Las raíces consecutivas y el cuerpo son hipótesis concretas. Esta es una construcción por raíces; la presentación por evaluaciones de Reed–Solomon tiene otro punto de partida.

Un generador binario

n=7 y g=x³+x+1 en F₂.

  1. Divisor

    g·(x⁴+x²+x+1)=x⁷+1=x⁷−1 en F₂.
  2. Mensajes

    Polinomios de grado menor que cuatro: 2⁴=16.
  3. Dimensión

    7−3=4.

    Al enumerar los quince productos no nulos, el menor peso es tres.

Resultado

Obtenemos un código [7,4,3] binario.

Lo comprobamos

La dimensión no basta para deducir la distancia: aquí se comprueba por enumeración finita.

Ver la rotación

La palabra de g es (1,1,0,1,0,0,0).

  1. Multiplicar

    xg=x⁴+x²+x.
  2. Palabra

    (0,1,1,0,1,0,0), aún múltiplo de g.

  3. Última posición

    Si un término llega a x⁷, se reemplaza por uno: vuelve al inicio.

Resultado

La reducción módulo x⁷−1 produce el giro circular.

Lo comprobamos

No es desplazar y descartar la última coordenada.

9. La garantía uniforme y el comportamiento bajo ruido se estudian por separado

La distancia trata el peor patrón con un número acotado de cambios. Un modelo probabilístico asigna probabilidades a patrones y permite calcular una tasa de error promedio. El decodificador y la regla de decisión también deben especificarse.

Para repetición triple con cambios independientes de probabilidad p, mayoría falla con dos o tres cambios: 3p²(1−p)+p³. La garantía de un error es absoluta bajo ese límite; la fórmula probabilística admite cualquier cantidad de cambios y calcula cuánto pesan los fallos.

Dos relatos para un mismo recibido

Llega 110 al código de repetición.

  1. Si se envió 111

    Hubo un cambio y mayoría acierta.

  2. Si se envió 000

    Hubo dos cambios y mayoría falla.

  3. Decisión

    La palabra recibida sola no permite distinguir esos relatos con certeza.

Resultado

Decodificar no revela retrospectivamente el error real.

Lo comprobamos

El modelo de ruido puede hacer un relato más probable, no imposible el otro.

Garantía frente a frecuencia

Con p=1/10, la mayoría tiene error 0,028.

  1. Garantía

    Corrige todos los patrones de peso cero o uno.

  2. Probabilidad

    Los patrones de peso dos o tres suman 0,028.

  3. Tasa

    Solo transmite un bit por tres posiciones: R=1/3.

Resultado

Distancia, error y tasa son tres números diferentes.

Lo comprobamos

Comparar códigos exige declarar cuál de ellos se quiere mejorar.

Ahora lo resolvemos de principio a fin.

EJEMPLO RESUELTO 1

Distancia concreta

Calcula la distancia entre 10110 y 10001.

  1. Alinear

    Escribimos 10110 y 10001 con cinco posiciones.

  2. Primera y segunda

    Uno coincide con uno; cero con cero.

  3. Tercera

    Uno frente a cero: una diferencia.

  4. Cuarta

    Uno frente a cero: segunda diferencia.

  5. Quinta

    Cero frente a uno: tercera diferencia; d=3.
  6. Comprobar

    Hamming cuenta posiciones y no el valor decimal de una resta.

Resultado

La distancia es 3.

Lo comprobamos

Las posiciones 1 y 2 coinciden.

EJEMPLO RESUELTO 2

Repetición triple

Decodifica 101 en el código {000,111} por mínima distancia.

  1. Código

    Solo 000 y 111 son palabras válidas.

  2. Recibido

    La palabra es 101.

  3. Distancia a cero

    Difieren primera y tercera: d(101,000)=2.
  4. Distancia a uno

    Solo difiere la segunda: d(101,111)=1.
  5. Elegir

    La mínima distancia selecciona 111.

  6. Garantía

    Es correcta si hubo como máximo un error; con dos o más no sabemos qué se envió.

Resultado

Se decodifica como 111.

Lo comprobamos

Está dentro del radio de corrección de un error.

Los símbolos que hemos usado

F_q
Cuerpo finito de q elementos, con q potencia de primo.
Código C⊆F_qⁿ
Conjunto de palabras permitidas de longitud n.
Peso / distancia de Hamming
Número de posiciones no nulas / número de posiciones diferentes.
[n,k,d]_q
Longitud, dimensión lineal y distancia mínima de un código sobre F_q.
G / H
Matriz generadora / matriz de comprobación de paridad.
Síndrome Hr
Comprobaciones de paridad de la palabra recibida r.
Decodificación
Elección del mensaje o palabra original estimada a partir de la recibida.

Ahora te toca a ti.

Tienes cinco ejercicios. Inténtalos; las pistas te ayudan si te atascas.

Practicar este tema →

Para ampliar