서로 다른 신호도 이어 보내면, 두 뜻으로 읽힐 수 있어요

세 상태에 서로 다른 이진 신호를 붙였는데, 두 상태를 연달아 보내니 같은 신호열이 생겨요. 기호별 구별과 메시지 전체의 복원 가능성을 나누어 보고, 일정한 길이로 보내는 수정안을 검산해요.

작업대 위 펄스 계수기와 입력 회로

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

상태 A,B,C를 전송하는 가상 장치가 있어요. A는0, B는01, C는10으로 보내요. 세 신호는 모두 다르니 수신 장치는 언제나 원래 메시지를 알아낼 수 있을까요? 상태 사이에 구분 기호나 쉼을 넣지 않고 이어 보낸다는 조건이 핵심이에요.

한 상태씩 받는다면 표를 보고 구별할 수 있어요. 하지만 두 상태를 붙이면 문제가 생겨요. BA의 신호는01 뒤에0을 붙인010입니다. AC의 신호 역시0 뒤에10을 붙인010입니다.

code⁡(BA)=010=code⁡(AC)\operatorname{code}(BA)=010=\operatorname{code}(AC)

두 상태를 보냈다는 개수를 미리 알려 주어도 해결되지 않아요. BA와 AC 모두 두 상태이기 때문이에요. 신호표가 개별 상태를 일대일로 바꾼다는 조건은, 구분 없는 여러 상태의 연결까지 일대일이라는 조건보다 약해요.

수정안으로 A=00, B=01, C=10처럼 모두 두 비트로 정하겠습니다. 처음부터 두 비트씩 끊어 읽으면 각 조각은 한 상태에 대응해요. BA는0100, AC는0010이어서 더는 같지 않아요. 두 비트로 만들 수 있는 조각은2²=4개이므로 세 상태를 넣을 공간도 충분해요. 첫 조각의 시작 위치를 알고, 비트가 빠지거나 추가되지 않는다는 조건은 필요해요.

짧은 신호를 많이 쓰는 표라도 연결 규칙이 없다면 정보를 잃을 수 있어요. 전송 전에 개별 부호의 중복뿐 아니라 서로 다른 메시지가 같은 신호열이 되는지도 확인해야 해요. 이 수정안은 가장 짧다는 최적화 결과가 아니라, 유일하게 끊어 읽을 수 있는 한 방법이에요.

참고한 수학 개념: Mathigon · Codes and Ciphers: Introduction.

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

이 글 공유하기

개인정보 및 방문 통계 안내