La Matriz de Verificación de Paridad
Todo código lineal sobre GF(2) — el cuerpo con solo 0 y 1, aritmética módulo 2 — tiene una matriz de verificación de paridad H. Para el código de Hamming (7,4), H es una matriz 3×7 cuyas columnas son las representaciones binarias de 1 hasta 7:
``
H = [ 0 0 0 1 1 1 1 ] ← bit 2 del número de posición
[ 0 1 1 0 0 1 1 ] ← bit 1 del número de posición
[ 1 0 1 0 1 0 1 ] ← bit 0 del número de posición
``
La columna j de H es la representación binaria de j. Por eso el síndrome s = Hr nombra directamente la posición del error.
El mapa H: GF(2)^7 → GF(2)^3 es un mapa lineal (multiplicación de matrices módulo 2). Su núcleo ker(H) = { r : Hr = 0 } es exactamente el conjunto de palabras código válidas.
Conteo de dimensiones: dim(ker H) = 7 − rank(H) = 7 − 3 = 4. Así que hay 2^4 = 16 palabras código. Esto confirma 4 bits de mensaje.
El Código como un Núcleo
Una palabra c ∈ {0,1}^7 es una palabra código válida si y solo si Hc = 0 (módulo 2). Esta es la ecuación definitoria de un código lineal.
Ejemplo: c = 0011001. Verifica Hc módulo 2:
``
Fila 1: 0·0+0·0+0·1+1·1+1·0+1·0+1·1 = 0+0+0+1+0+0+1 = 2 ≡ 0
Fila 2: 0·0+1·0+1·1+0·1+0·0+1·0+1·1 = 0+0+1+0+0+0+1 = 2 ≡ 0
Fila 3: 1·0+0·0+1·1+0·1+1·0+0·0+1·1 = 0+0+1+0+0+0+1 = 2 ≡ 0
``
Hc = 000. Así que 0011001 es una palabra código válida.
Clases Laterales del Código
Las palabras código C = ker(H) forman un subgrupo de GF(2)^7. Toda otra palabra en GF(2)^7 pertenece a exactamente una clase lateral de C.
Definición de clase lateral: para cualquier palabra e, la clase lateral C + e = { c + e : c ∈ C }.
Dos palabras pertenecen a la misma clase lateral si y solo si su diferencia es una palabra código — equivalentemente, si tienen el mismo síndrome: H(r₁) = H(r₂) si y solo si H(r₁ − r₂) = 0 si y solo si r₁ − r₂ ∈ C.
El mapa de síndrome H induce un isomorfismo GF(2)^7 / C ≅ GF(2)^3. Con |C| = 16 y |GF(2)^7| = 128: hay exactamente 128/16 = 8 clases laterales, una para cada valor de síndrome en GF(2)^3.
Arreglo estándar: lista un líder de clase lateral por clase lateral — la palabra de peso de Hamming mínimo en esa clase lateral. Para corrección de error simple, cada síndrome no cero corresponde únicamente a un patrón de error de peso-1 (un único 1 en una de 7 posiciones). Por eso 7 patrones de error + 1 sin error = 8 clases laterales = 2^3.
Descodificación vía Líderes de Clase Lateral
Algoritmo de descodificación: recibe r → computa s = Hr → busca el líder de clase lateral e_s (el patrón de error canónico para el síndrome s) → produce r − e_s = r + e_s (igual en GF(2)).
Para el código (7,4), los 8 líderes de clase lateral son: 0000000 (síndrome 000), 1000000 (síndrome 001), 0100000 (síndrome 010), 0010000 (síndrome 011), 0001000 (síndrome 100), 0000100 (síndrome 101), 0000010 (síndrome 110), 0000001 (síndrome 111).
Por Qué (7,4) es Perfecto
Un código C ⊆ GF(2)^n con distancia mínima 3 corrige todos los errores simples. Cada palabra código c tiene una bola de Hamming de radio 1: el centro c & sus n vecinos inmediatos (patrones de error de peso-1). Volumen de bola = 1 + n.
Para n = 7: volumen de bola = 8. Con 16 palabras código: 16 × 8 = 128 = 2^7. Las bolas teselan GF(2)^7 perfectamente — ningún punto sin cubrir, ningún punto cubierto dos veces.
Esta es la definición de un código perfecto: M · Vol(n, t) = 2^n. Los códigos perfectos binarios correctores de error simple (t=1) existen solo para parámetros específicos: (7,4), (15,11), (23,12) (el código de Golay binario), & trivialmente n = 2^r − 1, k = n − r para cualquier r ≥ 2.
La geometría: GF(2)^7 se descompone en exactamente 8 órbitas bajo la acción del código como una partición de clase lateral. Cada órbita es una clase lateral; cada clase lateral tiene un síndrome único. El mapa de síndrome H es una biyección desde clases laterales hacia GF(2)^3.
El Argumento de Conteo
Para un código perfecto binario corrector de error simple en n = 2^r − 1 bits con r bits de verificación de paridad:
- Número de palabras código: M = 2^k = 2^(n−r)
- Volumen de bola: Vol(n, 1) = 1 + n = 1 + 2^r − 1 = 2^r
- Total cubierto: M × Vol = 2^(n−r) × 2^r = 2^n ✓
El hecho de que Vol(n,1) = 2^r cuando n = 2^r − 1 es lo que hace posibles los códigos perfectos en estas longitudes. En otras longitudes, 1 + n no es una potencia de 2, & los códigos binarios perfectos correctores de error simple no pueden existir.
Matriz Generadora & Dualidad
La matriz de verificación de paridad H define el código vía el núcleo. Su dual: una matriz generadora G cuyas filas forman una base para ker(H).
Para el código (7,4): G es una matriz 4×7. Cualquier palabra código c = mG para algún vector de mensaje m ∈ GF(2)^4. Las filas de G abarcan el código; las filas de H abarcan el espacio nulo del código.
Relación clave: HG^T = 0 (módulo 2). Toda fila de G está en ker(H); toda fila de H aniquila toda fila de G.
Código dual: C⊥ = ker(G^T) = image(H^T). Para el código (7,4), el dual es un código (7,3) — un código [7,3,4] con distancia mínima 4.
La geometría de dualidad: C & C⊥ son subespacios ortogonales de GF(2)^7. El espacio completo se descompone en el código, sus clases laterales, & la estructura dual que el mapa de síndrome codifica.