Der Huffman-Code für eine Wahrscheinlichkeitsverteilung ist der Präfixcode mit der minimalen gewichteten durchschnittlichen Codewortlänge , wobei die Länge des ten Codeworts ist. Es ist ein bekanntes Theorem, dass die durchschnittliche Länge pro Symbol des Huffman-Codes zwischen und , wobei die Shannon-Entropie ist der Wahrscheinlichkeitsverteilung.
Das kanonisch schlechte Beispiel, bei dem die durchschnittliche Länge die Shannon-Entropie um fast 1 überschreitet, ist eine Wahrscheinlichkeitsverteilung wie , bei der die Entropie nahezu 0 ist und die durchschnittliche Codewortlänge 1 beträgt eine Lücke zwischen der Entropie und der Codewortlänge von fast .
Aber was passiert, wenn die Wahrscheinlichkeitsverteilung an die größte Wahrscheinlichkeit gebunden ist? Angenommen, alle Wahrscheinlichkeiten sind kleiner als . Die größte Lücke, die ich in diesem Fall finden konnte, ist für eine Wahrscheinlichkeitsverteilung wie , bei der die Entropie etwas mehr als 1 und die durchschnittliche Codewortlänge etwas weniger als 1,5 beträgt, was a ergibt Lücke nähert sich . Ist das das Beste, was du tun kannst? Können Sie eine Obergrenze für die Lücke angeben, die in diesem Fall streng unter 1 liegt?
Betrachten wir nun den Fall, in dem alle Wahrscheinlichkeiten sehr klein sind. Angenommen , Sie eine Wahrscheinlichkeitsverteilung über wählen Buchstaben, von denen jede Wahrscheinlichkeit . In diesem Fall tritt die größte Lücke auf, wenn Sie wählen . Hier erhalten Sie eine Lücke von ungefähr Ist dies das Beste, was Sie in einer Situation tun können, in der alle Wahrscheinlichkeiten gering sind?
Diese Frage wurde von dieser TCS Stackexchange-Frage inspiriert .
quelle
Nach der Grenze von urteilen , haben Sie vermutlich beabsichtigt, eine andere Frage zu stellen ... oder Sie haben einfach nicht angegeben, wie Sie den "Durchschnitt" nehmen. Also werde ich beides beantworten. Die Antwort ist nein auf beide Fragen.H(p)≤…≤H(p)+1
Wenn Sie die durchschnittliche Codelänge unter Verwendung einer gleichmäßigen Verteilung über Codewörter definieren und als obere Grenze für die Wahrscheinlichkeit eines Elements verwenden, betrachten Sie zunächst den Längencode mit Codewörter haben die Länge und die verbleibenden haben die Länge . Für die durch diesen Code perfekt codierte Verteilung nähert sich die durchschnittliche Länge , es sei denn, Sie haben auch eine Untergrenze für die Wahrscheinlichkeit eines Elements, während die Entropie . 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
Betrachten wir nun die "durchschnittliche Länge", dh die durchschnittliche Codewortlänge, wenn der Huffman-Code zum Codieren von . Hier ist die Schranke eng, und eine beispielhafte Verteilung, die diese Grenze erreicht, ist eine, bei der jedes Element mit einer Wahrscheinlichkeit von für auftritt(Dem letzten Element wird eine Restwahrscheinlichkeit zugewiesen, die jedoch asymptotisch keinen Unterschied macht.)2 q ± 1 / 2 q ∈ Z .p 2q±1/2 q∈Z.
Betrachten Sie zum Beispiel Dannq=7.
Dann ist , während der Huffman-Code einen Entropieverlust von . (Übrigens hat der Entropieverlust einen Namen, egal ob Sie Huffman-Codierung oder beliebige Codierung für : die Kullback-Liebler-Divergenz . Ich habe vor ein paar Tagen herausgefunden, dass die Verwendung zu engeren doppelseitigen Chernoff-Grenzen führt, wie Sie auf Wikipedia für Chernoff-Grenzen sehen können.)( 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
quelle