Lección 5 de 11
Errores y borrones: cuánto puede corregir un código
Distingue un error de un borrón, aprende cuántos de cada uno corrige un código según su distancia mínima y conoce las cotas de Singleton y de Hamming.
Borrador: pendiente de que lo revise el autor. Esta página no aparece en Google.
Al terminar sabrás:
- Distinguir un error de un borrón y saber por qué el borrón es más fácil de corregir
- Calcular cuántos errores se detectan y se corrigen, y cuántos borrones, a partir de d
- Usar la condición 2e + b ≤ d − 1 cuando hay errores y borrones a la vez
- Aplicar las cotas de Singleton y de Hamming y reconocer un código perfecto
Si sabes multiplicar matrices, resolver un sistema de ecuaciones lineales y operar con polinomios (sumar, multiplicar, dividir), puedes seguirlo. Lo demás (aritmética módulo 2, subespacios, cuerpos finitos) se explica sobre la marcha.
En la lección anterior aprendiste a codificar con y a comprobar con si una palabra es del código. Falta saber cuánto daño aguanta un código. Esa es la pregunta de hoy, y la respuesta cabe en una sola cifra: la distancia mínima . Es lo que permite que un QR se lea aunque lo hayas manchado de café, o que un CD suene con un arañazo.
La idea
Imagina que cada palabra del código es un punto y que a su alrededor dibujas una bola: todas las palabras que están a distancia de Hamming menor o igual que de ella. Si las bolas de dos palabras distintas no se tocan, cualquier palabra recibida cae como mucho en una bola, y sabes cuál era la original. Eso es corregir.
El daño puede ser de dos tipos:
- Un error: un símbolo ha cambiado y no sabes cuál. El 1 que ves podría ser un 0 estropeado.
- Un borrón (también se dice borrado): un símbolo se ha perdido, pero sabes en qué posición. Ves «?» en lugar de un valor.
El borrón es más fácil de reparar porque ya has hecho la mitad del trabajo: localizar el fallo. Con un error hay que averiguar dónde y cuánto vale. Por eso un código corrige el doble de borrones que de errores, más o menos.
Cuánto se detecta y cuánto se corrige
Sea un código de distancia mínima . Dos palabras código distintas se diferencian al menos en posiciones. De ahí salen todas las cifras.
- Detectar errores. Si hay entre 1 y errores, la palabra recibida no puede ser otra palabra código (estaría a distancia menor que de la enviada, pero no a distancia 0). Así que se detectan errores.
- Corregir errores. Las bolas de radio alrededor de dos palabras código no se cortan si . Por tanto se corrigen errores (⌊x⌋ es la parte entera, repasada en la lección 1).
- Corregir borrones. Borra posiciones de dos palabras código distintas: como difieren en al menos posiciones, siguen difiriendo en alguna de las que quedan. Cada palabra queda identificada por sus símbolos visibles, y se corrigen borrones.
- Todo a la vez. Con errores y borrones se corrige siempre que
Cada error cuesta el doble que un borrón: hay que localizarlo y además corregirlo.
Por ejemplo, con puedes corregir 2 errores, o 4 borrones, o 1 error y 2 borrones ().
Dos cotas: lo máximo que se puede pedir
Un buen código tiene grande y también grande (mucha información). Pero ambas cosas compiten. Si alguien te propone un código binario , ¿merece la pena buscarlo? Dos límites clásicos responden en un minuto (es el ejercicio 3).
Cota de Singleton. Para todo código se cumple
La razón de una línea: si borras posiciones, dos palabras código distintas siguen diferenciándose en alguno de los símbolos que quedan. Así que esos símbolos distinguen las palabras, y con símbolos solo hay posibilidades: hace falta .
Los códigos que alcanzan la igualdad se llaman MDS (de maximum distance separable): son los que mejor reparten la redundancia. Los de repetición y de paridad lo son. Los Reed-Solomon también lo serán, como verás en la lección 9.
Cota de Hamming (empaquetamiento de esferas). Una bola de radio en contiene
palabras: la propia palabra, las que difieren en una posición, y así hasta . Aquí es el número de formas de elegir las posiciones dañadas, y el de darles un valor equivocado. Las bolas no se solapan y caben todas en el espacio de palabras, luego
Cuando se da la igualdad, las bolas llenan el espacio sin dejar huecos: el código es perfecto. Toda palabra posible está a distancia de exactamente una palabra código.
Ejemplo resuelto
Usamos el Hamming de siempre, con
Qué corrige. Como : detecta errores, corrige error y corrige borrones. Mezclas posibles: , es decir, 1 error o hasta 2 borrones.
Es perfecto. Con , , : , y
Hay igualdad. Cada una de las 128 palabras de es una palabra código o está a distancia 1 de una sola. No sobra ningún hueco: por eso el síndrome de la próxima lección siempre apunta a algo.
No es MDS. Singleton da , pero . El Hamming es perfecto en el sentido de Hamming, pero no alcanza Singleton. Ambas cotas miden cosas distintas.
Corregir 2 borrones. Enviamos y recibimos : se han borrado las posiciones 1 y 5. Llamamos y a lo desconocido y usamos fila a fila, sumando módulo 2:
- Fila 2: , luego .
- Fila 1: , luego .
- Fila 3 (comprobación): . Correcto.
Recuperamos . Con dos borrones cualesquiera funciona siempre: dos palabras código distintas difieren en al menos posiciones, así que no pueden coincidir en las 5 que quedan visibles.
Con 3 borrones ya no. Si se borran las posiciones 1, 2 y 3, lo visible es . Las columnas 1, 2 y 3 de suman cero: . Por tanto es palabra código, y sumándola a sale otra palabra código, , que coincide con en todo lo visible. No hay forma de elegir entre las dos: el código, con , no puede deshacer más de borrones en general.
Herramienta: el QR
Un código QR protege sus datos con un código Reed-Solomon (lo verás en la lección 9) y deja elegir el nivel de corrección: L, M, Q o H. Según Denso Wave, la empresa que lo inventó, corrigen aproximadamente el 7 %, el 15 %, el 25 % y el 30 % de las palabras código. Cuanto más alto el nivel, más redundancia, más grande el dibujo y mayor daño que aguanta. En la herramienta QR que corrige errores puedes estropear un QR y ver hasta dónde lo recupera.
Ejercicios
Ejercicio 1
Con el Hamming recibes , con borrones en las posiciones 2 y 6. Recupera la palabra enviada.
Ver la solución
Llamamos y a lo desconocido. Con :
- Fila 1: , luego .
- Fila 2: , luego .
- Fila 3 (comprobación): . Correcto.
La palabra enviada fue , que es la codificación del mensaje .
Ejercicio 2
Un código tiene . Calcula cuántos errores detecta, cuántos corrige y cuántos borrones corrige. Después, para cada número de errores , di cuántos borrones como máximo puede corregir a la vez.
Ver la solución
Detecta errores. Corrige errores. Corrige borrones.
Mezclas: .
- : .
- : .
- : .
Con ya no cabe ni un borrón ().
Ejercicio 3
¿Puede existir un código binario lineal ? Prueba primero con Singleton y después con Hamming.
Ver la solución
Singleton: . No lo descarta.
Hamming: con la bola tiene palabras, y haría falta
que es falso. Las 32 bolas no caben en el espacio. No existe un código binario . (Sí existen el y el : son códigos de Hamming de la lección 4, y los dos alcanzan la cota con igualdad; por ejemplo, .)
En resumen
- Un error cambia un símbolo en un sitio desconocido; un borrón lo pierde en un sitio conocido.
- Con distancia mínima : se detectan errores, se corrigen errores y se corrigen borrones.
- En general se corrige mientras .
- Singleton: (con igualdad, MDS). Hamming: (con igualdad, perfecto).
- El Hamming es perfecto pero no MDS; Reed-Solomon será MDS.
Siguiente lección: Decodificación por síndrome
Pruébalo: QR que corrige errores
Para profundizar
- V. Guruswami, A. Rudra y M. Sudan, Essential Coding Theory (2023).
- W. C. Huffman y V. Pless, Fundamentals of Error-Correcting Codes (2003).
- Denso Wave, Error correction feature (QR Code) (2026).