Lección
La teoría — Código de Hamming: corregir un bit localizando su posición
Un código de Hamming añade bits de paridad a los datos para localizar un bit invertido y devolverlo a su valor original. Cada bit de paridad hace que un conjunto determinado de posiciones contenga un número par de unos; esto constituye una comprobación de paridad. El decodificador repite las comprobaciones sobre la palabra recibida. El patrón de fallos, llamado síndrome, se interpreta como un número binario que indica la posición del bit erróneo; 0 significa que no hay ninguno. Una cifra de control solo puede indicar que algo está mal; este código indica dónde. El código extendido añade un bit para que la palabra completa tenga paridad par. Así corrige cualquier inversión aislada y detecta dos inversiones cualesquiera, aunque no las corrige: SECDED.
Qué significa cada símbolo
dᵢ- los cuatro bits de datos, situados en las posiciones 3, 5, 6 y 7
p₁, p₂, p₄- los bits de paridad, cada uno en la posición que le da nombre; p0 es el bit de paridad global del código extendido
s- el síndrome, 4s4 + 2s2 + s1, donde sk vale 1 cuando el círculo k contiene un número impar de unos al llegar
P- la paridad de los ocho bits recibidos en el código extendido: 1 indica un número impar de inversiones
p- la tasa de error de bit, es decir, la probabilidad de que un bit cualquiera se invierta con independencia de todos los demás
- Supone
- Cada bit se invierte de forma independiente y con la misma probabilidad p. Los canales y las memorias reales también sufren errores en ráfaga, que afectan a varios bits vecinos a la vez. Estas inversiones múltiples son precisamente las que peor resuelven estos códigos.
- Falla cuando
- Con tres inversiones. El código extendido las interpreta como una, porque la paridad global resulta impar, y corrige un bit que era correcto: la tabla de todas las inversiones muestra que las 896 inversiones triples entregan datos erróneos sin aviso.
Problema resuelto al detalle
-
¿Cuántos bits de paridad necesita una palabra de 64 bits? 4 pasos
Protege 64 bits de datos del mismo modo. Pulsa Extendido, un cambio: cuatro bits de paridad para cuatro bits de datos, con una tasa del 50,0 %. Calcula cuántos bits de paridad necesita una palabra de 64 bits para ofrecer la misma garantía, corregir cualquier inversión aislada y señalar dos cualesquiera, y cuál es el coste de la palabra más larga para el valor p = 0,001 de este ejemplo.
Abre este problema en la herramienta
-
Con r comprobaciones, el síndrome puede tomar 2r valores. Uno debe indicar que no hay errores y cada una de las m + r posiciones necesita el suyo, así que 2r ≥ m + r + 1. En la página, m = 4 y r = 3 satisface la desigualdad exactamente, sin que sobre ningún valor.
-
Para m = 64, seis comprobaciones ofrecen 64 valores, pero hacen falta 71; siete ofrecen 128, suficientes para 72. Por tanto, 71 bits permiten corregir cualquier inversión aislada.
-
Al añadir un bit de paridad global se obtienen 72 bits, 8 de ellos de paridad, y una tasa del 88,9 % frente al 50,0 % de la página.
-
El precio es que una palabra más larga acumula dos inversiones con mayor frecuencia, justo el caso que SECDED ya no puede reparar. Para una palabra de 8 bits, esa probabilidad es la suma de las dos cifras de la página.
Respuesta
Ocho bits de paridad, una palabra de 72 bits y una tasa del 88,9 %. Con p = 0,001, contiene dos inversiones o más con probabilidad 2,44×10⁻³. Si los mismos 64 bits se dividen en dieciséis palabras de 8 bits, se pierden cuando falla cualquiera de ellas, con probabilidad 4,46×10⁻⁴. La palabra larga tiene unas 5,5 veces más probabilidades de perder sus 64 bits, a cambio de emplear la octava parte de bits de paridad.
-
Ruta de aprendizaje
Por qué un algoritmo es correcto
Referencias (2)
- The code itself, the requirement that the checking number give the position of any single error, the check positions 1, 2, 4 and the reason for them, the extended code that adds double-error detection, and the relay computers that motivated it: R. W. Hamming, "Error Detecting and Error Correcting Codes." Bell System Technical Journal 29(2), April 1950, pp. 147-160. DOI 10.1002/j.1538-7305.1950.tb00463.x
- How Hamming told the story in his later course: a relay computer that could detect an error, retried three times and then dropped the problem, and the question that followed: R. W. Hamming, The Art of Doing Science and Engineering: Learning to Learn, Session 12, "Error-Correcting Codes". Lecture slides, Naval Postgraduate School, Monterey (course delivered 1995).