Codificación y teoría de la información

Los códigos de Hamming y el nacimiento de la corrección de errores

Harto de que su ordenador se colgara los fines de semana, Richard Hamming inventó códigos que corrigen sus propios errores. La idea detrás de la fiabilidad moderna.

Los códigos de Hamming fueron la primera forma práctica de no solo detectar errores, sino corregirlos automáticamente — nacidos de la frustración de un ingeniero un fin de semana con una máquina que no dejaba de abandonarlo. Convirtieron la corrección de errores de un deseo en una técnica que funciona.

A finales de los años cuarenta, los ordenadores eran del tamaño de una habitación y temperamentales, y Richard Hamming estaba harto. Su código no dejaba de morir por la noche porque un solo bit invertido detenía toda la máquina. De esa molestia surgió una idea que remodeló la informática: una forma de disponer bits extra para que un ordenador pudiera encontrar y arreglar sus propios errores. Aquí está cómo funciona, sin matemáticas pesadas. 🐾

¿Quién fue Richard Hamming y por qué le importaba?

Richard Hamming era un matemático que trabajaba junto a los pioneros de la teoría de la información. Ejecutaba sus programas en los primeros ordenadores de procesamiento por lotes que detectaban un error, se rendían y pasaban al siguiente trabajo — dejando que sus ejecuciones de fin de semana fallaran una y otra vez sin nada que mostrar.

Su famosa queja era más o menos esta: "Si la máquina puede detectar un error, ¿por qué no puede localizar dónde está el error y corregirlo?". Esa pregunta — ¿por qué solo notar un error cuando podrías arreglarlo? — lo impulsó a inventar los códigos que ahora llevan su nombre, publicados en 1950. Fue un punto de inflexión: el salto de la detección de errores a la corrección de errores.

¿Qué problema resuelven los códigos de Hamming?

Un solo bit de paridad puede decirte que un bit se invirtió en algún lugar de un grupo, pero no cuál. Eso es útil para la detección, inútil para la reparación. La intuición de Hamming fue usar varios bits de paridad, cada uno vigilando un subconjunto solapado de los datos, de modo que juntos no solo dicen "ocurrió un error" — deletrean su ubicación exacta.

Una vez que sabes con precisión qué bit está mal, corregirlo es trivial: en binario, un bit erróneo tiene una sola alternativa, así que simplemente lo vuelves a invertir. El genio está por completo en la disposición que revela la posición.

Un bit de paridad hace sonar una alarma. Varios bits de paridad solapados, colocados justo así, actúan como coordenadas — apuntan directamente al bit roto para que pueda volver a invertirse.

¿Cómo funciona la colocación de los bits de paridad?

Los códigos de Hamming intercalan bits de paridad entre los bits de datos en posiciones específicas — las posiciones que son potencias de dos (1, 2, 4, 8, y así sucesivamente). Cada bit de paridad es responsable de un patrón concreto de posiciones, comprobando si el número de unos entre los bits que vigila es par.

Como cada posición de datos está vigilada por una combinación única de bits de paridad, un solo bit invertido desajusta un conjunto único de comprobaciones de paridad. Lee qué comprobaciones fallaron, interprétalo como un número binario, y obtienes la posición exacta del error. Es como un conjunto de guardias solapados donde el grupo concreto que da la alarma identifica el asiento del culpable.

El papel de las potencias de dos

Las posiciones de potencia de dos no son arbitrarias — son lo que hace que el patrón de comprobaciones fallidas se lea directamente como el número de posición del error. Esta estructura pulcra es la razón por la que los códigos de Hamming son tan elegantes de implementar, y se remonta a la forma en que todos los datos digitales se apoyan en las potencias de dos en binario.

¿Qué es Hamming(7,4)?

El ejemplo más famoso es el código Hamming(7,4). Los números significan: por cada 4 bits de datos reales, transmites 7 bits en total — los 4 bits de datos más 3 bits de paridad. Esos 3 bits extra son exactamente suficientes para corregir cualquier error de un solo bit entre los 7.

CantidadHamming(7,4)
Bits de datos4
Bits de paridad3
Total de bits transmitidos7
Errores de un solo bit que puede corregir1

Tres bits de paridad dan 23 = 8 patrones posibles de acierto/fallo. Un patrón significa "sin error"; los otros siete apuntan cada uno a una de las siete posiciones de bit. Es un ajuste bellamente exacto — sin desperdicio, sin ambigüedad para un solo error.

¿Cuáles son los límites de un código de Hamming?

Un código de Hamming básico corrige un error por bloque. Si dos bits se invierten en el mismo bloque, el código se confunde — puede "corregir" el bit equivocado y empeorar las cosas, porque su truco de coordenadas asume que hay un solo error. Hay una extensión común que añade un bit de paridad más para que el código pueda corregir un error y al menos detectar que ocurrieron dos, pero corregir múltiples errores necesita esquemas más potentes.

Este límite es exactamente por qué se desarrollaron códigos posteriores para condiciones más duras. Cuando los datos pueden sufrir ráfagas de muchos errores a la vez — un arañazo profundo en un disco, una mancha que cruza un código QR — los ingenieros recurren a los códigos Reed–Solomon, que corrigen múltiples errores por bloque. Los códigos de Hamming brillan donde los errores son raros y aislados, como dentro de la memoria de un ordenador.

¿Cuál es el legado de los códigos de Hamming?

Los códigos de Hamming demostraron que los datos autorreparables no eran solo teóricamente posibles, sino prácticos, y eso remodeló el campo. Todo esquema de corrección de errores que siguió — incluidos los de tu teléfono, tu Wi-Fi y cada código QR que escaneas — se construye sobre el cimiento que puso Hamming: añade redundancia estructurada, y un mensaje puede curarse solo.

Las variantes de los códigos de Hamming se usan todavía hoy, especialmente en la memoria de ordenador con corrección de errores (ECC RAM) donde las inversiones de un solo bit por rayos cósmicos o ruido eléctrico son la principal amenaza. De forma más amplia, la testaruda pregunta de Hamming — "¿por qué detectar cuando podrías corregir?" — marcó la agenda de la comunicación digital fiable. Se sitúa justo al lado de la fundación por parte de Shannon de la teoría de la información como piedra angular de la era digital.

Hay también una lección humana en la historia. Hamming no se propuso fundar un campo; simplemente no estaba dispuesto a aceptar una máquina que desperdiciaba sus fines de semana cuando claramente tenía suficiente información para arreglarse a sí misma. Esa negativa a tolerar una ineficiencia evidente es un tema recurrente en los avances de la ingeniería, y vale la pena recordarlo la próxima vez que algo "funcione por los pelos". La brecha entre detectar un problema y resolverlo suele ser más pequeña de lo que parece — solo tienes que disponer la información con suficiente ingenio para cerrarla. Cada código QR que se autorrepara y escaneas es un pequeño monumento a esa idea.

Los códigos de Hamming en una frase

Al colocar varios bits de paridad solapados en posiciones de potencia de dos, los códigos de Hamming convierten un vago "algo va mal" en la dirección exacta de un bit invertido, haciendo automática la corrección de un solo error — el avance que puso en marcha la corrección de errores práctica.

¿Quieres ver la corrección de errores moderna en acción? Puedes crear un código QR gratis con QR Puppy — lleva su propia redundancia para seguir siendo legible incluso cuando está rozado.

Preguntas frecuentes

¿Qué inspiró a Richard Hamming a inventar sus códigos?

La frustración con los primeros ordenadores por lotes que detectaban un error y abandonaban sus ejecuciones de programa de fin de semana. Razonó que si la máquina podía saber que había ocurrido un error, debería poder localizarlo y arreglarlo — y encontró una forma de hacerlo realidad.

¿Qué significa el "(7,4)" en Hamming(7,4)?

Significa que cada bloque lleva 4 bits de datos dentro de 7 bits transmitidos en total, siendo los 3 extra bits de paridad. Esos 3 bits de paridad son exactamente suficientes para corregir cualquier bit invertido entre los 7.

¿Cuántos errores puede corregir un código de Hamming?

Un código de Hamming básico corrige un error de un solo bit por bloque. Si dos bits se invierten en el mismo bloque puede engañarse, por lo que las aplicaciones con errores en ráfaga usan códigos más potentes como Reed–Solomon.

¿Por qué se colocan los bits de paridad en posiciones de potencia de dos?

Esa colocación hace que el patrón de comprobaciones de paridad fallidas se lea directamente como el número de posición binario del bit invertido. Es lo que permite al código señalar la ubicación exacta del error de forma tan limpia.

¿Se siguen usando los códigos de Hamming hoy?

Sí, especialmente en la memoria de ordenador con corrección de errores, donde las inversiones aisladas de un solo bit son la principal preocupación. Su idea central también sustenta toda la familia de códigos de corrección de errores usados en la comunicación y el almacenamiento modernos.

Crea un código QR de forma honesta 🐾

Gratis para siempre, sin rastreo, sin caducidad — generado en tu propio navegador.

🎨 Crear un código QR →