Bell Labs, 1947
Richard Hamming se unió a Bell Telephone Laboratories en 1946. Las computadoras de relés allí funcionaban solo entre semana, cuando los técnicos podían reiniciarlas después de errores. Los fines de semana, las máquinas se detenían cuando algo salía mal — dejando trabajos en cola hasta el lunes.
Hamming estaba furioso. 'Si la máquina puede detectar un error', pensó, '¿por qué no puede localizarlo y corregirlo?' Esta frustración, combinada con un profundo conocimiento de la aritmética binaria y las verificaciones de paridad, sentó las bases.
Primer Concepto: Códigos Rectangulares
La primera idea de Hamming: organizar los bits de mensaje en un rectángulo m×n, agregar una verificación de paridad a cada fila y cada columna. Un error único produce exactamente una verificación de fila fallida y una verificación de columna fallida. Su intersección nombra la posición del error.
Razón de redundancia: (m+1)(n+1) / mn. El cálculo te dice que un cuadrado minimiza esto para un tamaño de mensaje fijo. Pero cuando m y n crecen, un error doble es más probable — un juicio de ingeniería sin respuesta universal.
Minimizando la Redundancia Rectangular
Un rectángulo de 4×4 lleva 16 bits de mensaje con 4 verificaciones de fila y 4 verificaciones de columna, más 1 bit de paridad de esquina = 9 bits de verificación para 16 bits de mensaje.
Razón de redundancia: (m+1)(n+1) / mn = 25/16 ≈ 1.56.
Para un rectángulo de 10×10: 100 bits de mensaje, 121 bits totales, redundancia ≈ 1.21.
El Síndrome como un Número Binario
Unas pocas semanas después del concepto del código rectangular, Hamming iba hacia Nueva York a través del campo de Nueva Jersey, revisando mentalmente sus éxitos. El código triangular se le ocurrió — mejor redundancia. Luego el cubo. Luego 4-dimensional, 5-dimensional...
Cada dimensión extra mejoró la redundancia. Un hipercubo de lado 2 en n dimensiones usa solo n+1 verificaciones de paridad para 2^n vértices. ¿Pero era esto óptimo?
El Argumento de Conteo
n+1 bits de paridad producen un síndrome: un número binario de (n+1) bits. Ese síndrome necesita identificar 2^n + 1 resultados distintos: cada una de las 2^n posiciones de error, más el resultado especial 'sin error'.
2^(n+1) = 2·2^n — casi suficiente. Desviado por un factor de 2. Hamming archivó el problema.
El Concepto Clave
Más tarde, Hamming regresó con una idea nueva: usar el síndrome mismo como un número binario que nombre la posición del error. Posición 1 = binario 001, posición 2 = binario 010, posición 3 = binario 011, etc. Reserva todos los ceros para 'sin error'.
Esto transforma el síndrome de una salida de verificaciones de paridad en una dirección. Las verificaciones de paridad están diseñadas para producir exactamente la dirección correcta cuando cualquier bit único se invierte.
Diseñando el Código (7,4)
Para un código de 7 bits (3 bits de paridad, 4 bits de mensaje), las posiciones 1 a 7 en binario son: 001, 010, 011, 100, 101, 110, 111.
La verificación de paridad 1 cubre posiciones donde bit 0 = 1: posiciones 1, 3, 5, 7.
La verificación de paridad 2 cubre posiciones donde bit 1 = 1: posiciones 2, 3, 6, 7.
La verificación de paridad 3 cubre posiciones donde bit 2 = 1: posiciones 4, 5, 6, 7.
Los bits de paridad ocupan posiciones de potencia de 2: 1, 2, 4. Los bits de mensaje ocupan el resto: 3, 5, 6, 7.
Si el bit 6 se invierte, las verificaciones de paridad 2 y 3 fallan (110 en binario = 6). El síndrome lee 110 = 6. Invierte la posición 6. Listo.
Corrección de Error Único, Detección de Error Doble
El código Hamming (7,4) corrige errores únicos. ¿Pero qué pasa si dos bits se invierten? Sin protección adicional, el decodificador aplica la regla del síndrome y 'corrige' la palabra clave al mensaje incorrecto — una corrección incorrecta silenciosa.
SECDED: Un Bit de Paridad Más
Agrega un único bit de paridad p₀ cubriendo toda la palabra clave (todos los 7 bits). Ahora el síndrome tiene 4 entradas: las 3 verificaciones originales más p₀.
``
old syndrome nuevo p₀ significado
000 0 correcto
000 1 error solo en p₀
xxx 1 error único, el síndrome anterior lo nombra
xxx 0 error doble — señalízalo
``
Los cuatro casos son exhaustivos. Un error doble invierte dos bits: el síndrome anterior no leerá 000 (ambos bits juntos corrompen dos de sus verificaciones), pero p₀ se invierte dos veces y vuelve a 0. El patrón xxx + 0 es inconfundible.
Por Qué SECDED Funciona
La regla SECDED explota la estructura modular de la paridad. Con paridad par, cualquier inversión única cambia p₀. Cualquier inversión doble deja p₀ sin cambios. Entonces p₀ cuenta errores módulo 2.
La Imagen Geométrica
Hamming llegó al mismo lugar desde una dirección diferente: geometría analítica. Representa cada cadena de n bits como un vértice de un hipercubo n-dimensional. Un volteo de bit único mueve un punto una longitud de arista a lo largo de un eje. Dos volteos: dos aristas. La métrica es distancia de Hamming.
Define una bola de Hamming de radio t alrededor de una palabra clave c: todos los puntos dentro de t volteos de bit de c. Para corrección de error único, t = 1.
Condición para la corrección de error único: las bolas de radio 1 alrededor de cada par de palabras clave distintas no deben superponerse. Si se superponen, una palabra recibida en la superposición podría pertenecer a cualquiera de las palabras clave y el decodificador falla.
Esto se traduce directamente en distancia mínima: dos bolas de radio 1 no se superponen si y solo si las palabras clave están al menos 3 separadas (d_min ≥ 3).
El código (7,4) logra d_min = 3. El límite de Hamming: 2^7 / (1 + 7) = 16 = 2^4. Exactamente 16 palabras clave. Un código perfecto: las 16 bolas de radio 1 teselan {0,1}^7 sin espacios ni superposiciones.
Juicios de Ingeniería
Hamming fue explícito: los códigos correctores de errores implican juicios de ingeniería, no pura matemática.
Longitud del mensaje: los mensajes más largos permiten una codificación más eficiente (bits de paridad log n para n bits de mensaje). Pero los mensajes más largos también acumulan más ruido, aumentando el riesgo de que un error doble se deslice como una corrección única falsa.
Nivel de corrección vs. detección: intercambiar una corrección de error por dos detecciones de error adicionales. La división óptima depende de las características de ruido del canal.
Valor del mantenimiento en campo: a medida que el equipo se vuelve más complejo, los técnicos de campo no pueden diagnosticar cada falla desde primeros principios. Un sistema de autodiagnóstico reduce dramáticamente la habilidad requerida para el mantenimiento. Hamming llamó a esto uno de los beneficios más importantes, a menudo más importante que la ganancia de confiabilidad pura.
Estilo: La Suerte Favorece a la Mente Preparada
Hamming cerró el Capítulo 12 con un desafío directo. Describió el descubrimiento como requiriendo tres a seis meses de trabajo, principalmente en momentos extraños mientras realizaba sus deberes principales en Bell Labs.
Identificó tres cosas que lo hicieron posible:
1. Preparación: familiaridad profunda con las verificaciones de paridad, la aritmética binaria, y la teoría de grupos, antes de que apareciera el problema.
2. Revisión de éxitos: reproducir habitualmente soluciones pasadas para interiorizar su estilo. El código triangular se le ocurrió mientras revisaba mentalmente el código rectangular en un viaje.
3. No conformarse con 'se ve bien': se quemó una vez aceptando una optimalidad aparente. Presionó hasta que pudo probar que el código era lo mejor.