큰 확률 문자가 없을 때 허프만 코드는 얼마나 좋습니까?


21

확률 분포 대한 허프만 코드 p는 최소 가중 평균 코드 워드 길이 갖는 접두사 코드이며 pii, 여기서 ii 번째 코드 워드 의 길이입니다 . 허프만 코드의 심볼 당 평균 길이는 H(p)H(p)+1 이며, 여기서 H(p)=ipilog2pi 는 확률 분포의 Shannon 엔트로피입니다.

평균 길이가 Shannon 엔트로피를 거의 1만큼 초과하는 정식 나쁜 예는 과 같은 확률 분포 {.999,.001}이며, 엔트로피가 거의 0이고 평균 코드 워드 길이는 1입니다. 엔트로피와 거의 의 코드 워드 길이 사이 1.

그러나 확률 분포에서 가장 큰 확률에 대한 경계가있는 경우 어떻게됩니까? 예를 들어 모든 확률이 1 보다 작다고 가정합니다.12 . 이 경우에 찾을 수있는 가장 큰 간격은와 같은 확률 분포{.499,.499,.002}에 대한 것입니다. 엔트로피는 1보다 약간 더 길고 평균 코드 워드 길이는 1.5보다 약간 작습니다.0.5. 이것이 최선입니까? 이 경우 엄격하게 1보다 작은 간격에 상한을 줄 수 있습니까?

이제 모든 확률이 매우 작은 경우를 생각해 봅시다. 각각 확률이 1 / M 인 M 문자에 대한 확률 분포를 선택한다고 가정하십시오 . 이 경우 M 2 k ln 2 를 선택하면 가장 큰 간격이 발생합니다 . 여기에서 약 1 + ln ln 2 ln 2 의 간격이 생깁니다.1/MM2kln2

1+lnln2ln2ln20.08607.
모든 확률이 작은 상황에서 이것이 최선일까요?

이 질문은이 TCS Stackexchange 질문에서 영감을 얻었습니다 .

답변:


19

언급 한 문제를 정확하게 연구하는 논문이 많이 있습니다. 시리즈의 첫 번째는 Gallager의 논문, "Huffman의 테마에 따른 변형", IEEE-IT, vol. 24, 1978, 668-674 쪽. 그는 허프만 코드의 평균 부호 길이 및 상기 엔트로피 (그가 그 양 "중복"전화) 사이의 차이가 엄격보다 항상 증명 케이스에서, (= 확률 분포에서 최대 확률) P 1 / 2 및 그것보다 작은 , P + 0.086 , 만약 P < 1 / 2 . 더 나은 범위가 알려져 있으며 Gallager의 작품을 인용하는 수많은 논문에서 찾을 수 있습니다.pp1/2p+0.086p<1/2


2
최적의 경계는 Manstetten, 허프만 코드의 중복에 대한 엄격한 경계에 의해 발견되었습니다 .
Yuval Filmus

2

에 의해 판단 바인딩, 난 당신이 다른 질문을하도록 믿습니다하거나 "평균"을 가지고 어떻게 당신은 지정하지 않았습니다. 둘 다 대답하겠습니다. 대답은 두 질문 모두에 대한 대답이 아닙니다.H(p)H(p)+1

먼저, 코드 워드에 대한 균일 분포를 사용하여 평균 코드 길이를 정의 하고 한 요소의 확률에 대한 상한으로 를 취하는 경우 길이 q + k 의 코드를 고려하십시오. 여기서 2 q - 1 코드 워드의 길이는 q입니다 나머지 2 q + k - 1 은 길이 q + k를 갖습니다 . 이 코드로 완벽하게 인코딩 된 분포의 경우 엔트로피가 한 요소의 확률에 대한 하한값이없는 한 평균 길이는 q + k에 접근 합니다.2qq+k2q1q2q+k1q+kq+k .q+k2

허프만 코드가 를 코딩하는 데 사용될 때 평균 코드 워드 길이를 의미하는 "평균 길이"를 고려해 봅시다 . 여기서, 상기 바인딩은 단단하고 제한 그것을 달성하는 예시적인 분포는 각 요소 확률로 발생하는 하나 2 Q ± 1 / 2 에 대한 Q Z . (마지막 요소에는 남은 확률이 할당되지만 무차별 적으로 차이는 없습니다.)p2q±1/2qZ.

예를 들어, 고려 다음q=7.

A+B=128,A2+B/2128,maxAZA52 2 6.5 76 2 7.5A=52,B=765226.57627.5

그런 다음 이고 허프만 코드는 엔트로피 손실을 . (우연히 엔트로피 손실은 허프만 코딩이든 대한 임의 코딩이든 관계없이 이름이 있습니다 . Kullback-Liebler divergence 며칠 전, Winpedia에서 Chernoff 경계에 대해 볼 수 있듯이 굳은 양면 Chernoff 경계로 이어집니다.H(X)=(526.5+767.5)/128=7.09375(520.5760.5)/1280.99436QD(PQ)=pilogpiqi+(1pi)log1pi1qi


1
나는이 두 번째 예에서 다소 당황합니다. 128 개의 코드 워드가있는 경우 평균 단어 길이가 7 (실제로 모든 단어 길이가 7 임) 인 코드가 있으며 엔트로피가 7.09375라는 진술과 모순됩니다. 허프만 코드의 평균 길이는 7 인 반면 이 분포의 엔트로피 (가중 평균은 평균이 아닌 )는 6.88이며 허프만 코드의 평균 길이는 7입니다. 0.12 정도인데, 이것은 나의 예제보다 약간 나아 보이지만 1에 가깝지는 않습니다.log2pi
Peter Shor

그리고 실제로, 당신은 옳습니다. 확률 분포 에서 예상되는 코드 워드 길이에 대해 묻고 자했습니다 . p
Peter Shor 2019

죄송합니다 . vs 에 대해 잘못 계산했습니다 . 우리는 여전히 보다 약간 작은 하지만 와 같이 더 적은 항목을 아래쪽 행으로 강제합니다. 이것은ABA2+B/22kA+2B=2kA=21/221B.
Carl

실제로 그것은 이지만 ...이 방정식 시스템은 긍정적 인 해결책을 가지고 있지 않습니다. 우리는 모든 것을 반정 수 제곱으로 강제 할 수 없습니다 . 따라서 및 대신에 허프만 코드의 절반에 대해 및 고려할 수 있습니다. 나머지는 항목을 제공합니다.2A+B221/2(1+x)/2k(1x)/2k+132k
Carl

따라서 이것을 시도하십시오 (최적의 방법은 아닙니다-반올림 또는 반올림하는 방법에 따라 다릅니다). 확률 항목 및 확률 항목 엔트로피 갖는다 . 대신에 그 변경 확률 항목 와 확률 항목 . 이 분포의 엔트로피는 로 6.4023을 제공하지만 허프만 코드의 엔트로피는 균일하게 7.5입니다.따라서 내가 잘못 계산하지 않으면 (그리고 자주하는 경우가 아니라면)641/1281281/2567.5641/12821281/256(21/2)1/(22)7.5+(11/(2(2)))5.802(121.5)7+21.58=7.3535.0.95 .
Carl
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.