HarmonyFidelisHarmonyFidelis
Entrar
NotíciasGrandes projetosAtoresAcademia

Hamming, 1950: três bits de verificação para corrigir um erro

Um bit alterado não precisa inutilizar uma mensagem. A construção de Hamming acrescenta três verificações a quatro bits de dados para localizar e corrigir qualquer inversão única. Seu limite é essencial: o código de sete bits não distingue com segurança um erro de dois.

Source: R. W. Hamming — Bell System Technical Journal

Hamming, 1950: três bits de verificação para corrigir um erro

Artigo redigido e traduzido por um sistema de IA a partir das fontes citadas, com verificações automatizadas segundo o método editorial News.

Capa conceitual gerada por IA: verificações estruturadas ordenam um fluxo perturbado; não representa um circuito literal nem prova correção ilimitada.

1. Confiabilidade com redundância estruturada

Em abril de 1950, Richard W. Hamming publicou “Error Detecting and Error Correcting Codes” no Bell System Technical Journal. O problema era prático: detectar uma falha em um cálculo sem supervisão podia interromper o trabalho; localizá-la e corrigi-la podia permitir continuar. O artigo apresenta construções binárias explícitas, não a promessa de reparar qualquer dano. [1,2]

O avanço consiste em tornar a redundância informativa. Repetir cada um de quatro bits três vezes exige doze bits transmitidos. Um código de Hamming utiliza sete para proteger os mesmos quatro bits contra qualquer inversão única no bloco. São formas diferentes de organizar a redundância, não uma prova de superioridade para todos os canais. A compressão remove redundância; a correção de erros adiciona uma forma controlada dela.

2. Sete posições, três perguntas

Numere as posições de 1 a 7. As posições 1, 2 e 4 contêm verificações; 3, 5, 6 e 7 contêm os dados d₁, d₂, d₃ e d₄. ⊕ significa OU exclusivo, a soma módulo 2: 1 ⊕ 1 = 0. As equações impõem paridade par. Os índices de p indicam posições, não a ordem das verificações. [1, §3]

p1=d1⊕d2⊕d4p_1=d_1\oplus d_2\oplus d_4p1​=d1​⊕d2​⊕d4​

p2=d1⊕d3⊕d4p_2=d_1\oplus d_3\oplus d_4p2​=d1​⊕d3​⊕d4​

p4=d2⊕d3⊕d4p_4=d_2\oplus d_3\oplus d_4p4​=d2​⊕d3​⊕d4​

O receptor verifica {1,3,5,7}, {2,3,6,7} e {4,5,6,7}. Uma verificação que falha gera um bit de síndrome 1; uma satisfeita gera 0. Chamemos esses bits de s₁, s₂ e s₄. Supondo no máximo uma inversão, sua posição j é:

j=s1+2s2+4s4j=s_1+2s_2+4s_4j=s1​+2s2​+4s4​

Síndrome zero indica ausência de erro apenas nessa hipótese; não é um certificado universal de integridade.

3. Uma correção reproduzível

Considere os dados 1010. As equações dão p₁ = 1, p₂ = 0 e p₄ = 1. A palavra transmitida, lida da esquerda para a direita na ordem das posições, é 1011010. Se o bit 6 inverter, chega 1011000. A primeira verificação é par; a segunda e a terceira são ímpares. Logo, (s₁,s₂,s₄) = (0,1,1) e j = 0 + 2 + 4 = 6. Inverta novamente o bit 6 e leia 3,5,6,7: os dados recuperados são 1010.

Uma inversão localizada por três verificaçõesEnviado11203141506170Recebido: bit 6 invertido11203141506070Corrigir o bit 611203141506170Síndrome(0,1,1) → 6Dados recuperados1010

Esquema científico produzido por código; sequências exatas, não dados experimentais.

É um cálculo editorial, não uma medição experimental. O procedimento também corrige um bit de verificação invertido. Ele pressupõe limites de bloco e posições conhecidos; bits inseridos ou removidos pertencem a outro modelo de erro.

4. Por que a construção funciona

Três verificações binárias têm oito resultados possíveis: exatamente o necessário para distinguir sete posições de erro único e a ausência de erro. Em geral, um código binário com r verificações e n bits precisa de pelo menos n + 1 síndromes distintos para corrigir uma inversão:

2r≥n+12^r\ge n+12r≥n+1

A construção atinge essa contagem com n = 2ʳ − 1 e k = n − r bits de dados. Para r = 3, n = 7 e k = 4. Sua distância mínima de Hamming — o menor número de posições diferentes entre palavras válidas — é 3. Uma palavra recebida não pode estar a uma inversão de duas palavras válidas distintas, pois estas teriam distância de no máximo 2.

Há 16 palavras válidas, cada uma com sete vizinhas de uma inversão. Incluindo a própria palavra, esses conjuntos disjuntos cobrem as 128 possibilidades: 16 × 8 = 128. “Perfeito” descreve esse empacotamento, não funcionamento infalível com qualquer ruído. [1, §§5,7]

5. A armadilha dos dois erros

Duas inversões sempre produzem síndrome não nula: um detector que apenas sinalize palavras inválidas consegue detectá-las. Porém, interpretar toda síndrome não nula como erro único pode causar uma correção errada. Inverter as posições 2 e 5 gera a mesma síndrome que inverter a 7. Corrigir o bit 7 deixa três bits errados e outra palavra válida.

Um oitavo bit que torne par a paridade total eleva a distância mínima a 4. O código estendido permite corrigir um erro e detectar dois: SECDED. As decisões abaixo supõem no máximo duas inversões. q é a paridade dos oito bits recebidos. [1, §4]

Síndrome jParidade qAção sob a hipótese indicada
00Nenhum erro
01Corrigir o bit 8
não nula1Corrigir o bit j
não nula0Sinalizar dois erros; não corrigir

Três ou mais erros estão fora da garantia. Um decodificador SECDED pode corrigir alguns deles incorretamente; detectar dois erros não significa diagnosticar qualquer falha maior.

6. Um benefício numérico, com hipóteses explícitas

Suponha inversões independentes com probabilidade p = 0,01, igual para 0 e 1, codificação e decodificação perfeitas e limites de bloco conhecidos. Com o código de sete bits e este decodificador, a mensagem recuperada está errada exatamente quando há pelo menos duas inversões:

Pfail=1−(1−p)7−7p(1−p)6.\begin{aligned} P_{\rm fail}&=1-(1-p)^7\\ &\quad-7p(1-p)^6. \end{aligned}Pfail​​=1−(1−p)7−7p(1−p)6.​

O resultado é aproximadamente 0,002031, ou 0,2031% dos blocos. Para os quatro dados sem codificação, 1 − (1 − p)⁴ = 0,039404: 3,9404% das mensagens contêm erro. São probabilidades de erro de mensagem, não taxas residuais por bit nem desempenho medido de um dispositivo.

O custo é de três bits adicionais para quatro dados: 75% mais bits transmitidos e taxa de código 4/7 ≈ 0,5714 bit de dados por bit transmitido. A comparação mantém p fixo, não simultaneamente largura de banda, tempo de transmissão e energia por mensagem.

7. O que o resultado promete — e o que não promete

A contribuição duradoura liga álgebra e confiabilidade de modo construtivo: separar palavras válidas, calcular verificações compactas e localizar uma falha limitada. O caso de sete bits pode ser verificado exaustivamente. Para este artigo, foram testadas as 16 mensagens e seus 128 casos sem erro ou com um erro, além dos 448 casos de dois erros do código estendido.

Isso não corrige rajadas arbitrárias, software corrompido, alterações maliciosas ou perda de sincronização. Sistemas reais precisam ajustar o código ao modelo de falhas e proteger codificador, decodificador e lógica ao redor. Hamming não apresenta medições de hardware moderno; nosso exemplo numérico é separado dessas alegações. O tema complementa os limites de comunicação de Shannon com uma construção finita explícita, não uma solução universal que alcance a capacidade.

Método News deste artigo

Revisão de referência: HAMMING-EN-1. O artigo primário de 1950 foi lido integralmente em uma digitalização arquivada e seu OCR; a construção e os casos SECDED também foram conferidos nas páginas digitalizadas. O registro editorial confirma a data bibliográfica. Notas do MIT permitem comparar a notação moderna. Um script reproduzível executou os cálculos e os testes finitos. Redação e sete traduções são de IA, sem revisão especializada independente ou validação humana. O esquema localizado foi produzido por código. A capa é uma ilustração conceitual gerada por IA, não fotografia, instrumento ou gráfico de dados.

Fontes

[1] R. W. Hamming — Error Detecting and Error Correcting Codes — DOI: 10.1002/j.1538-7305.1950.tb00463.x.

[2] Nokia Bell Labs — Error Detecting and Error Correcting Codes.

[3] MIT 6.02 — Coping with Bit Errors using Error Correction Codes.