부호의 앞부분이 겹치면, 원래 메시지는 꼭 헷갈릴까요?

A, B, C를 0, 01, 11로 바꿔 이어 붙였어요. 메시지의 끝을 알면 원래 내용을 하나로 읽을 수 있는지, 길이 구성이 같은 다른 부호와 비교해요.

나무 탁자 위에 줄지어 놓인 검정색과 크림색 토큰

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

A, B, C를 각각 0, 01, 11로 바꾸고 구분표 없이 이어 붙여요. 메시지는 유한하고 끝 위치는 알지만 원래 기호 수는 몰라요. 0이 01의 앞부분이므로 원문이 반드시 모호한가? 어떤 유한 메시지에서도 원문을 하나로 복원할 수 있는지 설명해 볼까요? 부호어 길이의 구성이 같은 0, 01, 10 부호와도 비교해요.

c(A)=0,c(B)=01,c(C)=11.c(A)=0,\qquad c(B)=01,\qquad c(C)=11.

메시지 맨 앞에서 0이 나오기 전의 연속 1은 11 부호들이므로 반드시 짝수 개이고 C들로 유일하게 나뉘어요. 그 뒤 각 0은 A 또는 B의 시작이에요. 그 0 다음부터 다음 0 또는 끝까지의 연속 1 개수를 k라 해 볼까요? k가 짝수이면 A 다음 C가 k/2개, 홀수이면 B 다음 C가 (k−1)/2개예요. 따라서 모든 0 구간이 유일하게 분해된다.

0 12j⟷ACj,0 12j+1⟷BCj(j≥0).0\,1^{2j}\longleftrightarrow AC^j,\qquad 0\,1^{2j+1}\longleftrightarrow BC^j\quad(j\ge0).

어떤 기호의 부호어도 다른 부호어의 앞부분이 아닌 성질을 prefix 조건이라 불러요. 현재는 그 조건을 갖추지 않았지만 완전한 메시지는 유일하게 복원돼요. 다만 0 직후에는 A인지 B인지 바로 결정하지 못할 수 있어요. 반면 C를 10으로 바꾸면 010이 AC와 BA 두 원문에서 나와 모호해요. 두 부호는 길이 1, 2, 2가 같고 길이 합 검사 1/2+1/4+1/4=1도 같지만 실제 복원 구조는 달라요.

Stanford 강의는 prefix 조건과 모든 기호열의 유일 복원을 구별해요. 이 글의 세 부호와 홀짝 분해는 원문 네 기호 연습 문항을 옮긴 것이 아니에요. Kraft 조건의 역이 말하는 것도 그 길이의 어떤 부호가 존재한다는 뜻이며 주어진 임의 부호가 항상 복원된다는 뜻은 아니에요.

한 부호어를 발견하자마자 읽을 수 있는 조건과 끝까지 읽은 뒤 유일해지는 조건을 나누어 봐요. 몇 개의 성공 메시지를 확인하는 대신 모든 연속 1 구간을 분해하는 규칙을 답안에 남겨요.

착안 원문: Stanford EE376A, Lecture5: Variable Length Lossless Compression (23 January2018). 세 기호의 두 부호표와 유한 메시지의 홀짝 분해·유일 복원 증명은 자체 작성했으며, 원문의 prefix 정의와 구별해 사용했어요.

이 글 공유하기

개인정보 및 방문 통계 안내