Lição
A teoria — Código de Hamming: corrigir um bit identificando a sua posição
Um código de Hamming acrescenta bits de paridade aos dados para localizar e corrigir um bit invertido. Cada bit de paridade faz com que um conjunto escolhido de posições contenha um número par de uns; é uma verificação de paridade. O descodificador repete as verificações sobre a palavra recebida. O padrão das que falham, a síndrome, é lido como um número binário e indica a posição do bit errado; 0 significa que não há nenhum. Um dígito de controlo apenas consegue indicar que algo está errado; este código indica onde. O código estendido acrescenta um bit que torna par a palavra inteira. Corrige então qualquer inversão isolada e deteta quaisquer duas, sem as corrigir: SECDED.
O que significa cada símbolo
dᵢ- os quatro bits de dados, nas posições 3, 5, 6 e 7
p₁, p₂, p₄- os bits de paridade, cada um na posição que lhe dá o nome; p0 é o bit global do código estendido
s- a síndrome, 4s4 + 2s2 + s1, em que sk vale 1 quando o círculo k contém um número ímpar de uns à chegada
P- a paridade dos oito bits recebidos no código estendido: 1 significa que houve um número ímpar de inversões
p- a taxa de erro de bit, isto é, a probabilidade de qualquer bit se inverter, independentemente dos restantes
- Pressupõe
- Cada bit se inverte independentemente, sempre com a mesma probabilidade p. Os canais e as memórias reais também falham em rajadas, atingindo de uma vez vários bits vizinhos; uma rajada é precisamente o tipo de inversão múltipla que estes códigos tratam pior.
- Falha quando
- Com três inversões. O código estendido interpreta três inversões como uma, pois a verificação global resulta ímpar, e corrige um bit que estava certo: a tabela completa mostra todas as 896 inversões triplas a entregar dados errados sem sinalização.
Problema resolvido na íntegra
-
Quantos bits de paridade exige uma palavra de 64 bits? 4 passos
Proteja 64 bits de dados da mesma forma. Carregue em Estendido, uma: quatro bits de paridade para quatro bits de dados, com uma taxa de 50,0%. Determine quantos bits de paridade precisa uma palavra de 64 bits para oferecer a mesma garantia, corrigir qualquer inversão isolada e sinalizar quaisquer duas, e calcule o custo da palavra mais longa para p = 0,001, o valor dessa predefinição.
Abrir este problema na ferramenta
-
Com r verificações, a síndrome pode assumir 2r valores. Um tem de significar «sem erro» e cada uma das m + r posições precisa do seu próprio valor, portanto 2r ≥ m + r + 1. Nesta página, m = 4 e r = 3 satisfaz a desigualdade à justa, sem qualquer valor livre.
-
Para m = 64, seis verificações dão 64 valores, quando são necessários 71; sete dão 128, suficientes para 72. Assim, 71 bits permitem corrigir qualquer inversão isolada.
-
Acrescentando um bit global, obtêm-se 72 bits, dos quais 8 são de paridade, e uma taxa de 88,9%, contra os 50,0% da página.
-
O preço a pagar é que uma palavra mais longa acumula duas inversões com maior frequência, e o SECDED já não consegue corrigi-las. Para uma palavra de 8 bits, essa probabilidade é a soma dos dois valores apresentados na página.
Resposta
Oito bits de paridade, uma palavra de 72 bits, taxa de 88,9%. Para p = 0,001, a probabilidade de conter duas ou mais inversões é 2,44×10⁻³. Se os mesmos 64 bits forem divididos em dezasseis palavras de 8 bits, perdem-se quando pelo menos uma delas se perde, com probabilidade 4,46×10⁻⁴. A palavra longa tem uma probabilidade cerca de 5,5 vezes maior de perder os seus 64 bits, em troca de usar oito vezes menos bits de paridade.
-
Percurso de aprendizagem
Por que razão um algoritmo está correto
Referências (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).