Quelle est la qualité du code Huffman lorsqu'il n'y a pas de grandes lettres de probabilité?

21

Le code de Huffman pour une distribution de probabilité est le code de préfixe avec la longueur moyenne pondérée minimale du mot de code , où est la longueur du ème mot de code. C'est un théorème bien connu que la longueur moyenne par symbole du code Huffman est comprise entre et , où est l'entropie de Shannon de la distribution de probabilité.ppiiiiH(p)H(p)+1H(p)=ipilog2pi

Le mauvais exemple canonique, où la longueur moyenne dépasse l'entropie de Shannon de près de 1, est une distribution de probabilité telle que , où l'entropie est proche de 0 et la longueur moyenne des mots de code est 1. Cela donne un écart entre l'entropie et la longueur du mot de code de près de .{.999,.001}1

Mais que se passe-t-il quand il y a une limite sur la plus grande probabilité dans la distribution de probabilité? Supposons, par exemple, que toutes les probabilités soient inférieures à . L'écart le plus important que j'ai pu trouver dans ce cas est pour une distribution de probabilité telle que , où l'entropie est légèrement supérieure à 1 et la longueur moyenne des mots de code est légèrement inférieure à 1,5, ce qui donne un écart approchant . Est-ce le mieux que vous puissiez faire? Pouvez-vous donner une limite supérieure sur l'écart strictement inférieur à 1 pour ce cas?12{.499,.499,.002}0.5

Maintenant, considérons le cas où toutes les probabilités sont très petites. Supposons que vous choisissez une distribution de probabilités sur lettres, chacune ayant la probabilité . Dans ce cas, l'écart le plus important se produit si vous choisissez . Ici, vous obtenez un écart d'environ Est-ce le mieux que vous puissiez faire dans une situation où toutes les probabilités sont faibles?M1/MM2kln2

1+lnln2ln2ln20.08607.

Cette question est inspirée de cette question TCS Stackexchange .

Peter Shor
la source

Réponses:

19

Il existe de nombreux articles qui étudient exactement le problème que vous mentionnez. Le premier de la série est un article de Gallager, "Variations sur un thème de Huffman", IEEE-IT, vol. 24, 1978, p. 668-674. Il prouve que la différence entre la longueur moyenne des mots de code d'un code de Huffman et l'entropie (il appelle cette quantité "redondance") est toujours strictement inférieure à (= probabilité la plus élevée dans la distribution de probabilité), dans le cas , et il est inférieur à , si . De meilleures limites sont connues, vous pouvez les trouver dans les nombreux articles qui citent le travail de Gallager.p une / deux p + 0,086 p < une / deuxpp1/2p+0.086p<1/2

Ugo
la source
2
La limite optimale a été trouvée par Manstetten, Limites serrées sur la redondance des codes Huffman .
Yuval Filmus
2

À en juger par la limite , je crois que vous aviez l'intention de poser une question différente ... ou vous n'avez tout simplement pas précisé comment vous prenez la "moyenne". Je répondrai donc aux deux. La réponse est non aux deux questions.H(p)H(p)+1

Tout d'abord, si vous définissez la longueur moyenne du code en utilisant une distribution uniforme sur les mots de code et prenez comme limite supérieure de la probabilité d'un élément, alors considérez le code de longueur où mots de code ont une longueur et les restants ont une longueur . Pour la distribution parfaitement encodée par ce code, la longueur moyenne approche , sauf si vous avez également une borne inférieure pour la probabilité d'un élément, tandis que l'entropie est . q + k 2 q - 1 q 2 q + k - 1 q + k q + k q + k2qq+k2q1q2q+k1q+kq+kq+k2

Considérons maintenant la «longueur moyenne» signifiant la longueur moyenne des mots de code lorsque le code Huffman est utilisé pour coder pour . Ici, la limite est étroite, et un exemple de distribution qui l'atteint dans la limite est celui dans lequel chaque élément se produit avec une probabilité pour(Le dernier élément se voit attribuer une probabilité résiduelle, mais cela ne fera aucune différence asymptotiquement).2 q ± une / 2 q Z .p2q±1/2qZ.

Par exemple, considérons Ensuite,q=7.

A=52,B=76522 - 6,5 762 - 7,5A+B=128,A2+B/2128,maxAZA donne . Notre distribution a éléments avec une probabilité , avec une probabilité , et un élément obtient les restes.A=52,B=765226.57627.5

Alors , tandis que le code Huffman atteint perte d'entropie. (Par ailleurs, la perte d'entropie a un nom, que vous fassiez du codage Huffman ou du codage arbitraire pour : la divergence Kullback-Liebler . En l'utilisant, j'ai découvert il y a quelques jours, conduit à des limites de Chernoff à double face plus serrées, comme vous pouvez le voir sur Wikipédia pour les limites de Chernoff.)( 52 0,5 - 76 0,5 ) / 128 0,99436 Q D ( P Q ) = p i log p iH(X)=(526.5+767.5)/128=7.09375(520.5760.5)/1280.99436QD(PQ)=pilogpiqi+(1pi)log1pi1qi

Carl
la source
1
Je suis quelque peu déconcerté par ce deuxième exemple. Si vous avez 128 mots de code, alors il y a un code avec une longueur moyenne de mot 7 (en fait, toutes les longueurs de mot en ont 7), ce qui contredit votre affirmation selon laquelle l'entropie est 7.09375. L'entropie de cette distribution (que vous obtenez en prenant une moyenne pondérée de et non une moyenne) est de 6,88, tandis que la longueur moyenne du code Huffman est de 7. Cela donne un écart (ou divergence Kullback-Liebler) de environ 0,12, ce qui semble être un peu mieux que mon exemple, mais pas près de 1.log2pi
Peter Shor
Et en effet, vous avez raison. J'avais l'intention de poser des questions sur la longueur de mot de code attendue sous la distribution de probabilité . p
Peter Shor
Oops, je mal calculé à propos vs . Nous voulons toujours que légèrement inférieur à , mais quelque chose comme , pour forcer les entrées les moins importantes dans la ligne inférieure. Cela donneB A AB 2kA+2B=2kA= 2 - 1 / A2+B/22kA+2B=2kA=21/221B.
Carl
En fait, ce serait ... mais ce système d'équations n'a pas de solution positive - il semble que nous ne pouvons pas forcer tout à être des puissances demi-entières de . Ainsi, au lieu de et nous pouvons considérer, par exemple pour la moitié du code Huffman et pour le reste, donnant entrées ...2 2A+B2 1/2 (1+x)/2k(1-x)/2 k + 1 32k1/2(1+x)/2k(1x)/2k+132k
Carl
Donc, essayez ceci (pas optimal - je suppose que cela dépend de la façon dont vous décidez d'arrondir vers le bas ou vers le haut). entrées avec probabilité et entrées avec probabilité ont l'entropie . Modifiez plutôt cela à entrées avec une probabilité et entrées avec une probabilité . L'entropie de cette distribution est ce qui donne 6,4023, tandis que l'entropie du code Huffman est 7,5 sous uniforme, etDonc, sauf si j'ai mal calculé (et je le fais souvent), cela donne un écart d'environ1 / 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