도구스개발

섀넌-파노 부호화 계산기

글이나 빈도 목록을 빈도가 절반씩 되도록 재귀적으로 나눠 부호를 매기는 섀넌-파노(Shannon-Fano) 부호화 과정을 단계별로 보여줍니다. 같은 빈도표로 만든 허프만 부호와 나란히 놓아, 섀넌-파노가 항상 최적은 아니라는 것을 직접 확인할 수 있습니다.

글자별 빈도를 세어 부호를 만듭니다

기호 5가지 · 전체 11개

평균 2.18비트

엔트로피 2.04비트보다 0.14비트 깁니다

허프만과 견주기

엔트로피 H2.04비트
섀넌-파노 평균 길이2.18비트
허프만 평균 길이2.09비트
차이+0.09비트 — 섀넌-파노가 더 깁니다

부호표

기호빈도부호비트
a45.5%5002
b18.2%2012
r18.2%2102
c9.1%11103
d9.1%11113

나누는 과정

접두왼쪽(→0)오른쪽(→1)
(뿌리)ab(7)rcd(4)
0a(5)b(2)
1r(2)cd(2)
11c(1)d(1)
섀넌-파노는 하향식입니다. 기호를 빈도 내림차순으로 늘어놓고, 누적 빈도가 전체의 절반에 처음 도달하는 지점에서 둘로 나눕니다. 왼쪽에는 0, 오른쪽에는 1을 붙이고 각 그룹 안에서 기호가 하나만 남을 때까지 반복합니다. 허프만(가장 작은 두 마디를 계속 합치는 상향식)과 순서가 정반대입니다.
허프만보다 짧아지는 일은 없습니다. 허프만이 평균 부호길이가 최소임이 증명돼 있는 반면, 섀넌-파노는 그런 보장이 없어 같은 빈도표에서 허프만보다 길거나 같을 뿐입니다. 위 예시(15,7,6,6,5)가 둘의 차이가 실제로 벌어지는 대표적인 경우입니다.

사용 방법

  1. 1글을 넣거나 «기호:빈도» 목록을 넣습니다.
  2. 2나누는 과정에서 빈도 합이 절반에 가장 가깝게 갈라지는 지점을 확인합니다.
  3. 3같은 입력의 허프만 평균 부호길이와 견주어 봅니다.
  4. 4고전 예(15,7,6,6,5)를 빈도 목록에 넣어 섀넌-파노가 허프만보다 실제로 길어지는 경우를 확인합니다.

자주 묻는 질문

기호를 빈도 내림차순으로 정렬한 뒤, 누적 빈도가 전체의 절반에 처음 도달하는 지점에서 둘로 나눕니다. 왼쪽 그룹에는 0, 오른쪽 그룹에는 1을 붙이고, 각 그룹 안에서 기호가 하나만 남을 때까지 같은 나누기를 반복합니다.

순서가 정반대입니다. 허프만은 가장 작은 두 마디를 계속 합쳐 올라가는 상향식이고, 섀넌-파노는 전체를 절반씩 계속 나눠 내려가는 하향식입니다. 같은 빈도표를 넣어도 서로 다른 부호가 나올 수 있습니다.

허프만 부호화는 평균 부호길이가 가능한 모든 접두부호 중 최소임이 증명돼 있습니다. 섀넌-파노는 그런 보장이 없어, 같은 빈도표에서 허프만보다 평균 부호길이가 길거나 같을 뿐 더 짧아지는 일은 없습니다. 빈도가 (15,7,6,6,5)인 경우가 둘의 차이가 실제로 벌어지는 대표적인 예로 널리 알려져 있습니다.

이 알고리즘은 기호가 하나 남을 때까지 그룹을 계속 둘로 나누는 완전 이진 트리를 만들기 때문입니다. 기호는 전부 트리의 잎에만 있고, 어떤 잎도 다른 잎으로 가는 경로의 중간에 있지 않아 한 부호가 다른 부호의 앞부분이 될 수 없습니다.

없습니다. 섀넌의 소스 부호화 정리에 따라 기호 하나를 평균 H비트보다 적게 담는 무손실 부호는 존재하지 않으며, 이는 허프만이든 섀넌-파노든 모든 접두부호에 똑같이 적용됩니다.

전송되지 않습니다. 계산은 전부 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.

알아두면 좋은 점

  • 기호는 300가지까지만 다룹니다.
  • 기호가 한 가지뿐이면 관례대로 1비트("0")를 줍니다.
  • 나누는 지점(누적 빈도가 절반을 처음 넘는 곳)을 정하는 방법이 유일한 표준은 아니라, 다른 구현은 다른 부호를 낼 수 있습니다. 다만 어떤 방식으로 나누든 완전 이진 트리라는 성질(그래서 접두부호가 성립한다는 점) 자체는 달라지지 않습니다.

함께 보면 좋은 도구

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