도구스개발

턴스톨(Tunstall) 부호화 계산기

문자별 확률을 넣으면 확률이 가장 높은 잎부터 쪼개는 턴스톨 부호화 트리를 구성합니다. 허프만과 반대로 가변 길이 원문을 고정 길이 부호로 바꾸는 방식입니다.

예: A:0.7, B:0.3 — 확률의 합이 1이어야 합니다

사전 크기

8개 잎

고정 부호 3비트로 표현

잎 확률의 합 (항상 1이어야 함)1.000000
평균 원문 길이3.283
심볼당 평균 비트 수0.9138비트
압축 없이 심볼당 필요 비트1비트

잎(사전 항목) — 확률 높은 순

BA” (21.00%)AAAAA” (16.81%)ABA” (14.70%)AAB” (14.70%)AAAB” (10.29%)BB” (9.00%)AAAAB” (7.20%)ABB” (6.30%)
잎 확률의 합이 정확히 1로 나와야 올바른 구현입니다. 잎 하나를 자식들로 바꿀 때 확률의 합이 그대로 보존되기 때문에(부모 확률 = 자식 확률의 합), 몇 번을 확장하든 이 값은 항상 1이어야 합니다.
허프만 부호화가 «문자 하나 → 가변 길이 부호»인 것과 반대로, 턴스톨은 «가변 길이 원문 시퀀스 → 고정 길이 부호»로 바꿉니다. 매번 확률이 가장 높은 잎을 골라 쪼개는 것이 핵심이며, 그래야 평균적으로 고정 부호 하나가 감당하는 원문 기호 수가 최대화됩니다.

사용 방법

  1. 1알파벳의 문자와 각 확률을 입력합니다(합이 1이어야 합니다).
  2. 2확장 횟수를 정합니다 — 늘릴수록 사전(잎) 크기가 커집니다.
  3. 3만들어진 잎(가변 길이 원문 조각)과 확률의 합이 1로 보존되는지 확인합니다.

자주 묻는 질문

허프만 부호화가 «고정 길이 원문(문자 하나) → 가변 길이 부호»인 것과 반대로, 턴스톨은 «가변 길이 원문(문자 몇 개짜리 시퀀스) → 고정 길이 부호»로 바꿉니다. 한 번에 고정된 크기의 블록만 다뤄야 하는 하드웨어(테이프 드라이브 등)에 잘 맞습니다.

알파벳의 각 문자를 잎 하나씩으로 시작해, 매번 확률이 가장 높은 잎을 골라 알파벳 문자 수만큼 자식으로 확장합니다. 확률 높은 잎부터 쪼개는 것이 핵심이며, 이렇게 하면 평균적으로 고정 부호 하나가 감당하는 원문 기호 수의 기댓값이 최대화됩니다.

잎 하나를 자식들로 바꿀 때 부모 확률 = Σ(부모 확률 × 자식 문자 확률) = 부모 확률 × 1로, 확률의 합이 그대로 보존되기 때문입니다. 몇 번을 확장하든 전체 잎의 확률 합은 항상 1이어야 하며, 이 계산기는 매번 이 값을 실제로 계산해서 보여줍니다.

평균 원문 길이(잎 확률 × 그 잎 시퀀스 길이의 기댓값)를 고정 부호 비트 수로 나눈 값이 원문 심볼 하나당 평균 비트 수입니다. 확률이 한쪽으로 치우칠수록, 확장을 많이 할수록 평균 원문 길이가 늘어나 압축 효율이 좋아집니다.

전송되지 않습니다. 계산은 모두 브라우저 안에서 이루어지고 넣은 값은 이 기기에만 남습니다.

알아두면 좋은 점

  • B.P. Tunstall의 1967년 박사논문에서 유래한 트리 구성 절차이며, 정보이론 표준교재(Cover & Thomas, Elements of Information Theory)가 이를 정본으로 명시합니다(2026-09-05 확인).
  • 잎 하나를 확장할 때 확률의 합이 보존된다는 불변식(항상 1)과, 어떤 잎의 시퀀스도 다른 잎의 접두사가 될 수 없다는 성질(온전한 접두부호)을 매 확장 단계마다 테스트로 고정했습니다.
  • 이 계산기는 사전 크기가 정확히 2의 거듭제곱이 되도록 확장 횟수를 맞추는 것은 사용자에게 맡기며, 확장 횟수만큼 트리를 키운 실제 결과(사전 크기·필요 비트 수)를 그대로 보여줍니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 5일 · 결과는 참고용 추정치입니다.