Co to jest algorytm kompresji?

Pliki komputerowe mogą zajmować dużą ilość miejsca na dysku twardym, a także dużą przepustowość przesyłania. Aby zaoszczędzić miejsce, zwłaszcza w przypadku plików, które nie są często używane, oraz przepustowość dla przesyłanych plików, opracowano metody przechowywania danych w celu zapisania danych w mniejszym pakiecie poprzez ich pewną kompresję. W każdym przypadku stosowany jest algorytm kompresji — metoda zmniejszania rozmiaru danych. Istnieje kilka popularnych kategorii i typów algorytmów kompresji, z których każdy działa w inny sposób, a niektóre z nich dają wyniki, które różnią się w istotny sposób. Używając różnych algorytmów kompresji, zazwyczaj można zmniejszyć plik tekstowy do mniej niż połowy jego oryginalnego rozmiaru; w przypadku plików graficznych wyniki są bardzo zróżnicowane. Plik powstały w wyniku kompresji może mieć inny format lub plik archiwalny, który jest często używany do przechowywania, przesyłania i dystrybucji.

Jednym ze sposobów kategoryzacji algorytmów kompresji jest to, czy do kompresji danych używają one metod słownikowych czy statystycznych. Metoda słownikowa skupia się na powtarzalnych frazach i jest wykorzystywana w obrazach GIF oraz w archiwach JAR i ZIP. Metoda statystyczna opiera się na częstotliwości użycia w celu dokonania konwersji, która odbywa się w dwóch przejściach. Przykładem jest Modified Huffman (mh), używany w niektórych faksach.

Drugim sposobem kategoryzacji algorytmów kompresji i tym, z którym najczęściej spotykają się nieprofesjonalni programiści, jest to, czy są one bezstratne, czy stratne. Algorytm bezstratnej kompresji danych to taki, który kompresuje dane w taki sposób, że po ich dekompresji są one dokładnie takie same jak oryginalny plik. Jednym z przykładów bezstratnego algorytmu kompresji danych jest lzw (algorytm Lempel-Ziv-Welch). Opracowany w 1977 przez Lempel i Ziv i ulepszony w 1984 przez Welcha, jest używany w plikach takich jak GIF, TIF i PDF, a także w niektórych modemach.

Algorytm stratnej kompresji danych może redukować dane do mniejszego rozmiaru niż kompresja bezstratna, ale kosztem niektórych oryginalnych danych. Innymi słowy, przywrócenie po stratnej kompresji danych nie daje identycznej kopii oryginalnego pliku. Algorytm kompresji ma jednak na celu ograniczenie strat, aby nie były widoczne dla ucha lub oka. Kompresja stratna jest używana w formatach plików, takich jak AAC, JPEG, MPEG i MP3.