Gość (188.33.*.*)
To pytanie, które rozpala umysły archiwistów i entuzjastów cyfrowego porządku! W świecie kompresji bezstratnej, gdzie kluczowe jest to, by po rozpakowaniu plik był identyczny z oryginałem, walka o każdy zaoszczędzony bit jest zacięta.
Odpowiedź na to, jaka jest najsilniejsza metoda, zależy od tego, co rozumiemy przez "siłę" — czy chodzi o absolutnie najwyższy stopień kompresji (nawet kosztem czasu i zasobów), czy o najlepszy kompromis między kompresją a szybkością.
Jeśli szukamy metody, która wyciśnie z pliku absolutnie najwięcej, bez względu na to, ile czasu to zajmie, zwycięzcą jest klasa algorytmów CM (Context Mixing), której najbardziej znanym przedstawicielem jest PAQ (szczególnie wersje takie jak PAQ8).
Algorytmy PAQ działają na zasadzie mieszania kontekstów. Zamiast używać jednego modelu do przewidywania kolejnego symbolu (znaku, bajtu), używają wielu różnych modeli jednocześnie. Każdy z tych modeli analizuje dane pod innym kątem (np. jeden szuka powtórzeń, drugi analizuje strukturę słów, trzeci bada statystykę występowania symboli).
Wyniki przewidywań z tych wielu modeli są następnie "mieszane" (stąd nazwa Context Mixing) w celu uzyskania jak najdokładniejszego przewidywania. Im lepsze przewidywanie, tym efektywniejsze jest późniejsze kodowanie entropijne (zazwyczaj kodowanie arytmetyczne), co skutkuje mniejszym rozmiarem pliku.
Wielkie "ale":
Algorytmy PAQ osiągają jedne z najwyższych stopni kompresji, ale ich cena jest bardzo wysoka:
Z tego powodu PAQ jest raczej ciekawostką akademicką i narzędziem dla entuzjastów, którzy chcą osiągnąć rekordowy stopień kompresji, a nie praktycznym rozwiązaniem do codziennego użytku.
W codziennej archiwizacji, gdzie liczy się zarówno siła kompresji, jak i rozsądny czas, królują inne algorytmy.
Obecnie to jeden z najczęściej wskazywanych algorytmów, jeśli chodzi o najwyższy stopień kompresji przy zachowaniu akceptowalnej prędkości. Jest on sercem formatu 7z (używanego przez program 7-Zip), który jest powszechnie uznawany za jeden z najefektywniejszych archiwizatorów.
Algorytmy PPM również oferują bardzo wysoki stopień kompresji, często zbliżony do LZMA.
Warto też wspomnieć o algorytmie Bzip2, który jest oparty na sprytnej metodzie zwanej transformacją Burrowsa-Wheelera (BWT), a następnie kodowaniu Huffmana.
| Kryterium | Najsilniejsza metoda | Format/Program | Uwagi |
|---|---|---|---|
| Absolutny stopień kompresji | PAQ (Context Mixing) | PAQ8, PAQ9 | Ekstremalnie wolna i pamięciożerna. Raczej do celów akademickich i rekordów. |
| Najlepszy kompromis (siła/szybkość) | LZMA | 7z (7-Zip) | Najlepszy wybór do codziennej archiwizacji, oferuje doskonały stopień kompresji w rozsądnym czasie. |
| Alternatywa o wysokiej kompresji | PPM | RAR, WinZip (tryby wysokiej kompresji) | Również bardzo efektywny, szczególnie dla danych tekstowych. |
Jeśli więc szukasz najsilniejszej, ale praktycznej metody, postaw na format 7z i algorytm LZMA. Jeśli natomiast masz czas i zasoby, a chcesz zobaczyć, jak mały może być Twój plik, spróbuj eksperymentów z algorytmami z rodziny PAQ.