Jakich algorytmów kompresji danych używa RAR?

Dla danych ogólnych RAR używa schematu kompresji opartego o LZSS. Poniżej fragment z FAQ comp.compresion:

>————————————————————————–
Schemat LZSS opisany przez James’a Storera i Thomasa Szymanski w 1982 r. Kompresor zachowuje okno o rozmiarze N-bajtów oraz bufor wyprzedzający, którego zawartość próbuje znaleźć dopasowanie do okna:
while( lookAheadBuffer not empty )
{
get a pointer ( position, match ) to the longest match in the window
for the lookahead buffer;
if( length > MINIMUM_MATCH_LENGTH )
{
output a ( position, length ) pair;
shift the window length characters along;
}
else
{
output the first character in the lookahead buffer;
shift the window 1 character along;
}
}

Dekompresja jest prosta i szybka: Kiedykolwiek (pozycja, długość) para jest napotkana, przejdź do (pozycja) okna i skopiuj (długość) bajtów do danych na wyjściu.

>————————–koniec cytatu————————————

Rozmiar okna do przeszukiwania danych w RAR, znany również pod nazwą słownika, może ulec rozszerzeniu od 64 KB do 4MB. Minimalna długość to 2, specjalne kodowanie jest używane do ulepszenia kompresji przesunięć powtarzalnych. Wyrażenia, przesunięcia i długości są kompresowane następnie za pomocą kodowania Huffmana.

Więcej informacji na temat algorytmów kompresji opartych o LZ, kodowania Huffmana oraz innych technik kompresji można znaleźć w FAQ grupy dyskusyjnej comp.compression. Możną je pobrać ze strony:
ftp://rtfm.mit.edu/pub/usenet/news.answers/compression-faq/

Dodaj komentarz