Il popolare algoritmo DEFLATE utilizza la codifica Huffman in cima a Lempel-Ziv.
In generale, se disponiamo di una fonte di dati casuale (= 1 bit entropia / bit) , è probabile che nessuna codifica, incluso Huffman, li comprima in media. Se Lempel-Ziv fosse "perfetto" (che si avvicina alla maggior parte delle classi di fonti, poiché la lunghezza va all'infinito), la codifica post con Huffman non sarebbe di aiuto. Certo, Lempel-Ziv non è perfetto, almeno con una lunghezza finita, e quindi rimane un po 'di ridondanza.
È questa ridondanza residua che la codifica di Huffman elimina parzialmente e quindi migliora la compressione.
La mia domanda è: perché questa ridondanza residua viene eliminata con successo dalla codifica Huffman e non da LZ? Quali proprietà di Huffman contro LZ fanno sì che ciò accada? Semplicemente eseguendo nuovamente LZ (ovvero codificando i dati compressi LZ con LZ una seconda volta) si otterrebbe qualcosa di simile? In caso contrario, perché no? Allo stesso modo, prima comprimere con Huffman e poi con LZ funzionerebbe, e se no, perché?
AGGIORNAMENTO: È chiaro che anche dopo LZ rimarrà un po 'di ridondanza. Diverse persone hanno sottolineato questo punto. Ciò che non è chiaro è: perché la ridondanza residua è meglio affrontata da Huffman che da LZ? Cosa c'è di unico in contrasto con la ridondanza della sorgente originale, in cui LZ funziona meglio di Huffman?