최상 답변
“최상”이 압축 비율을 의미한다면 Large Text Compression Benchmark CMIX입니다. 유일한 문제는이를 실행하기 위해 32GB의 메모리가있는 컴퓨터가 필요하다는 것입니다. 그런 다음 1GB의 텍스트를 압축하거나 압축 해제하는 데 4 일이 걸립니다.
대부분의 최상위 프로그램과 마찬가지로 CMIX는 사전 전처리 및 PAQ 스타일 컨텍스트 혼합을 사용합니다. 전처리 기는 사전에서 단어를 1-3 비트 기호로 대체하고 대문자를 특수 기호 및 해당 소문자 기호로 대체하는 등의 기타 처리를 수행합니다. 또한 일반적인 접두사 및 접미사를 구문 분석 할 수 있습니다.
컨텍스트 모델은 컨텍스트 (예 : 마지막 n 비트)를 가져와 확률을 추측합니다. p 다음 비트는 0 또는 1이 될 것입니다. 결과는 산술 코더에 입력됩니다.이 결과는 비트를 섀넌 한계 인 log2 1 / p에 매우 근접하게 코딩하는 산술 코더에 제공됩니다. / span> 비트. 따라서 압축 비율은 전적으로 p 가 얼마나 잘 추정되는지에 따라 달라집니다. 컨텍스트 혼합 알고리즘은 많은 독립 모델의 예측을 결합하여 매우 정확한 예측을 수행합니다. CMIX는 수백 개의 모델을 사용하므로 많은 시간과 메모리가 필요합니다. 모델이 너무 많은 이유는 다양한 가능한 컨텍스트, 컨텍스트를 예측으로 변환하는 여러 방법, 모델을 업데이트하는 여러 방법, 다른 모델의 예측을 적응 적으로 결합하고 다음을 사용하여 최상의 모델을 선택하는 여러 방법이 있기 때문입니다. 믹서의 계층. 실용적인 컨텍스트 믹서는 2 ~ 20 개의 모델을 사용하여 단순성과 유용성을 위해 일부 압축을 희생 할 수 있습니다.
최고의 압축기는 실제로 이해 에 가깝습니다. 본문. 그들은 언어의 어휘, 의미 및 문법 구조를 모델링합니다. 예를 들어 사전은 어머니 와 아버지 와 같이 관련 단어를 함께 그룹화하여 구성됩니다. 및 월요일 ( 화요일 ). 이로 인해 하위 비트 만 다른 사전 코드가 생성됩니다. 그런 다음 일부 컨텍스트 모델이 낮은 비트를 삭제하여 압축기가 iv id = “ff56a4410b”를 본 후 월요일에 아버지를 봤습니다 를 예측할 수 있습니다. >
화요일에 어머니를 만났습니다 .
기술적 인 세부 사항은 상당히 복잡 할 수 있습니다. 자세한 내용은 데이터 압축 설명 을 참조하세요.
답변
무손실에 대해 이야기하고 있다고 가정합니다. 압축 (예를 들어 텍스트는 SMS 언어로 손실 압축 될 수 있음), “어떤”바이너리 파일도 손실없이 압축 할 수 없다는 것은 잘 알려져 있습니다. 즉, 일부 파일의 크기가 증가합니다. 이것은 코더 헤더 파일과 [0, …, N]과 [0, …, N-1] 사이의 불가능한 bijections 또는 Dirichlet pigeon-hole 원리 (Schubfachprinzip)의 기본 수학 때문입니다. http://en.wikipedia.org/wiki/Pigeonhole\_principle
를 참조하십시오.
이전에 말했듯이 “최고”는 일반적으로 @ Sam-Jp의 평균 압축률을 나타냅니다. 텍스트의 문자 세트 (예 : ascii 7 또는 8 비트 중요)와 유형도 중요합니다. 순수 인간 언어로 작성된 텍스트 파일에 대한 “최상의 압축”은 일부 형식이 이미 압축을 캡슐화하므로 프린터 포스트 스크립트, rtf, doc 또는 텍스트가 포함 된 pdf 파일에서 다르게 작동합니다. 결과적으로 “최고”의 압축률은 @ Igor-Carron 링크에 제공된 영어 텍스트 압축에서 볼 수 있듯이 데이터베이스 콘텐츠, 텍스트 파일의 동질성 및 유형에 따라 다릅니다. http://www.maximumcompression.com/data/text.php
속도 @ Jonathan-Hseu도 매우 중요합니다. 애플리케이션에 따라 (보관에서 데이터베이스 상호 작용 @ Daniel-Lemire) 하나는 압축 또는 압축 해제 (일반적으로 한 번 압축, 여러 번 압축 해제) 속도 또는 둘 모두에 중점을 둡니다.
그러나 다른 기능은 다음과 같이 평가할 수 있습니다. 특히 방대한 데이터 세트와 다양한 수집 시스템의 출현으로 :-압축 파일의 랜덤 액세스 성능 또는 검색 기능-오류 복원력 (손상된 비트에 대한 내성)-온라인 기능, 즉 데이터 스트림을 효율적으로 압축 할 수 있음- 래스터 순서뿐만 아니라 트리, 그래프로 구성된 텍스트 압축-코더 또는 디코더의 낮은 복잡성 또는 에너지 효율성, 또는 둘 다-가능한 병렬화-분산 코딩 가능성 (압축 작업은 네트워크의 다른 노드에서 공유 됨) / p>
결국 텍스트의 경우에도 무손실 상자에서 생각할 수 있습니다. 그리고 우리는 이전에 인용 된 SMS로 돌아가서 의미가 중요하지만 정확한 철자가 아닐 수도 있습니다.Kaufman & Klein, 세미 무손실 압축 http://www.computer.org/portal/web/csdl/doi/10.1109/DCC.2004.1281520
일반적으로 “최상”에 대한 질문은 실제 목적에 대한 질문을 구체화하여 추가 “당신의”최고의 @ Alex-Kamil을 정의하기 위해 품질 메트릭과 해당 메트릭의 적절한 가중치. 다음 출처의 주제는 고무적입니다.
* IEEE 정보 이론 거래 http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=18 * IRE 정보 이론 거래 http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=4547527 * Data Compression Conference pages.cs.brandeis.edu/~dcc /
마지막으로 전문가는 아니지만 무손실 압축의 아마추어 인 저는 최근 Deplump (http://www.deplump.com/index.html) 일부 긴 영어 텍스트 파일과 몇 가지 바이너리 파일 (다른 답변에 인용 된 내 favs rar, Bzip2 및 7zip과 비교). 온라인에서 짧은 파일을 테스트 할 수 있습니다. 자세한 내용은 F. Wood et al. The Sequence Memoizer, 2011 (http://www.sequencememoizer.com/ 참조) 또는 Franck Wood의 웹 페이지 http://www.stat.columbia.edu/~fwood/