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é.
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 .
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?
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?
Cette question est inspirée de cette question TCS Stackexchange .
la source
À 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 + k2−q q+k 2q−1 q 2q+k−1 q+k q+k q+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 .p 2q±1/2 q∈Z.
Par exemple, considérons Ensuite,q=7.
A=52,B=76522 - 6,5 762 - 7,5A+B=128,A2–√+B/2–√≤128,maxA∈ZA donne . Notre distribution a éléments avec une probabilité , avec une probabilité , et un élément obtient les restes.A=52,B=76 52 2−6.5 76 2−7.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)=(52⋅6.5+76⋅7.5)/128=7.09375 (52⋅0.5−76⋅0.5)/128≈0.99436 Q D(P∥Q)=∑pilogpiqi+∑(1−pi)log1−pi1−qi
la source