2008-10-25 6 views
24

Hutter Prize을 기리고, 텍스트 압축을위한 가장 좋은 알고리즘과 각각의 간단한 설명은 무엇입니까?텍스트 전용 압축 알고리즘의 현재 상태는 무엇입니까?

참고 :이 질문의 목적은 압축 프로그램이 아닌 압축 알고리즘에 대한 설명을 얻는 것입니다.

+2

좋은 성능으로 텍스트의 손실 압축을 제안한 (모의) 기사를 한 번 보았습니다 ... 재미있었습니다. – PhiLho

+0

@PhiLho heh, 그것은 Summly가했던 것입니다. http://www.theregister.co.uk/2013/03/25/yahoo_buys_summly/ –

답변

22

경계 누름 압축기는 미친 결과를 위해 알고리즘을 결합합니다. 일반적인 알고리즘은 다음과 같습니다

  • Burrows-Wheeler Transformhere - 압축 할 소스가 쉽게 반복 블록을 증가 예측 알고리즘 셔플 문자 (또는 다른 비트 블록). 감압은 정상적으로 일어나고 그 결과는 역변환과 섞이지 않습니다. 참고 : BWT만으로는 실제로 아무 것도 압축하지 않습니다. 소스를 쉽게 압축 할 수 있습니다.
  • Prediction by Partial Matching (PPM) - arithmetic coding의 진화 모델 여기서 예측 모델 (컨텍스트)은 정적 확률을 사용하는 것에 대한 소스에 대한 통계를 크 런칭하여 생성됩니다. 산술적 인 코딩에 뿌리가 있더라도 결과는 호프만 인코딩이나 사전 및 산술 코딩으로 나타낼 수 있습니다.
  • 컨텍스트 믹싱 - 산술 코딩은 예측을 위해 정적 컨텍스트를 사용하고 PPM은 단일 컨텍스트를 동적으로 선택하며 컨텍스트 믹싱은 많은 컨텍스트를 사용하고 그 결과의 무게를 잰다. PAQ는 컨텍스트 혼합을 사용합니다. Here's 개요.
  • Dynamic Markov Compression - PPM과 관련이 있지만 바이트 이상 컨텍스트를 사용합니다.
  • 또한 Hutter 상 참가자는 일반 텍스트를 외부 사전의 작은 바이트 항목으로 대체하고 대문자와 소문자를 특수 기호로 구분하는 대신 두 개의 별개 항목을 사용할 수 있습니다. 그래서 그들은 텍스트 압축 (특히 ASCII 텍스트)에 능숙하고 일반 압축에는 유용하지 않습니다.

Maximum Compression은 멋진 텍스트 및 일반 압축 벤치 마크 사이트입니다. Matt Mahoney는 다른 benchmark을 게시합니다. Mahoney는 항목별로 사용 ​​된 기본 알고리즘을 나열하기 때문에 특히 유용 할 수 있습니다.

+0

텍스트를 압축하고 다시 텍스트 (바이너리가 아닌)를주는 알고리즘이 있습니까? – CMCDragonkai

3

항상 lzip입니다. 옆

모든 농담 :

  • 호환성이 문제가되는, PKZIP (DEFLATE 알고리즘은) 여전히 승리.
  • bzip2는 상대적으로 광범위한 설치베이스와 비교적 좋은 압축률을 즐기는 것 중에서 가장 좋은 절충안이지만 별도의 아카이버가 필요합니다.
  • 7-Zip (LZMA 알고리즘)은 매우 잘 압축되며 LGPL에서 사용할 수 있습니다. 그러나 지원 기능이 내장 된 운영 체제는 거의 없습니다.
  • rzip은 내 의견으로는 더 많은 주목을받을만한 bzip2의 변형입니다. 장기간 보관이 필요한 거대한 로그 파일의 경우 특히 유용 할 수 있습니다. 또한 별도의 아카이버가 필요합니다.
+4

PAQ 및 기타 텍스트 전용 압축 알고리즘 (http : //en.wikipedia.org/wiki/PAQ) –

+0

@ BrianR.Bondy : 당신 말이 맞아요, zpaq는 PKZIP보다 작은 크기로 압축되었습니다. 아래를보십시오 (그렇습니다, 그것은 도구입니다, 그러나 어떤 사람들은 정확히 그걸 찾으러옵니다) –

0

PAQ를 프로그램으로 사용하려면 zpaq 패키지를 debian 기반 시스템에 설치할 수 있습니다.사용법은

zpaq c archivename.zpaq file1 file2 file3 

압축에 대한 1/10 zip 파일의 크기의이었다 (도 man zpaq 참조). (1.9M vs 15M)