한 자리 변경을 고치는 코드, 삭제에도 튼튼할까요?

가상 전송 코드 두 개는 세 자리에서 서로 달라요. 한 자리가 바뀌면 원래 코드를 찾을 수 있지만, 한 자리가 사라지면 같은 결과가 남아요. 자리 변경과 삭제가 요구하는 조건을 구별해요.

목재 책상에 놓인 무표기 키보드와 케이블로 연결된 작은 저장장치 생성 이미지

이미지: AI 생성 · 수학 이야기

가상 장치가 두 명령을 다섯 자리 코드 A=00101, B=01011로 보내요. 이 두 코드 외에는 보내지 않으며, 숫자는 0 또는 1입니다. 받는 도중 최대 한 자리가 반대 숫자로 바뀌는 오류를 고칠 수 있으면, 한 자리 삭제에도 강한 코드라고 할 수 있을까요? 두 오류를 별개의 상황으로 정하고 비교해요.

길이가 같은 코드에서 서로 다른 자리 수를 Hamming거리라고 불러요. A와 B는 둘째, 셋째, 넷째 자리에서 달라 거리는 3입니다. 한 자리만 바뀐 수신 코드가 양쪽 원본에서 모두 나올 수는 없어요. 그렇다면 원본 두 코드의 거리도 두 번의 한 자리 변경으로 최대 2여야 해서 거리 3과 충돌하기 때문이에요.

d(A,B)=3>1+1d(A,B)=3>1+1

따라서 자리 수가 유지되고 변경이 최대 한 번이라면 두 명령을 구별할 수 있어요. 예를 들어 A의 첫 자리가 바뀐 10101은 A에서 한 자리, B에서 네 자리가 달라 A로 고칩니다.

삭제는 달라요. A=00101에서 둘째 자리 0을 삭제하면 0101이 돼요. B=01011에서 마지막 1을 삭제해도 0101입니다. 나머지 자리가 앞으로 당겨져 같은 네 자리 기록을 만들므로, 삭제가 정확히 한 번이라는 정보를 알아도 원본 명령은 둘 중 어느 것인지 정해지지 않아요.

원본 사이에서 다른 자리 수가 충분하다는 조건은 고정된 자리의 변경을 고치는 데 사용했어요. 자리 자체가 사라지는 경우에는 각 코드에서 삭제로 만들어질 수 있는 기록 집합이 서로 겹치는지도 별도로 확인해야 해요. ‘오류 한 개’라는 이름만으로 두 보장을 같게 읽어서는 안 돼요.

참고한 수학 개념: AMS · Correcting Errors.

이 글의 생활 상황과 계산 예시는 수학 이야기에서 새로 구성했습니다.

이 글 공유하기

개인정보 및 방문 통계 안내