Die Anforderung, dass die Codierung präfixfrei sein muss, führt zu großen Bäumen, da der Baum vollständig sein muss. Gibt es einen Schwellenwert, bei dem die nicht codierte Speicherung von Daten mit fester Länge effizienter wäre als die Codierung der Daten?
9
Antworten:
Die Entropie
H(A)
für dieses Problem ist1.998
. Sowohl die Huffman-Codierung als auch die Codierung mit fester Länge für dieses Problem haben eine durchschnittliche Codewortlänge von2
. Und zu Ihrer Information, die Codierung, die Sie mit Huffman Encoding erhalten haben, ist falsch. Die Huffman-Codierung erzeugt für dieses Problem auch Codes, die der festen Länge ähneln. Es verwendet einen gierigen Ansatz. Erhälta
also keinen Code als,0
sondern stattdessen00
. Überarbeiten Sie den Baum, den Sie mit Huffman Coding generieren. Der Baum, den Sie bekommen sollten, ist:quelle
Introduction to Algorithms
durchCLRS
. In dem Kapitel, das darüber sprichtgreedy algorithms
, können Sie den formalen Beweis dafür erhaltenHuffman algorithm
. Es ist ein langer Beweis und braucht Geduld zum Lesen.Die Huffman-Codierung approximiert die Bevölkerungsverteilung mit Potenzen von zwei Wahrscheinlichkeiten. Wenn die wahre Verteilung aus Potenzen mit zwei Wahrscheinlichkeiten besteht (und die Eingabesymbole vollständig unkorreliert sind), ist die Huffman-Codierung optimal. Wenn nicht, können Sie die Bereichskodierung verbessern. Es ist jedoch unter allen Codierungen optimal, die bestimmten Symbolen in der Eingabe bestimmte Sätze von Bits zuweisen.
quelle
Ja, es ist immer optimal.
Nein, es gibt keinen Schwellenwert, bei dem weniger Speicherplatz für die Verwendung nicht codierter Daten fester Länge benötigt würde.
Ich habe eine Reihe von Beweisen im Web gefunden, aber es gibt genügend Diskussionen im Wikipedia-Artikel Huffman-Codierung .
Dies umfasst auch andere Techniken, die eine höhere Komprimierung erzielen (Arbeiten außerhalb des Bereichs, für den der Huffman-Code optimal ist).
quelle