모눈종이에 0과 1을 3×3으로 적고, 각 줄과 각 칸 끝에 1의 개수가 짝수가 되도록 한 자리씩 덧붙입니다.
이제 친구에게 아무 칸이나 하나만 몰래 뒤집게 하십시오. 홀수가 된 줄 하나와 칸 하나가 만나는 자리 — 그곳이 뒤집힌 칸입니다. 찾았으니 도로 뒤집으면 고쳐집니다.

1940년대 말 벨 연구소. 리처드 해밍에게는 주말에만 계산기를 쓸 수 있는 시간이 주어졌습니다. 금요일에 카드를 넣어 두고 월요일에 결과를 찾으러 갔습니다.
그런데 두 주 연속으로 기계가 멈춰 있었습니다. 천공카드 한 자리가 잘못 읽혀서, 기계가 오류를 발견하고는 그냥 멈춘 것입니다. 주말이 통째로 날아갔습니다.
해밍은 화가 나서 이렇게 생각했다고 합니다. 「기계가 틀린 것을 알아챌 수 있다면, 어디가 틀렸는지도 알아내서 스스로 고칠 수 있어야 하는 것 아닌가.」
1950년 그는 그 방법을 발표합니다. 오류를 찾는 데서 그치지 않고 고치는 부호가 처음 나온 것입니다.
어떻게 고칠까요. 열쇠는 검사 자리를 여러 개 두되, 각 검사가 서로 다른 자리들을 겹쳐 가며 감시하게 하는 것입니다.
그러면 어느 한 자리가 틀렸을 때 그 자리를 보던 검사들만 어긋납니다. 자리마다 감시하는 검사의 조합이 모두 다르기 때문입니다. 그래서 어긋난 검사들의 조합이 곧 틀린 자리의 번호가 됩니다. 위의 가로세로 표에서 「홀수인 줄과 홀수인 칸이 만나는 자리」를 찾은 것과 같습니다.
QR 코드가 찢어져도 읽히고, 위성 사진이 잡음을 뚫고 오고, 컴퓨터 메모리가 우주선이 때린 비트를 스스로 고치고, CD에 흠집이 나도 소리가 나는 것 — 모두 오류정정부호입니다.
가로세로로 표를 만들어 틀린 칸을 찾는다
모눈에 0과 1을 3×3으로 적습니다. 각 가로줄 끝에 그 줄의 1의 개수가 짝수가 되도록 0이나 1을 덧붙입니다. 각 세로줄 아래에도 같은 일을 합니다.
이제 친구가 아무 칸이나 하나 뒤집습니다. 가로줄을 세어 보면 한 줄만 홀수이고, 세로줄도 하나만 홀수입니다.
그 둘이 만나는 칸이 범인입니다. 도로 뒤집으면 원래대로. 누가 알려 주지 않아도 스스로 고쳤습니다.
짝수로 맞추는 검사 비트
1의 개수를 짝수로 맞추려고 덧붙이는 한 자리를 검사 비트(패리티)라 합니다.
검사 비트가 하나뿐이면 「어딘가 틀렸다」까지만 압니다. 어디인지는 모릅니다. 발견은 되고 정정은 안 됩니다.
그런데 검사 비트를 여럿 두고, 각각이 겹치되 서로 다른 자리들을 감시하게 하면 이야기가 달라집니다. 어긋난 검사들의 조합이 틀린 자리를 가리키기 때문입니다.
해밍 (7,4) 과 최소 거리
해밍 (7,4) 부호 — 데이터 4비트에 검사 3비트를 붙여 7비트로 보냅니다.
검사 비트 개로 가지를 가릴 수 있고, 「틀린 데 없음」 한 가지에 「어느 자리가 틀렸나」 가지를 더해야 하므로 .
이면 — 딱 맞습니다. 군더더기가 한 자리도 없어서 완전부호라 부릅니다.
바꿔 말하면 서로 다른 두 부호말은 적어도 세 자리가 다릅니다. 그래서 한 자리가 틀려도 가장 가까운 부호말이 하나로 정해집니다.
얼마나 많이 담을 수 있나 — 한계
얼마나 담을 수 있을까요. 정정 능력을 높이려면 검사 자리를 늘려야 하고, 그만큼 실을 수 있는 데이터가 줍니다. 이 맞바꿈에는 한계가 있습니다.
1948년 섀넌이 그 한계를 못박았습니다. 통로마다 용량이라는 값이 있고, 그보다 낮은 속도로 보내면 오류를 원하는 만큼 0에 가깝게 만들 수 있다는 것입니다.
🚩 그런데 섀넌의 증명은 그런 부호가 있다는 것만 말하고 어떻게 만드는지는 말하지 않았습니다. 제127장 과 같은 종류의 정리입니다. 그 한계에 실제로 닿는 부호(터보·LDPC·폴라)를 찾는 데 반세기가 걸렸습니다.
스스로 고치는 부호.
(1) 검사 비트가 하나뿐일 때, 오류를 발견할 수 있는가? 정정할 수 있는가? 까닭과 함께 답하시오.
(2) 데이터 11비트를 1비트 정정하려면 검사 비트가 최소 몇 개 필요한가? ( 을 쓰시오.)
(3) 3×3 표에 가로·세로 검사를 붙였다. 두 칸이 동시에 뒤집히면 어떻게 되는가?
(1) 발견은 되고, 정정은 안 됩니다.
1의 개수가 홀수가 되었으므로 「어딘가 한 자리가 틀렸다」는 압니다.
그러나 어느 자리인지 가리킬 정보가 없습니다. 검사 결과는 「짝수/홀수」 두 가지뿐인데, 틀릴 수 있는 자리는 여러 개이기 때문입니다.
⭐ 게다가 두 자리가 틀리면 다시 짝수가 되어 발견조차 못 합니다.
(2) 4개입니다.
을 넣으면 .
: — 거짓.
: — 참. 딱 맞습니다.
⭐ 이것이 해밍 (15,11) 부호이고, 역시 완전부호입니다.
(3) 발견은 되지만 잘못 고칩니다.
두 칸이 다른 줄, 다른 칸에 있으면 홀수인 가로줄이 둘, 세로줄도 둘이 됩니다. 만나는 자리가 네 곳이라 어느 둘이 범인인지 가릴 수 없습니다.
두 칸이 같은 줄에 있으면 그 가로줄은 다시 짝수가 되어 가로에서는 아무 낌새도 없습니다.
⭐ 그래서 이 방식은 1비트 정정 · 2비트 발견까지입니다. 더 고치려면 검사를 더 겹쳐 놓아야 합니다.
「스스로 고친다」는 생각이 없으면 오늘의 통신은 서지 않습니다.
리처드 해밍 「오류 검출 및 오류 정정 부호」(벨 시스템 기술지, 1950)와 클로드 섀넌 「통신의 수학적 이론」(1948)에 기대고 있습니다. 주말 계산 실패 일화는 해밍 자신이 여러 강연에서 말한 것으로 널리 전해집니다. 공개된 사실이며, 계단·문항·그림은 우리가 지었습니다.