Quanto è buono il codice Huffman quando non ci sono grandi lettere di probabilità?


21

Il codice Huffman per una distribuzione di probabilità p è il prefisso con la lunghezza media ponderata minima della parola chiave pii , dove i è la lunghezza della i parola in codice. È un noto teorema che la lunghezza media per simbolo del codice Huffman è compresa tra H(p) e H(p)+1 , dove H(p)=ipilog2pi è l'entropia di Shannon della distribuzione di probabilità.

Il cattivo esempio canonico, in cui la lunghezza media supera l'entropia di Shannon di quasi 1, è una distribuzione di probabilità come {.999,.001} , in cui l'entropia è quasi 0 e la lunghezza media della parola in codice è 1. Ciò crea un gap tra l'entropia e la lunghezza della parola in codice di quasi 1 .

Ma cosa succede quando c'è un limite alla maggiore probabilità nella distribuzione della probabilità? Supponiamo, ad esempio, che tutte le probabilità siano inferiori a 12 . Il divario più grande che ho trovato in questo caso è per una distribuzione di probabilità come{.499,.499,.002}, in cui l'entropia è leggermente superiore a 1 e la lunghezza media dellaparolachiaveè leggermente inferiore a 1,5, dando un gap in avvicinamento0.5. Questo è il meglio che sai fare? Puoi dare un limite superiore al divario che è rigorosamente inferiore a 1 per questo caso?

Consideriamo ora il caso in cui tutte le probabilità sono molto piccole. Supponiamo di scegliere una distribuzione di probabilità su M lettere, ciascuno con probabilità 1/M . In questo caso, il divario maggiore si verifica se si sceglie M2kln2 . Qui, si ottiene un gap di circa

1+lnln2ln2ln20.08607.
È questo il meglio che puoi fare nella situazione in cui tutte le probabilità sono piccole?

Questa domanda è stata ispirata da questa domanda TCS Stackexchange .

Risposte:


19

Ci sono molti documenti che studiano esattamente il problema che menzioni. Il primo della serie è un articolo di Gallager, "Variazioni su un tema di Huffman", IEEE-IT, vol. 24, 1978, pagg. 668-674. Dimostra che la differenza tra la lunghezza parola codificata medio di un codice Huffman e l'entropia (che chiama che quantità "ridondanza") è sempre strettamente minore di (= grande probabilità nella distribuzione di probabilità), nel caso p 1 / 2 , ed è inferiore p + 0,086 , se p < 1 / 2 . Sono noti limiti migliori, li puoi trovare nei numerosi articoli che citano il lavoro di Gallager.pp1/2p+0.086p<1/2


2
Il limite ottimale è stato trovato da Manstetten, limiti stretti sulla ridondanza dei codici Huffman .
Yuval Filmus,

2

A giudicare dal limite , credo che tu abbia intenzione di porre una domanda diversa ... o semplicemente non hai specificato come prendere la "media". Quindi risponderò ad entrambi. La risposta è no a entrambe le domande.H(p)H(p)+1

Innanzitutto, se definisci la lunghezza media del codice usando una distribuzione uniforme su parole in codice e prendi come limite superiore sulla probabilità di un singolo elemento, allora considera il codice di lunghezza q + k dove 2 q - 1 parole di codice hanno lunghezza q e i restanti 2 q + k - 1 hanno lunghezza q + k . Per la distribuzione perfettamente codificata da questo codice, la lunghezza media si avvicina a q + k , a meno che tu non abbia anche un limite inferiore per la probabilità di un elemento, mentre l'entropia è2qq+k2q1q2q+k1q+kq+k .q+k2

Consideriamo ora la "lunghezza media" che significa la lunghezza media della parola in codice quando il codice Huffman viene utilizzato per codificare . Qui, il limite è stretto, e una distribuzione esempio realizzarlo nel limite è quella in cui ciascun elemento si verifica con probabilità 2 q ± 1 / 2 per q Z . (All'elemento finale viene assegnata qualsiasi probabilità rimanente, ma non farà alcuna differenza asintoticamente).p2q±1/2qZ.

Ad esempio, considera Quindiq=7.

restituisceA=52,B=76. La nostra distribuzione ha52elementi con probabilità2 - 6.5 ,76con probabilità2 - 7.5 e un elemento ottiene gli avanzi.A+B=128,A2+B/2128,maxAZAA=52,B=765226.57627.5

H(X)=(526.5+767.5)/128=7.09375(520.5760.5)/1280.99436QD(PQ)=pilogpiqi+(1pi)log1pi1qi. Usandolo, ho scoperto alcuni giorni fa, porta a limiti Chernoff bifacciali più stretti, come puoi vedere su Wikipedia per i limiti Chernoff.)


1
Sono un po 'sconcertato da questo secondo esempio. Se hai 128 parole in codice, allora c'è un codice con una lunghezza media delle parole 7 (in effetti, tutte le lunghezze delle parole hanno 7), che contraddice la tua affermazione che l'entropia è 7.09375. L'entropia di questa distribuzione (che si ottiene prendendo una media ponderata di e non una media) è 6,88, mentre la lunghezza media del codice Huffman è 7. Questo dà un gap (o divergenza di Kullback-Liebler) di intorno allo 0,12, che sembra essere un po 'meglio del mio esempio, ma non vicino all'1.log2pi
Peter Shor,

E in effetti hai ragione. Intendevo chiedere la lunghezza del codeword prevista sotto la distribuzione di probabilità . p
Peter Shor,

Ops, ho calcolato male su vs . Vogliamo ancora leggermente inferiore a , ma qualcosa come , per forzare le voci minori nella riga inferiore. Questo dàB A AB 2kA+2B=2kA= 2 - 1 / A2+B/22kA+2B=2kA=21/221B.
Carl,

In realtà sarebbe ... ma questo sistema di equazioni non ha una soluzione positiva - sembra che non possiamo forzare tutto a essere poteri a numero intero di . Quindi invece di e possiamo considerare, ad esempio per metà del codice Huffman e per il resto, dando voci ...2 2A+B2 1/2 (1+x)/2k(1-x)/2 k + 1 32k1/2(1+x)/2k(1x)/2k+132k
Carl,

Quindi, prova questo (non ottimale - suppongo che dipenda da come decidi di arrotondare per eccesso o per difetto). voci con probabilità e voci con probabilità ha entropia . Invece in voci con probabilità e voci con probabilità . L'entropia di questa distribuzione è che fornisce 6.4023, mentre l'entropia del codice Huffman è 7.5 in uniforme eQuindi, a meno che non abbia calcolato male (e lo faccio spesso), questo dà un vuoto di circa1 / 128 128 1 / 256 7.5 64 1 / 128 641/1281281/2567.564 1281/256(2-1/1/12821281/(21/256(21/2)(1-2 - 1.5 )7+2 - 1.58=7.3535. 0.951/(22)7.5+(11/(2(2)))5.802(121.5)7+21.58=7.3535.0.95 .
Carl,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.