código de Hamming
Inglés: Hamming code
Cualquiera de una familia de códigos lineales de corrección de errores que generalizan el código Hamming(7,4) inventado por Richard Hamming en 1950.
Código Hamming: detección de errores integrada en los propios datos
Un código Hamming es un método para codificar datos con bits adicionales de modo que los errores de un solo bit puedan detectarse y corregirse automáticamente. La variante práctica más común, Hamming(7,4), toma 4 bits de datos reales y añade 3 bits de paridad, produciendo una palabra de código de 7 bits. Cuando ese bloque de 7 bits viaja a través de componentes electrónicos o almacenamiento ruidosos, cualquier cambio de un solo bit puede ser localizado con precisión por el receptor y revertido a su estado original, todo ello sin solicitar una retransmisión.
La elegancia de los códigos Hamming reside en su estructura sistemática. Cada bit de paridad cubre un subconjunto específico de los bits de datos, posicionados en potencias de dos (posiciones 1, 2, 4 en una palabra de 7 bits). Al verificar qué bits de paridad fallan, el decodificador calcula una dirección binaria que apunta directamente al bit volteado. Por eso, Hamming(7,4) puede corregir cualquier error único en un bloque de 7 bits: los tres bits de paridad crean 2^3 = 8 posibles valores de síndrome, suficientes para identificar cualquiera de las siete posiciones más un estado sin error.
Los códigos Hamming extendidos añaden un bit de paridad más a toda la palabra de código, lo que permite la detección (pero no la corrección) de errores de doble bit. Hamming(8,4) es la versión extendida de Hamming(7,4). Variantes más grandes como Hamming(15,11) y Hamming(31,26) empaquetan más bits de datos con la misma capacidad de corrección, mejorando la eficiencia; siguen el patrón de que cualquier código Hamming(2^m - 1, 2^m - m - 1) puede corregir errores únicos usando m bits de paridad.
Los códigos Hamming se utilizan en la memoria de las primeras computadoras (la corrección de errores de un solo bit en la DRAM era común en sistemas antiguos), equipos de telecomunicaciones y sistemas embebidos donde la sobrecarga computacional para la decodificación es mínima. Son insuficientes para canales de alto ruido donde predominan los errores de múltiples bits, dando paso a familias más robustas como los códigos Reed-Solomon o LDPC. Sin embargo, para el almacenamiento y enlaces de corta distancia con bajas tasas de error, los códigos Hamming siguen siendo eficientes porque su sobrecarga es modesta y la decodificación es rápida.
La compensación es rígida: la potencia de corrección está ligada a la longitud del código. No se pueden simplemente añadir más bits de paridad a un Hamming(7,4) para corregir errores dobles; se debe cambiar a una familia diferente. Esto limita la flexibilidad para adaptarse a las condiciones cambiantes del canal. Las aplicaciones modernas a menudo prefieren los códigos turbo o los códigos convolucionales por su adaptabilidad, pero los códigos Hamming siguen siendo la piedra angular pedagógica para la corrección de errores y continúan apareciendo en sistemas heredados y diseños embebidos críticos para la seguridad donde la simplicidad y la previsibilidad son importantes.
Fuentes
- Fuente de la definiciónWiktionary