압축한 내용은 짧아졌는데, 파일은 왜 더 커졌을까요?

내용을 짧게 쓰는 부호를 골라도, 새 부호를 알려 주는 정보까지 저장해야 해요. 추가 비용을 20비트로 정한 모형에서 한 파일의 절감 조건과 평균 절감 조건을 따로 계산해요.

창가 나무 책상 위 닫힌 회색 노트북과 케이블

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

자체 저장 규약이에요. 미리 공유한 고정 부호 A=00, B=01, C=10은 기호마다 2 bit이고 추가 헤더는 없어요. 새 부호 A=0, B=10, C=11을 선택하면 그 부호 선택 정보로 별도 20 bit 헤더를 항상 붙여요. 길이 N의 메시지에서 A가 n_A개예요. 어느 조건에서 파일 전체가 짧아지는가? 각 위치의 기호 확률이 A 1/2, B 1/4, C 1/4일 때 평균적으로 짧아지는 N 조건도 비교해 볼까요? byte 패딩/다른 공통 헤더 비용은 없는 모형이에요.

Lfixed=2N,Lnew=20+nA+2(N−nA).L_{\rm fixed}=2N,\qquad L_{\rm new}=20+n_A+2(N-n_A).

새 규약의 길이는 2N+20−n_A이므로 실제 파일의 절감은 A가 20개보다 많을 때만 돼요. N이 많다는 조건만으로는 A 빈도를 보장하지 않아요. 각 위치에서 A 확률 1/2라 기댓값(확률을 반영한 평균) E(n_A)=N/2이고 다음 평균 조건을 얻어요.

Lnew<Lfixed  ⟺  nA>20,E(Lnew)=20+32N<2N  ⟺  N>40.L_{\rm new}<L_{\rm fixed}\iff n_A>20,\qquad E(L_{\rm new})=20+\frac32N<2N\iff N>40.

예를 들어 N=60은 평균 새 길이 110 bit로 기존 120보다 작지만, 실제 A가 10개인 메시지는 새 길이 130 bit라 더 커요. N=40에서는 평균이 같지만 A 빈도에 따라 실제 개별 파일의 결과는 달라져요. 기대 빈도만 쓰는 이 계산에는 모든 위치의 독립성까지 필요하지 않고 각 위치 확률 조건이면 충분해요. 개별 결과의 확률까지 구하려면 공동분포를 추가해야 해요.

Stanford의 설명은 payload에 사용한 부호표/트리의 정보도 복원에 필요하다고 구별해요. 현재 20 bit 헤더와 세 기호 규약은 그 필요를 검사하기 위한 자체 규칙이며 실제 Huffman 파일 표준이나 압축 성능 조사값이 아니에요. 원문 메시지와 부호표는 재사용하지 않았어요.

저장량 비교표에 내용 자체인 payload와 추가 비용을 따로 적어 봐요. 평균 절감 조건을 한 개 파일의 보장 조건으로 읽었다면 어떤 빈도 정보가 추가되었는지 확인해 봐요. 새 규약의 헤더까지 미리 공유했다는 다른 조건으로 바꾸면 현재 20 bit 항을 그대로 쓸 수 없어요.

착안 원문: Stanford CS106B, Huffman Coding handout (page updated3August2026). 세 기호 부호와 20 bit 헤더를 자체 저장 규약으로 정하고, 개별 파일과 평균 저장량의 절감 조건을 따로 계산했어요.

이 글 공유하기

개인정보 및 방문 통계 안내