2008-10-25 13 views
24

Hutter Prize, onuruna, metin sıkıştırma için en iyi algoritmalar (ve her birinin hızlı bir açıklaması) nelerdir?Sadece metin sıkıştırma algoritmalarının mevcut durumu nedir?

Not: Bu sorunun amacı sıkıştırma programlarından, sıkıştırma algoritmaları bir açıklama değil elde etmektir.

+2

(boyut olarak!) ... Komikti. – PhiLho

+0

@PhiLho heh o Summly yaptıklarını esasen var :) http://www.theregister.co.uk/2013/03/25/yahoo_buys_summly/ –

cevap

22

sınır-bastırıyor kompresörler deli sonuçlar için algoritmalar birleştirir. Ortak algoritmalar şunlardır:

  • Burrows-Wheeler Transform ve here - sıkıştırmak için kaynak kolaylaştırır tekrarlanan blokları artırmak için öngörülebilir bir algoritma ile karıştır karakterleri (veya diğer bit blok). Dekompresyon normal olarak gerçekleşir ve sonuç ters dönüşle karıştırılmaz. Not: BWT tek başına aslında hiçbir şeyi sıkıştırmaz. Sadece kaynağı sıkıştırmayı kolaylaştırır.
  • Prediction by Partial Matching (PPM)
  • - tahmin modeli (bağlam) statik olasılıklar kullanılarak karşı kaynağına ilgili istatistikleri çatırdayan tarafından oluşturulan arithmetic coding bir evrim. Kökleri aritmetik kodlamada olsa bile, sonuç Huffman kodlamasıyla veya aritmetik kodlamanın yanı sıra bir sözlükle temsil edilebilir. Karıştırma
  • Bağlam - Aritmetik kodlama tahmini için statik bağlamını kullanır, PPM dinamik tek bağlam seçer Bağlam Karıştırma birçok bağlamları kullanır ve bunların sonuçlarını ağırlığındadır. PAQ içerik karıştırma kullanır. Here's yüksek düzeyde genel bakış. PPM ile ilgili, ancak bayt veya daha uzun süre bit seviyesinde bağlamları kullanır.
  • Buna ek olarak, Hutter ödül yarışmacı dış sözlükleri küçük baytlık girişleri ile ortak bir metin değiştirebilir ve iki ayrı girişler kullanılarak karşı özel bir sembol ile üst ve alt durumda metin ayırt eder. Bu yüzden metinleri sıkıştırırken (özellikle ASCII metni) ve genel sıkıştırma için değerli değiller.

Maximum Compression oldukça güzel bir metin ve genel sıkıştırma karşılaştırma sitesidir. Matt Mahoney başka bir benchmark yayınladı. Mahoney özellikle ilgi çekici olabilir çünkü her girişte kullanılan birincil algoritmayı listeler.

+0

metni sıkıştırmak ve (ikili değil) metni geri ver algoritmaları var mıdır aşağıya bakın? – CMCDragonkai

3

Her zaman lzip vardır. kenara

Şaka:

  • uyumluluğu bir husustur PKZIP (DEFLATE algoritması) hala kazanır.
  • bzip2, nispeten geniş bir kurulum tabanının ve oldukça iyi bir sıkıştırma oranının keyfini çıkarmak arasındaki en iyi uzlaşmadır, ancak ayrı bir arşivleyici gerektirir.
  • 7-Zip (LZMA algoritması) çok iyi sıkıştırılmış ve LGPL altında kullanılabilir. Bununla birlikte, az sayıda işletim sistemi yerleşik desteğe sahiptir.
  • rzip bzip2'nin bir varyantıdır, ki bence bence daha fazla dikkat gerektiriyor. Uzun süreli arşivlemeye ihtiyaç duyan büyük günlük dosyaları için özellikle ilginç olabilir. Aynı zamanda ayrı bir arşivleyici gerektirir.
+4

Bunlar KDA'ne ve diğer bazı salt metin sıkıştırma algoritmaları yerin yakınında bile gelip (http: //en.wikipedia.org/wiki/PAQ) BrianR.Bondy @ –

+0

: haklısın, 'zpaq' PKZIP'de daha küçük büyüklükte bir düzen sıkıştırılmış. (Evet, bu bir araçtır, ama bazı insanlar burada tam olarak bu aramaya geldiklerinde) –

0

Bir program olarak KDA'ne kullanmak istiyorsanız, debian tabanlı sistemlerde zpaq paketini yükleyebilirsiniz.Kullanımı

zpaq c archivename.zpaq file1 file2 file3 

Sıkıştırma hakkında 1/10 bir zip dosyanın boyutu ait oldu (ayrıca man zpaq bakınız) olduğu. (15M vs 1.9M) Bir keresinde mükemmel performans ile metnin kayıplı sıkıştırma öneren bir (sahte) makalesine gördü