Ist die Huffman-Codierung immer optimal, da sie Shanons Ideen verwendet? Was ist mit Text, Bild, Video, ... Komprimierung?
Ist dieses Thema noch im Feld aktiv? Welche klassischen oder modernen Referenzen soll ich lesen?
Ist die Huffman-Codierung immer optimal, da sie Shanons Ideen verwendet? Was ist mit Text, Bild, Video, ... Komprimierung?
Ist dieses Thema noch im Feld aktiv? Welche klassischen oder modernen Referenzen soll ich lesen?
Antworten:
Die Huffman-Codierung ist optimal für eine Symbol-zu-Symbol-Codierung, bei der die Wahrscheinlichkeiten jedes Symbols unabhängig und vorher bekannt sind. Wenn diese Bedingungen jedoch nicht erfüllt sind (wie in Bild, Video), werden andere Codierungstechniken wie LZW, JPEG usw. verwendet. Weitere Informationen finden Sie im Buch "Einführung in die Datenkomprimierung" von Khalid Sayood.
Es gibt eine Version des Lempel-Ziv-Algorithmus, die in einigen Szenarien optimal ist. Wenn die Eingabe von einer ergodischen Markov-Kette stammt, entspricht die asymptotische Rate des Lempel-Ziv-Algorithmus der Entropie. Weitere Informationen hierzu finden Sie in Kapitel 13 von Cover und Thomas.
Die Huffman-Komprimierung mit bestimmten Annahmen, die normalerweise nicht für echte Dateien gelten, kann als optimal erwiesen werden.
Einige Komprimierungsalgorithmen komprimieren einige Arten von Dateien, die kleiner als der Huffman-Algorithmus sind , daher ist Huffman nicht optimal. Diese Algorithmen nutzen die eine oder andere Einschränkung des Huffman-Optimalitätsnachweises aus.
Wann immer wir (a) haben, codieren wir jedes Symbol unabhängig in einer ganzzahligen Anzahl von Bits, und (b) jedes Symbol ist "unabhängig" von den anderen Symbolen, die wir übertragen (keine gegenseitige Information, statistisch unabhängig usw.), und (c) Der Empfänger kennt die Wahrscheinlichkeitsverteilung jedes möglichen Symbols, dann ist die Huffman-Komprimierung optimal (erzeugt die kleinsten komprimierten Dateien).
(a) Symbol für Symbol: Durch Lockerung der binären Huffman-Einschränkung, dass jedes Eingabesymbol als ganzzahlige Anzahl von Bits codiert werden muss, sind mehrere Komprimierungsalgorithmen, wie z. B. die Bereichscodierung, niemals schlechter als und normalerweise besser als Standard-Huffman .
(b) nicht verwandte Symbole: Die meisten realen Datendateien enthalten einige gegenseitige Informationen zwischen Symbolen. Man kann es besser machen als einfaches Huffman, indem man die Symbole "dekorreliert" und dann den Huffman-Algorithmus für diese dekorrelierten Symbole verwendet.
(c) bekannte Wahrscheinlichkeitsverteilung: Normalerweise kennt der Empfänger die genaue Wahrscheinlichkeitsverteilung nicht. Typische Huffman-Komprimierungsalgorithmen senden also zuerst eine Frequenztabelle und dann die komprimierten Daten. Mehrere "adaptive" Komprimierungsalgorithmen, wie z. B. die Polar Tree-Codierung, können eine bessere Komprimierung als Huffman erzielen, da sie auf die Wahrscheinlichkeitsverteilung konvergieren oder sich an eine sich ändernde Wahrscheinlichkeitsverteilung anpassen, ohne jemals explizit eine Häufigkeitstabelle zu senden.
Bücher und Papiere, die eine solche Komprimierung diskutieren, die besser als Huffman ist:
Die optimale Komprimierungsrate hängt von der Entropie der Daten ab.
Aus dem Wikipedia-Artikel http://en.wikipedia.org/wiki/Shannon%27s_source_coding_theorem :
N iid Zufallsvariablen mit jeweils Entropie H (X) können mit vernachlässigbarem Risiko eines Informationsverlusts in mehr als NH (X) -Bits komprimiert werden, da N gegen unendlich tendiert; Wenn sie jedoch in weniger als NH (X) -Bits komprimiert werden, ist es praktisch sicher, dass Informationen verloren gehen.