Co to jest bezstratna kompresja danych?
Bezstratna kompresja danych to komputerowa metoda przechowywania plików i łączenia ich w archiwa, które zajmują mniej miejsca fizycznego w pamięci niż pliki w przeciwnym razie bez utraty informacji zawartych w tym procesie. Natomiast utrata kompresji zmniejsza rozmiar pliku w przybliżeniu do danych, a przywracanie jest zbliżone do kopii oryginalnej zawartości pliku. Algorytmy stosowane do bezstratnej kompresji danych to w zasadzie zestaw usprawnionych reguł lub instrukcji do kodowania informacji przy użyciu mniejszej ilości pamięci, przy jednoczesnym zachowaniu możliwości przywracania danych do pierwotnego formatu bez zmian.
Niektóre typowe typy plików, które używają bezstratnej kompresji danych, to komputerowy plik zip i archiwa plików gzip firmy International Business Machines (IBM). Stosowane są również formaty plików graficznych, takie jak format wymiany graficznej (GIF), przenośna grafika sieciowa (PNG) i pliki bitmapowe (BMP). Algorytmy kompresji danych różnią się również w zależności od rodzaju kompresowanego pliku, z typowymi odmianami plików tekstowych, audio i plików wykonywalnych.
Dwie główne kategorie algorytmów bezstratnej kompresji danych oparte są na modelu statystycznym danych wejściowych i modelu odwzorowania ciągów bitów w pliku danych. Rutynowymi algorytmami statystycznymi są transformacja Burrowsa-Wheelera (BWT), algorytm Abrahama Lempela i Jacoba Ziva (LZ77) opublikowany w 1977 r. Oraz metoda przewidywania metodą częściowego dopasowania (PPM). Często stosowane algorytmy mapowania obejmują algorytm kodowania Huffmana i kodowanie arytmetyczne.
Niektóre z bezstratnych algorytmów kompresji danych są narzędziami typu open source, a inne są zastrzeżone i opatentowane, chociaż niektóre patenty również wygasły. Może to spowodować czasami zastosowanie metod kompresji do niewłaściwego formatu pliku. Z uwagi na fakt, że niektóre metody kompresji danych są ze sobą niezgodne, przechowywanie plików mieszanych może często spowodować degradację komponentu pliku. Na przykład plik obrazu ze skompresowanym tekstem może pogorszyć czytelność tekstu po przywróceniu. Skanery i oprogramowanie wykorzystujące indukcję gramatyczną mogą wydobywać znaczenie z tekstu przechowywanego wraz z plikami obrazów, stosując tak zwaną ukrytą analizę semantyczną (LSA).
Inną formą algorytmu mapowania do bezstratnej kompresji danych jest użycie kodu uniwersalnego. Bardziej elastyczny w użyciu niż kodowanie Huffmana, nie wymaga wcześniejszej znajomości maksymalnych wartości całkowitych. Jednak kodowanie Huffmana i kodowanie arytmetyczne zapewniają lepszą kompresję danych. Trwają również prace nad stworzeniem uniwersalnych metod kompresji danych, które stworzyłyby algorytmy działające dobrze dla różnych źródeł.