별과 정리
별과 정리 · 제163장 · 3부 · 멀리 보이는 것

스스로 잘못을 고치는 부호

Hamming Codes
틀린 자리를 스스로 찾아내 고친다

틀린 자리를 스스로 찾아 고칩니다

모눈종이에 0과 1을 3×3으로 적고, 각 줄과 각 칸 끝에 1의 개수가 짝수가 되도록 한 자리씩 덧붙입니다.

이제 친구에게 아무 칸이나 하나만 몰래 뒤집게 하십시오. 홀수가 된 줄 하나와 칸 하나가 만나는 자리 — 그곳이 뒤집힌 칸입니다. 찾았으니 도로 뒤집으면 고쳐집니다.

이야기

스스로 잘못을 고치는 부호
가로세로 검사 칸이 뒤집힌 자리를 가리킨다

1940년대 말 벨 연구소. 리처드 해밍에게는 주말에만 계산기를 쓸 수 있는 시간이 주어졌습니다. 금요일에 카드를 넣어 두고 월요일에 결과를 찾으러 갔습니다.

그런데 두 주 연속으로 기계가 멈춰 있었습니다. 천공카드 한 자리가 잘못 읽혀서, 기계가 오류를 발견하고는 그냥 멈춘 것입니다. 주말이 통째로 날아갔습니다.

해밍은 화가 나서 이렇게 생각했다고 합니다. 「기계가 틀린 것을 알아챌 수 있다면, 어디가 틀렸는지도 알아내서 스스로 고칠 수 있어야 하는 것 아닌가.

1950년 그는 그 방법을 발표합니다. 오류를 찾는 데서 그치지 않고 고치는 부호가 처음 나온 것입니다.

어떻게 고칠까요. 열쇠는 검사 자리를 여러 개 두되, 각 검사가 서로 다른 자리들을 겹쳐 가며 감시하게 하는 것입니다.

그러면 어느 한 자리가 틀렸을 때 그 자리를 보던 검사들만 어긋납니다. 자리마다 감시하는 검사의 조합이 모두 다르기 때문입니다. 그래서 어긋난 검사들의 조합이 곧 틀린 자리의 번호가 됩니다. 위의 가로세로 표에서 「홀수인 줄과 홀수인 칸이 만나는 자리」를 찾은 것과 같습니다.

오늘 이것이 하는 일

QR 코드가 찢어져도 읽히고, 위성 사진이 잡음을 뚫고 오고, 컴퓨터 메모리가 우주선이 때린 비트를 스스로 고치고, CD에 흠집이 나도 소리가 나는 것 — 모두 오류정정부호입니다.

계단 넷 — 같은 사실을 네 깊이로

초4 · 초5 — 손으로 해 본다

가로세로로 표를 만들어 틀린 칸을 찾는다

모눈에 0과 1을 3×3으로 적습니다. 각 가로줄 끝에 그 줄의 1의 개수가 짝수가 되도록 0이나 1을 덧붙입니다. 각 세로줄 아래에도 같은 일을 합니다.

이제 친구가 아무 칸이나 하나 뒤집습니다. 가로줄을 세어 보면 한 줄만 홀수이고, 세로줄도 하나만 홀수입니다.

그 둘이 만나는 칸이 범인입니다. 도로 뒤집으면 원래대로. 누가 알려 주지 않아도 스스로 고쳤습니다.

중1 · 중2 — 까닭을 찾는다

짝수로 맞추는 검사 비트

1의 개수를 짝수로 맞추려고 덧붙이는 한 자리를 검사 비트(패리티)라 합니다.

검사 비트가 하나뿐이면 「어딘가 틀렸다」까지만 압니다. 어디인지는 모릅니다. 발견은 되고 정정은 안 됩니다.

그런데 검사 비트를 여럿 두고, 각각이 겹치되 서로 다른 자리들을 감시하게 하면 이야기가 달라집니다. 어긋난 검사들의 조합이 틀린 자리를 가리키기 때문입니다.

고1 · 고2 — 넓혀 본다

해밍 (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비트 발견까지입니다. 더 고치려면 검사를 더 겹쳐 놓아야 합니다.

더 멀리

「스스로 고친다」는 생각이 없으면 오늘의 통신은 서지 않습니다.

이어지는 장

「있다는 것만 말하고 어디인지는 말하지 않는」 정리는 제127장제139장 에 있고, 겹침으로 자리를 가려내는 셈은 제50장 의 가짜 동전과 이웃입니다. 「몇 번 물어야 하나」의 아래 한계는 제160장 에서 보았습니다.

영감을 받은 곳

리처드 해밍 「오류 검출 및 오류 정정 부호」(벨 시스템 기술지, 1950)와 클로드 섀넌 「통신의 수학적 이론」(1948)에 기대고 있습니다. 주말 계산 실패 일화는 해밍 자신이 여러 강연에서 말한 것으로 널리 전해집니다. 공개된 사실이며, 계단·문항·그림은 우리가 지었습니다.

올린 그림 — 크게 보고 고치기

✏️ 손으로 풀어보세요
문제 크기 105%
▼ 문제가 더 있습니다
6