L'algorithme DEFLATE populaire utilise le codage Huffman au-dessus de Lempel-Ziv.
En général, si nous avons une source aléatoire de données (= entropie 1 bit / bit), aucun encodage, y compris Huffman, n'est susceptible de le compresser en moyenne. Si Lempel-Ziv était "parfait" (ce qu'il approche pour la plupart des classes de sources, car la longueur va à l'infini), le post-encodage avec Huffman n'aurait pas aidé. Bien sûr, Lempel-Ziv n'est pas parfait, au moins avec une longueur finie, et il reste donc une certaine redondance.
C'est cette redondance restante que le codage Huffman élimine partiellement et améliore ainsi la compression.
Ma question est: pourquoi cette redondance restante est-elle éliminée avec succès par le codage Huffman et non par LZ? Quelles propriétés de Huffman par rapport à LZ rendent cela possible? Est-ce que le simple fait d'exécuter à nouveau LZ (c'est-à-dire encoder les données compressées LZ avec LZ une deuxième fois) accomplirait quelque chose de similaire? Sinon, pourquoi pas? De même, la compression avec Huffman d'abord et ensuite avec LZ fonctionnerait-elle, et sinon, pourquoi?
MISE À JOUR: Il est clair que même après LZ, une certaine redondance restera. Plusieurs personnes l'ont souligné. Ce qui n'est pas clair, c'est: pourquoi cette redondance restante est-elle mieux traitée par Huffman que LZ? Qu'est-ce qui est unique en contraste avec la redondance d'origine, où LZ fonctionne mieux que Huffman?