섀넌-파노 부호화 계산기
글이나 빈도 목록을 빈도가 절반씩 되도록 재귀적으로 나눠 부호를 매기는 섀넌-파노(Shannon-Fano) 부호화 과정을 단계별로 보여줍니다. 같은 빈도표로 만든 허프만 부호와 나란히 놓아, 섀넌-파노가 항상 최적은 아니라는 것을 직접 확인할 수 있습니다.
글자별 빈도를 세어 부호를 만듭니다
기호 5가지 · 전체 11개
평균 2.18비트
엔트로피 2.04비트보다 0.14비트 깁니다
허프만과 견주기
부호표
| 기호 | 빈도 | 부호 | 비트 |
|---|---|---|---|
| a45.5% | 5 | 00 | 2 |
| b18.2% | 2 | 01 | 2 |
| r18.2% | 2 | 10 | 2 |
| c9.1% | 1 | 110 | 3 |
| d9.1% | 1 | 111 | 3 |
나누는 과정
| 접두 | 왼쪽(→0) | 오른쪽(→1) |
|---|---|---|
| (뿌리) | ab(7) | rcd(4) |
| 0 | a(5) | b(2) |
| 1 | r(2) | cd(2) |
| 11 | c(1) | d(1) |
사용 방법
- 1글을 넣거나 «기호:빈도» 목록을 넣습니다.
- 2나누는 과정에서 빈도 합이 절반에 가장 가깝게 갈라지는 지점을 확인합니다.
- 3같은 입력의 허프만 평균 부호길이와 견주어 봅니다.
- 4고전 예(15,7,6,6,5)를 빈도 목록에 넣어 섀넌-파노가 허프만보다 실제로 길어지는 경우를 확인합니다.
자주 묻는 질문
기호를 빈도 내림차순으로 정렬한 뒤, 누적 빈도가 전체의 절반에 처음 도달하는 지점에서 둘로 나눕니다. 왼쪽 그룹에는 0, 오른쪽 그룹에는 1을 붙이고, 각 그룹 안에서 기호가 하나만 남을 때까지 같은 나누기를 반복합니다.
순서가 정반대입니다. 허프만은 가장 작은 두 마디를 계속 합쳐 올라가는 상향식이고, 섀넌-파노는 전체를 절반씩 계속 나눠 내려가는 하향식입니다. 같은 빈도표를 넣어도 서로 다른 부호가 나올 수 있습니다.
허프만 부호화는 평균 부호길이가 가능한 모든 접두부호 중 최소임이 증명돼 있습니다. 섀넌-파노는 그런 보장이 없어, 같은 빈도표에서 허프만보다 평균 부호길이가 길거나 같을 뿐 더 짧아지는 일은 없습니다. 빈도가 (15,7,6,6,5)인 경우가 둘의 차이가 실제로 벌어지는 대표적인 예로 널리 알려져 있습니다.
이 알고리즘은 기호가 하나 남을 때까지 그룹을 계속 둘로 나누는 완전 이진 트리를 만들기 때문입니다. 기호는 전부 트리의 잎에만 있고, 어떤 잎도 다른 잎으로 가는 경로의 중간에 있지 않아 한 부호가 다른 부호의 앞부분이 될 수 없습니다.
없습니다. 섀넌의 소스 부호화 정리에 따라 기호 하나를 평균 H비트보다 적게 담는 무손실 부호는 존재하지 않으며, 이는 허프만이든 섀넌-파노든 모든 접두부호에 똑같이 적용됩니다.
전송되지 않습니다. 계산은 전부 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.
알아두면 좋은 점
- 기호는 300가지까지만 다룹니다.
- 기호가 한 가지뿐이면 관례대로 1비트("0")를 줍니다.
- 나누는 지점(누적 빈도가 절반을 처음 넘는 곳)을 정하는 방법이 유일한 표준은 아니라, 다른 구현은 다른 부호를 낼 수 있습니다. 다만 어떤 방식으로 나누든 완전 이진 트리라는 성질(그래서 접두부호가 성립한다는 점) 자체는 달라지지 않습니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 3일 · 결과는 참고용 추정치입니다.