인기있는 DEFLATE 알고리즘은 Lempel-Ziv 위에 Huffman 코딩을 사용합니다.
우리는 데이터의 임의의 소스가 있다면, 일반적으로, (1 비트 엔트로피 / 비트 =) 에는 허프만 인코딩을 포함하여, 평균을 압축 할 가능성이 없다. Lempel-Ziv가 "완벽"한 경우 (길이가 무한대가됨에 따라 대부분의 소스에 접근하는 경우) Huffman을 사용한 포스트 인코딩은 도움이되지 않습니다. 물론, Lempel-Ziv 는 최소한 유한 한 길이로 완벽 하지 않으므로 일부 중복성이 남아 있습니다.
허프만 코딩이 부분적으로 제거되어 압축을 개선하는 것이이 잔여 리던던시이다.
내 질문은 : 왜이 중복이 LZ가 아닌 허프만 코딩에 의해 성공적으로 제거됩니까? 허프만 대 LZ의 어떤 속성이 이것을 가능하게합니까? 단순히 LZ를 다시 실행하는 것 (즉, LZ로 LZ 압축 데이터를 두 번째로 인코딩)이 비슷한 것을 달성합니까? 그렇지 않다면 왜 안됩니까? 마찬가지로, 먼저 허프만으로 압축 한 다음 LZ로 압축하면 안됩니까?
업데이트 : LZ 후에도 일부 중복성이 남아 있음이 분명합니다. 여러 사람들이 그 점을 지적했습니다. 분명하지 않은 것은 : 왜 Huffman이 남아있는 중복성을 LZ보다 더 잘 처리 하는가? LZ가 허프만보다 더 잘 작동하는 원래의 소스 리던던시와 달리 독특한 점은 무엇입니까?