RAR jako format kompresji bezstratnej.
RAR został stworzony przez Rosjanina Eugene Roshala. Do kompresji danych używa odmiany kompresji LZSS. Jest wolniejszym kompresorem niż ZIP ale jest bardziej skuteczny. Nazwa pochodzi od nazwisk: Cempel-Ziv-Storer-Szymanski i został opracowany i opisany w 1982roku. LZSS jest metodą bezstratnej kompresji danych (Kompresja bezstratna to ogólna nazwa takich metod upakowywania informacji do postaci zawierającej zmniejszoną liczbę bitów tak, aby całą informację dało się z tej postaci odtworzyć do identycznej postaci pierwotnej.)
Algorytm kompresji: Metoda LZSS używa bufora (zbiera wszystkie informacje wysyłane do odbiorcy i zapamiętuje je, a następnie pod sam koniec skryptu wyświetla zebrane informacje.), podzielonego na część słownikową (przechowującą k ostatnio przetwarzanych symboli, obejmujących indeksy 0 … k-1) oraz bufor wejściowy (przechowujący n symboli, które mają zostać zakodowane, obejmujący indeksy k …k+n – 1). Wartości n i k są dobierane tak, aby były potęgami dwójki. Rozmiar słownika jest dużo większy niż bufora wejściowego, w praktyce ma kilka- kilkadziesiąt kilobajtów. W każdym kroku algorytmu w słowniku wyszukiwany jest najdłuższy podciąg równy początkowi bufora wejściowego.
Formalnie algorytm kompresji przebiega następująco: Wypełnij słownik pierwszym symbolem, wypisz ten symbol na wyjście; wypełnij bufor wejściowy n pierwszymi symbolami wejściowymi. Dopóki w buforze wejściowym są dane: –Wyszukaj w słowniku najdłuższy podciąg równy początkowi bufora wejściowego - wynikiem są liczby P i C. Jeśli rozmiar pary (P, C) jest mniejszy od rozmiaru znalezionego podciągu, zapisz na wyjście trójkę (0,P,C), przesuń cały bufor o C pozycji w lewo i wprowadź do bufora wejściowego tyle samo kolejnych symboli. W przeciwnym razie wypisz na wyjście parę (1, S), przesuń cały bufor o 1 pozycję w lewo i wprowadź do bufora wejściowego kolejny symbol wejściowy.
Algorytm dekompresji: Do dekompresji potrzebny jest bufor o dokładnie takim samym rozmiarze jak przy kompresji; jest on podzielony na słownik (k symboli) i bufor wyjściowy (n symboli). Wypełnij słownik pierwszym symbolem. Dla kolejnych danych (par i trójek) powtarzaj: –Jeśli mamy do czynienia z trójką (0,P,C) to skopiuj ze słownika na początek bufora wyjściowego symbole z zakresu, wypisz na wyjście skopiowane symbole i przesuń cały bufor o C pozycji w lewo. –Jeśli mamy do czynienia z dwójką (1,S) to skopiuj symbol S na początek bufora wyjściowego, wypisz na wyjście ten symbol i przesuń cały bufor o jedną pozycję w lewo.
Kompresja stratna W związku iż przy kompresji RAR nie mamy do czynienia ze stratą danych to takie zjawisko możemy zaobserwować przy kompresji plików muzycznych i graficznych. Pliki muzyczne tworzone w formatach wav są niekiedy 7 krotnie większe od plików w formacie mp3, zaś pliki graficzne w formatach gif są średnio o 33% większe od formatu jpg.
WAV a MP3 Dla przykładu stratnej kompresji posłużymy się plikiem muzycznym utworzonym w formacie wav. Jego wielkość wyjściowa to 31,9 Mb. Ten sam utwór po kompresji do formatu mp3 o częstotliwości próbkowania 192 kb/s będzie miał wielkość 4,36 Mb. A więc co za tym idzie:
Pierwszy ze zrzutów ekranu przestawia wygląd utworu zapisanego w wav a następnie w mp3 na podstawie przebiegu czasowego. Drugi zrzut to przebieg spektrum tych samych utworów. Różnice są na widmie spektrum mniej zauważalne jednak na przebiegu czasowym widoczne są zmiany w szerokości pasma.