허프만 코딩이 Lempel-Ziv가 제공하지 않는 엔트로피를 제거하는 이유는 무엇입니까?


13

인기있는 DEFLATE 알고리즘은 Lempel-Ziv 위에 Huffman 코딩을 사용합니다.

우리는 데이터의 임의의 소스가 있다면, 일반적으로, (1 비트 엔트로피 / 비트 =) 에는 허프만 인코딩을 포함하여, 평균을 압축 할 가능성이 없다. Lempel-Ziv가 "완벽"한 경우 (길이가 무한대가됨에 따라 대부분의 소스에 접근하는 경우) Huffman을 사용한 포스트 인코딩은 도움이되지 않습니다. 물론, Lempel-Ziv 최소한 유한 한 길이로 완벽 하지 않으므로 일부 중복성이 남아 있습니다.

허프만 코딩이 부분적으로 제거되어 압축을 개선하는 것이이 잔여 리던던시이다.

내 질문은 : 왜이 ​​중복이 LZ가 아닌 허프만 코딩에 의해 성공적으로 제거됩니까? 허프만 대 LZ의 어떤 속성이 이것을 가능하게합니까? 단순히 LZ를 다시 실행하는 것 (즉, LZ로 LZ 압축 데이터를 두 번째로 인코딩)이 비슷한 것을 달성합니까? 그렇지 않다면 왜 안됩니까? 마찬가지로, 먼저 허프만으로 압축 한 다음 LZ로 압축하면 안됩니까?

업데이트 : LZ 후에도 일부 중복성이 남아 있음이 분명합니다. 여러 사람들이 그 점을 지적했습니다. 분명하지 않은 것은 : 왜 Huffman이 남아있는 중복성을 LZ보다 더 잘 처리 하는가? LZ가 허프만보다 더 잘 작동하는 원래의 소스 리던던시와 달리 독특한 점은 무엇입니까?

답변:


13

이것은 원래 의견이지만 너무 길었습니다.

DEFLATE를 보면 Huffman이 압축하는 것은 LZ77의 출력입니다. LZ77은 압축 할 문자열에 포인터를 더 일찍 전송하고 포인터 뒤의 심볼 수를 알려주는 일치 길이를 사용하여 (원시 데이터보다 적은 비트를 사용하는 경우) 작동합니다. 이론은 추가 압축 없이도이 기술이 결국 소스 엔트로피로 수렴됨을 보여줍니다. 그러나 데이터 압축에서는 완전히 임의적이지 않은 분포가있을 때마다 압축 할 수도 있습니다. LZ77의 출력 (포인터 및 일치 길이)이 완전히 임의적이라고 믿을 이유는 없습니다. LZ77은 점진적으로 최적이기 때문에 점근선 한계에서 임의성을 완성하기 위해 수렴해야하지만 실제로는 유한 사전 만 사용합니다. 그래서 그들은 아마도 당신이 그들에 대해 더 많은 압축을함으로써 이길 수있는 완전히 임의적이지 않을 정도로 멀리 떨어져있을 것입니다. 당연히, 두 프로세스가 서로 다른 통계를 가지기 때문에 하나의 포인터와 일치 길이에 대해 하나의 허프만 코드를 사용합니다.

두 번째 압축 라운드에 LZ 대신 Huffman을 사용하는 이유는 무엇입니까? 허프만에 비해 LZ의 큰 장점은 심볼 간의 종속성을 처리하는 것입니다. 영어에서 한 문자가 'q'이면 다음 문자는 'u'가 될 가능성이 높습니다. 심볼이 독립적 인 이벤트 인 경우 허프만은 더 단순하고 짧은 문자열에 대해 잘 작동합니다. LZ77의 출력을 위해, 직감은 기호가 상당히 독립적이어야하므로 허프만이 더 잘 작동해야한다는 것입니다.


나는 첫 번째 단락에서 당신과 함께합니다 : LZ는 여전히 압축을 위해 중복성을 남겨 둡니다. 그러나 손을 흔들지 않으면 두 번째 단락은 여전히 ​​뛰고있는 것 같습니다. 다음과 같은 두 가지 주장이있다 : 1. LZ가 0 차 이후 남은 리던던시 (즉, p (X_n)는 x_n-1과 거의 독립적이다. data-compression.com/theory.shtml ) 및 2. 0 차 중복성에서 Huffman은 LZ보다 더 잘 작동합니다. 고차 중복에서는 LZ가 더 잘 작동합니다. 아마도이 주장들은 모두 사실이지만, 당신은 어느 쪽도 정당화되지 않았습니다
SRobertJames

2
@Robert : 상위 상관 관계는 허프만 코딩에 영향을 미치지 않습니다. LZ는 고차 중복성을 위해 무조건 최적으로 작동하지만 필요한 추가 오버 헤드는 유한 길이의 0 차 소스에서 잘 수행되지 않음을 의미합니다. 이것은 어딘가의 문헌에서 실험적으로 연구 된 것이어야한다. 다른 사람이 참조에 대한 포인터를 줄 수 있습니다. 포인트 1의 경우, 직감은 LZ 이후에 남아있는 고차 중복이 너무 복잡하여 간단한 코딩 체계에 사용하기에는 너무 복잡하지만 이것을 정당화 할 수있는 좋은 방법은 없습니다.
Peter Shor

10

데이터 압축은 실제로 모델링과 인코딩의 두 가지입니다. LZ 제품군의 알고리즘은 텍스트를 정확한 반복의 연결로 모델링합니다. 이는 많은 임의의 소스에 대해 무조건 최적이며 많은 실제 텍스트에 합리적으로 좋습니다. 그러나 일부 입력의 경우이 모델은 상당히 나쁠 수 있습니다. 예를 들어 접미사 배열이 원본 텍스트와 같이 압축 가능하더라도 LZ를 사용하여 접미사 배열을 직접 압축 할 수 없습니다.

(p,,c)pc

lognn

간단히 말해 Huffman은 모델 (고정 분포와 정확한 반복)이 데이터에 더 적합하기 때문에 튜플 압축에서 LZ를 능가합니다.


Jouni 감사합니다. 남은 주요 중복성은 rep 길이가 일반적으로 더 크지 않고 더 작다는 것입니다 ([0,2 ^ n]에 고르게 분포되지 않음). 허프만은이 0 차 비대칭을 잘 처리하는 반면, LZ는 제대로 작동하려면 더 큰 기능이 필요합니다. 그 맞습니까? Huffman을 사용하여 시작하지 않는 이유는 무엇입니까?
SRobertJames

3
허프만으로 직접 텍스트를 압축하면 0 차 엔트로피보다 더 나은 압축을 얻을 수 없습니다. 그러나 대부분의 실제 텍스트에는 0 차 엔트로피로 적절하게 모델링 할 수없는 상당한 중복 소스가 있습니다. 대부분의 경우 허프만 전에 LZ를 사용하면이 중복성을 압축 할 수 있습니다.
Jouni Sirén

2

대답은 조회 사전 크기에 있다고 믿습니다.

데이터는 위치 감이 있으며 (즉, 데이터가 사용 된 경우 곧 다시 사용될 가능성이 높음) LZ 알고리즘은 조회 사전 구성에서이를 활용합니다. 검색 속도를 높이기 위해 유한 한 양의 노드로 트라이를 생성합니다 . 크기 제한에 도달하면 이전 시도를 "잊어 버린"또 다른 시도를 만듭니다. 따라서 더 간단한 문자에 대한 조회 테이블을 다시 작성해야하지만 더 이상 사용되지 않는 단어는 더 이상 메모리에 저장되지 않으므로 더 작은 인코딩을 사용할 수 있습니다.

따라서 Huffman 인코딩을 사용하면 LZ 출력을 더 줄일 수 있습니다. 조회 시도 생성시 이러한 중복성을 통계 분석으로 감지 할 수 있습니다.


첫 번째 단락에 동의합니다. LZ가 중복성을 유지하는 이유를 설명합니다. 그러나 두 번째 단락은 상당히 도약 한 것 같습니다. 허프만은 왜이 중복성을 포착합니까? 왜 다시 LZ? 허프만이 더 포괄적이라면 왜 시작해야합니까?
SRobertJames

2

아마도 나는 여기서 벗어나고 있지만 허프만 인코딩은 전체 입력을보고 인코딩 테이블 (트리)을 빌드하는 반면 Lempel-Ziv는 인코딩을 진행합니다. 이것은 허프만의 장점이자 단점입니다. 단점은 명백하지 않습니다. 즉, 시작하기 전에 전체 입력 내용을 확인해야합니다. 이점은 Huffman이 입력의 모든 위치에서 발생하는 통계를 고려하는 반면, Lempel-Ziv는 점진적으로이를 축적해야한다는 것입니다. 또는 다른 방식으로 표현하기 위해 Lempel-Ziv에는 허프만이하지 않는 "방향"이 있습니다.

그러나이 모든 것이 상황이 어떻게 상상되는지의 순진한 방법입니다. 허프만이 렘펠-지브를 능가하는 성능을 보려면 여기에서 실제 증거가 필요합니다.


2
사람들은 적응 형 허프만 코딩을 정의했는데, 입력 만 한 번만 봅니다. 이 논의의 목적을 위해, 적응 및 비 적응 허프만 코딩은 매우 유사하게 동작 할 것이다.
피터 쇼어

2

짧은 대답은 LZ는 소스의 정확한 분포를 알 필요가 없다는 점에서 "유니버설"알고리즘입니다 (소스가 정지적이고 인체 공학적이라는 가정 만하면 됨). 허프만은 그렇지 않습니다. (허프만 트리를 만들기 위해) 소스가 샘플링 된 정확한 분포를 알아야합니다. 이 추가 정보는 Huffman이 엄격한 압축 보장을 달성하도록합니다. 그러나 실제 파일 압축 알고리즘의 경우 허프만은 파일의 경험적 통계를 수집 한 다음 하반기에 실제 압축을 수행해야하지만 LZ는 온라인으로 구현할 수 있기 때문에 덜 유리할 수 있습니다.

자세한 내용은 표준 정보 이론 텍스트 (예 : Cover and Thomas의 정보 요소 이론)에서 확인할 수 있습니다.


고정식 인체 공학적 소스는 LZ를 더 쉽게 분석 할 수있는 가정이라고 생각합니다. 결국 압축은 입력의 조합 특성을 기반으로하며, 많은 경우 통계적 특성과 잘 일치합니다. 예를 들어, 일반 텍스트 형식의 영어 텍스트 모음과 HTML 형식의 동일한 텍스트를 고려하십시오. LZ는 고정 된 인체 공학적 소스에서 생성 된 것처럼 보이지 않더라도이 컬렉션을 아주 잘 압축합니다.
Jouni Sirén

@Jouni :이 의견에 동의하지 않습니다. 어떤 의미에서 일반 텍스트 영어는 고정식 인체 공학적 소스와 매우 비슷하며 LZ가 사용하는 것과 유사합니다.
피터 쇼어

@Peter : 그러나이 경우 소스는 먼저 일부 텍스트를 일반 텍스트 형식으로 생성 한 다음 정확히 동일한 텍스트를 HTML 형식으로 생성합니다. 임의의 시점에서 일반 텍스트에서 HTML 로의 이러한 변경은 인체 공학적 고정 속성을 손상시키는 것으로 보입니다. 반면에 일반 텍스트 형식의 텍스트와 HTML 형식의 동일한 텍스트 사이에 많은 상호 정보가 있기 때문에 일반 텍스트와 HTML 텍스트를 개별적으로 압축 할 때보 다 압축 결과가 훨씬 좋습니다.
Jouni Sirén
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.