Der beliebte DEFLATE-Algorithmus verwendet Huffman-Codierung über Lempel-Ziv.
Wenn wir eine zufällige Datenquelle haben (= 1-Bit-Entropie / Bit), ist es im Allgemeinen wahrscheinlich , dass keine Codierung, einschließlich Huffman, diese im Durchschnitt komprimiert. Wenn Lempel-Ziv "perfekt" wäre (was sich für die meisten Klassen von Quellen annähert, da die Länge unendlich ist), würde das Nachkodieren mit Huffman nicht helfen. Natürlich ist Lempel-Ziv nicht perfekt, zumindest nicht mit begrenzter Länge, und daher bleibt eine gewisse Redundanz bestehen.
Diese verbleibende Redundanz beseitigt die Huffman-Codierung teilweise und verbessert dadurch die Komprimierung.
Meine Frage ist: Warum wird diese verbleibende Redundanz durch Huffman-Codierung und nicht durch LZ erfolgreich beseitigt? Welche Eigenschaften von Huffman versus LZ machen dies möglich? Würde ein erneutes Ausführen von LZ (dh ein zweites Codieren der komprimierten LZ-Daten mit LZ) etwas Ähnliches bewirken? Wenn nein, warum nicht? Ebenso würde das Komprimieren zuerst mit Huffman und anschließend mit LZ funktionieren, und wenn nicht, warum?
UPDATE: Es ist klar, dass auch nach LZ eine gewisse Redundanz bestehen bleibt. Mehrere Leute haben darauf hingewiesen. Was nicht klar ist: Warum wird die verbleibende Redundanz von Huffman besser angegangen als von LZ? Was ist daran einzigartig im Gegensatz zur ursprünglichen Quellenredundanz, bei der LZ besser funktioniert als Huffman?