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


21

확률 분포 대한 허프만 코드 p는 최소 가중 평균 코드 워드 길이 갖는 접두사 코드이며 ∑piℓi, 여기서 ℓi 는 i 번째 코드 워드 의 길이입니다 . 허프만 코드의 심볼 당 평균 길이는 H(p) 와 H(p)+1 이며, 여기서 H(p)=−∑ipilog2⁡pi 는 확률 분포의 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/MM≈2kln⁡2

1+ln⁡ln⁡2−ln⁡2ln⁡2≈0.08607.
모든 확률이 작은 상황에서 이것이 최선일까요?

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

답변:


19

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

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

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

A+B=128,A2+B/2≤128,maxA∈ZA52 2 − 6.5 76 2 − 7.5A=52,B=76522−6.5762−7.5

그런 다음 이고 허프만 코드는 엔트로피 손실을 . (우연히 엔트로피 손실은 허프만 코딩이든 대한 임의 코딩이든 관계없이 이름이 있습니다 . Kullback-Liebler divergence 며칠 전, Winpedia에서 Chernoff 경계에 대해 볼 수 있듯이 굳은 양면 Chernoff 경계로 이어집니다.H(X)=(52⋅6.5+76⋅7.5)/128=7.09375(52⋅0.5−76⋅0.5)/128≈0.99436QD(P‖Q)=∑pilog⁡piqi+∑(1−pi)log⁡1−pi1−qi


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

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

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

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

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