CTW, Algorytmy specjalizowane cz. 2 Algorytmy kompresji danych Sebastian Deorowicz 2009 04 23 Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 1 / 69
Plan wykładu 1 CTW 2 Specjalizowane algorytmy kompresji Kompresja leksykonów Kompresja plików XML i baz danych Kompresja plików dziennika Kompresja plików wykonywalnych Kompresja DNA i białek Kompresja różnicowa i zdalna synchronizacja Kompresja różnicowa Zdalna synchronizacja plików Kompresja zdalnych sesji graficznych Kompresja HTTP Trochę egzotyki Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 2 / 69
CTW (ang. Context Tree Weighting) Opis Algorytm CTW opublikowany w latach 1993 1995 roku przez Willemsa, Shtarkova i Tjalkensa Jeden z nowszych algorytmów kompresji ogólnego przeznaczenia Dla chętnych w miarę przystępny opis szczegółów CTW: http://www.sps.ele.tue.nl/members/f.m.j.willems/ RESEARCH_files/CTW/reflections.ps Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 3 / 69
Frans M. J. Willems Internet: http://userver.ftw.at/~jossy/photos/ 0303_NewJersey/dscn5794.jpg Ważne daty 1993 Współtwórca algorytmu CTW Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 4 / 69
PPM a CTW PPM Prawdopodobieństwo wystąpienia symbolu wyznaczane jest w kontekście pewnego maksymalnego rzędu d Jeśli w tym kontekście symbol jeszcze nie wystąpił, to kodowany jest symbol wyjścia, zmniejszany jest rząd i procedura powtarza się CWT Prawdopodobieństwo wystąpienia symbolu wyznaczane na podstawie statystyk dla wszystkich kontekstów rzędów od 0 do d Oryginalny algorytm działa dla sekwencji binarnej Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 5 / 69
PPM a CTW PPM Prawdopodobieństwo wystąpienia symbolu wyznaczane jest w kontekście pewnego maksymalnego rzędu d Jeśli w tym kontekście symbol jeszcze nie wystąpił, to kodowany jest symbol wyjścia, zmniejszany jest rząd i procedura powtarza się CWT Prawdopodobieństwo wystąpienia symbolu wyznaczane na podstawie statystyk dla wszystkich kontekstów rzędów od 0 do d Oryginalny algorytm działa dla sekwencji binarnej Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 5 / 69
Wyznaczanie prawdopodobieństw w algorytmie CTW Algorytm Wyznacz prawdopodobieństwo wystąpienia symbolu w bieżącym kontekście rzędu 0 jako średnią ważoną prawdopodobieństw wyznaczonych na podstawie statystyk dla tego rzędu i wyznaczonego prawdopodobieństwa dla rzędu 1 Prawdopodobieństwo dla rzędu 1 wyznacz jako średnią ważoną prawdopodobieństwa na podstawie statystyk dla rzędu 1 i wyznaczonego prawdopodobieństwa dla rzędu 2 Postępuj podobnie aż do rzędu d, dla którego prawdopodobieństwo wyznacza się tylko na podstawie statystyk występowania symboli dla tego rzędu Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 6 / 69
Jak kompresować dane nie-binarne? Dekompozycja Dane należy przekształcić na ciąg bitów Możliwe są tu różne sposoby, np.: kompresujemy kolejno wszystkie bity kiepskie wyniki tworzymy 8 niezależnych modeli (dla każdej pozycji w bajcie); kontekst można wyznaczać np. tak: kontekstem są tylko bity z tej pozycji w bajcie z ostatnich d bajtów (zwykle d 20) kontekstem są wszystkie bity z poprzednich bajtów i zakodowane już bity z bieżącego bajta Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 7 / 69
CTW wyniki praktyczne Współczynnik kompresji Gorszy o kilka-kilkanaście procent od PPMonstr a także gorszy od najlepszych algorytmów opartych na BWT Prędkość Wolny a nawet bardzo wolny kilkadziesiąt KB/s na współczesnych komputerach Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 8 / 69
Plan wykładu 1 CTW 2 Specjalizowane algorytmy kompresji Kompresja leksykonów Kompresja plików XML i baz danych Kompresja plików dziennika Kompresja plików wykonywalnych Kompresja DNA i białek Kompresja różnicowa i zdalna synchronizacja Kompresja różnicowa Zdalna synchronizacja plików Kompresja zdalnych sesji graficznych Kompresja HTTP Trochę egzotyki Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 9 / 69
Kompresja leksykonów Definicja Leksykon słownik, zawęzimy znaczenie tylko do listy słów (bez opisów) Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 10 / 69
Kompresja leksykonów Czy warto specjalnie kompresować leksykony? Często rozprowadzane jako słowniki Brak jakiejkolwiek składni Tak samo często (jednokrotnie) występują słowa bardzo częste i bardzo rzadkie Słowa zwykle posortowane Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 11 / 69
Kompresja leksykonu Można prosto Używamy zwykłego uniwersalnego algorytmu kompresji, np. PPMonstr Zbyt wysoki rząd nie pomaga, bo nie mu tu żadnej składni Można też bardziej wyrafinowanie Kolejne słowa zawierają długie powtarzające się sufiksy można zakodować długość powtórzenia na jednym bajcie, po którym będzie tylko sufiks różny z sufiksem poprzedniego słowa Dla PPMa pomaga wstawienie przed słowo wielu (dla każdego słowa tyle samo) spacji i zwiększenie rzędu Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 12 / 69
Kompresja leksykonu Można prosto Używamy zwykłego uniwersalnego algorytmu kompresji, np. PPMonstr Zbyt wysoki rząd nie pomaga, bo nie mu tu żadnej składni Można też bardziej wyrafinowanie Kolejne słowa zawierają długie powtarzające się sufiksy można zakodować długość powtórzenia na jednym bajcie, po którym będzie tylko sufiks różny z sufiksem poprzedniego słowa Dla PPMa pomaga wstawienie przed słowo wielu (dla każdego słowa tyle samo) spacji i zwiększenie rzędu Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 12 / 69
A może tak nieco gorsza kompresja ale coś w zamian? Idea Skompresować leksykon jak najbardziej się tylko da, ale umożliwić jednocześnie bardzo szybkie wyszukiwanie słów Algorytmy Tworzenie przez redukcję drzewa trie (wolne) lata 80 90 XX w. Bezpośrednie tworzenie statycznych automatów Daciuk, Mihov, Watson, Watson (1998), Ciura, Deorowicz (1999) Bezpośrednie tworzenie dynamicznych automatów Daciuk, Mihov, Watson, Watson (2000) Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 13 / 69
A może tak nieco gorsza kompresja ale coś w zamian? Idea Skompresować leksykon jak najbardziej się tylko da, ale umożliwić jednocześnie bardzo szybkie wyszukiwanie słów Algorytmy Tworzenie przez redukcję drzewa trie (wolne) lata 80 90 XX w. Bezpośrednie tworzenie statycznych automatów Daciuk, Mihov, Watson, Watson (1998), Ciura, Deorowicz (1999) Bezpośrednie tworzenie dynamicznych automatów Daciuk, Mihov, Watson, Watson (2000) Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 13 / 69
Automaty Wydajność Tworzenie ponad 10MB/s Wyszukiwanie ponad 1 mln słów/s Zastosowania Reprezentacja leksykonów, np. w słownikach ortograficznych, programach do gier słownych, programach do rozpoznawania mowy Reprezentacja tablic routingu (Novell) Wyznaczanie minimalnej doskonałej funkcji mieszającej Reprezentacja reguł przenoszenia wyrazów w TEXu Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 14 / 69
Automaty Wydajność Tworzenie ponad 10MB/s Wyszukiwanie ponad 1 mln słów/s Zastosowania Reprezentacja leksykonów, np. w słownikach ortograficznych, programach do gier słownych, programach do rozpoznawania mowy Reprezentacja tablic routingu (Novell) Wyznaczanie minimalnej doskonałej funkcji mieszającej Reprezentacja reguł przenoszenia wyrazów w TEXu Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 14 / 69
Automat Mealy ego reprezentujący leksykon defied defies defy defying denied denies deny denying trie tried tries try trying d t e r i f n y y i e e i n d s g Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 15 / 69
Automaty zajętość pamięci Słownik Bez kompresji Automat 2 ZIP PPMonstr 3 [kb] [kb] [kb] [kb] Angielski 688 270 203 90 Esperanto 11 205 227 1999 472 Francuski 2 418 245 521 165 Hiszpański 7 187 411 1474 416 Niemiecki 2 661 337 531 180 Polski (1) 16 647 726 3403 856 Polski (2) 50 921 1247 8217 1862 Rosyjski 8 911 726 1933 545 2 Automat jeszcze można skompresować (ok. dwukrotnie) ale wtedy nie będzie szybkiego dostępu do słów 3 Każde słowo poprzedzone 14 spacjami, rząd 16 Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 16 / 69
Plan wykładu 1 CTW 2 Specjalizowane algorytmy kompresji Kompresja leksykonów Kompresja plików XML i baz danych Kompresja plików dziennika Kompresja plików wykonywalnych Kompresja DNA i białek Kompresja różnicowa i zdalna synchronizacja Kompresja różnicowa Zdalna synchronizacja plików Kompresja zdalnych sesji graficznych Kompresja HTTP Trochę egzotyki Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 17 / 69
Kompresja plików XML Pliki XML Nowoczesny format służący do przechowywania i wymiany danych Dane najczęściej przechowywane w postaci tekstowej Zestaw znaczników opisujących dane nie jest ustalony przez standard a użytkownicy mogą swobodnie stosować własne znaczniki Znaczniki tworzą zagnieżdżoną strukturę, a dokument można przedstawić jako pojedyncze drzewo Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 18 / 69
Pliki XML przykład <Line> <PKey>15</PKey> <SKey>1</SKey> <Count>1</Count> <Qty>25</Qty> <Price>22875.25</Price> <Discount>0.09</Discount> <Tax>0.05</Tax> <RFlag>A</RFlag> <Status>F</Status> <SDate>1994-06-14</SDate> <CDate>1994-07-20</CDate> <RDate>1994-06-23</RDate> <SI>COLLECT COD</SI> <SM>MAIL</SM> <Comment>hAwAxxiNP6nz7jQkhyNQnjB5yn</Comment> </Line> Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 19 / 69
Kompresja XML Gdzie tu jest redundancja? Prawie wszystkie znaczniki otwierające mają znaczniki zamykające Teksty zwykle w języku naturalnym Wiodące spacje zwykle odzwierciedlają poziomy zagnieżdżenia Pola numeryczne zapisywane tekstowo; często są one podobne w kolejnych rekordach Daty zapisywane tekstowo, dodatkowo bardzo często daty się powtarzają albo różnią się tylko nieznacznie Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 20 / 69
Kompresja XML Istniejące algorytmy, cz. 1 Algorytmy ogólnego przeznaczenia dają całkiem dobre wyniki, ale nie wykorzystują one wiedzy o strukturze plików XML XMill (Liefke i Suciu, 2000) rozdziela dokument na trzy oddzielnie kompresowane strumienie: nazwy znaczników i atrybutów tekst układ struktury Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 21 / 69
Kompresja XML Istniejące algorytmy, cz. 2 XMLPPM (Cheney, 2001) specjalizowana wersja PPMa używająca czterech osobnych modeli dla kompresji różnych części dokumentu (np. znaczników, tekstu) XWRT (Swacha, Grabowski, Skibiński, 2006) preprocesing dokumentu, którego główna idea polega na zamianie najczęstszych słów na kody ze słownika (stworzonego we wstępnym przebiegu) Specjalna wersja transformaty BWT dla plików XML (Ferragina, 2006) Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 22 / 69
Kompresja XML przykładowe dane Plik Rozmiar [MB] Elementy Atrybuty Max. głęb. DBPL 127.7 3 332 130 404 276 6 NASA 2.1 48 001 1 3 SwissPr 109.5 2 977 031 2 189 859 5 Pliki DBPL dane bibliograficzne o pracach naukowych NASA dane astronomiczne SwissPr dane o strukturach białkowych Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 23 / 69
Kompresja XML przykładowe wyniki (w bpc) 3 Algorytm DBPL NASA SwissPr bzip2 0.955 0.879 0.608 PPMd 0.694 0.768 0.479 zip 1.463 1.208 0.985 XMill+bzip2 0.942 0.831 0.466 XMill+PPMd 0.926 0.786 0.443 XMLPPM 0.857 0.729 0.465 XWRT+bzip2 0.881 0.731 0.474 XWRT+PPMd 0.732 0.601 0.400 XWRT+zip 0.976 0.783 0.559 3 Wyniki za Sz. Grabowski, prywatna komunikacja Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 24 / 69
Kompresja baz danych Czy jest potrzebna? Bazy danych osiągają ogromne rozmiary wniosek: jest bardzo potrzebna! Uwaga Różne bazy danych przechowywane są w różnych formatach wniosek: więcej pracy dla informatyków :-) Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 25 / 69
Kompresja baz danych Czy jest potrzebna? Bazy danych osiągają ogromne rozmiary wniosek: jest bardzo potrzebna! Uwaga Różne bazy danych przechowywane są w różnych formatach wniosek: więcej pracy dla informatyków :-) Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 25 / 69
Kompresja baz danych Możliwe podejścia Stawiamy na maksymalny współczynnik kompresji np. przy archiwizacji Stawiamy na dobry współczynnik kompresji przy zachowaniu swobody dostępu do danych np. dla danych rzadko używanych, ale takich, które jednak muszą być dostępne w miarę szybko Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 26 / 69
Kompresja baz danych przykładowa tabela Imię Nazwisko Data ur. Wzrost Miasto Płeć Jan Kowalski 12-04-1968 175 Gliwice M Joachim Nowak 23-02-1971 189 Bytom M Karolina Banach 05-11-1978 162 Gliwice K Zofia Zielna 22-04-1972 170 Zabrze K Tadeusz Żółtko 14-05-1980 172 Skoczów M Joanna Malinowska 30-07-1982 175 Łódź K Sonia Janik 09-08-1975 168 Mysłowice K Stefan Nowakowski 12-12-1972 178 Radzionków M Anna Kalinowska 28-03-1984 171 Katowice K Roman Polny 29-10-1976 180 Zabrze M Monika Tuszyńska 16-06-1982 173 Zabrze K Gizela Sroka 25-05-1977 165 Katowice K Tadeusz Tyczka 01-06-1974 178 Zabrze M Anna Złotopolska 11-05-1971 179 Warszawa K Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 27 / 69
Kompresja baz danych Gdzie tu jest redundancja? Dane przechowywane jako zbiory rekordów W każdym rekordzie te same typy pól tabela ma określoną strukturę Pola niektórych typów, np. liczbowych, daty, mogą być przechowywane w postaci tekstowej Wartości w polach daty kolejnych rekordów często nie różnią się od siebie za bardzo Często istnieją silne korelacje pomiędzy wartościami pól numerycznych w kolejnych rekordach Pola tekstowe często zawierają sporo spacji kończących (pole jest stałej długości) Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 28 / 69
Kompresja baz danych Przykładowa idea Bazę danych przekształcamy z zapisu wierszami na zapis kolumnami nie mieszają się wtedy pola numeryczne z tekstowymi itp. Daty kodujemy przyrostowo i binarnie a nie tekstowo Pola numeryczne kodujemy binarnie i ew. także przyrostowo Przekształconą tabelę kompresujemy z użyciem jednego ze znanych uniwersalnych algorytmów Można rozbić bazę danych na kilka plików (np. według typów kolumn) i kompresować każdy z plików osobno Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 29 / 69
Plan wykładu 1 CTW 2 Specjalizowane algorytmy kompresji Kompresja leksykonów Kompresja plików XML i baz danych Kompresja plików dziennika Kompresja plików wykonywalnych Kompresja DNA i białek Kompresja różnicowa i zdalna synchronizacja Kompresja różnicowa Zdalna synchronizacja plików Kompresja zdalnych sesji graficznych Kompresja HTTP Trochę egzotyki Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 30 / 69
Kompresja plików dziennika Pliki dziennika (logi) Pliki dziennika dokumentują wykonywane operacje, np. systemy baz danych, serwery WWW Format nie jest ustalony, np. w Apache u można zdefiniować jakie pola mają być zapisywane do tych plików Duża redundancja Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 31 / 69
Kompresja plików dziennika Serwery WWW Redundancja Nazwy i rozmiary plików powtarzalne Zwykle kolejne zapytania pochodzą z tego samego adresu IP Data tylko rośnie i różnice między kolejnymi wpisami w polu daty/czasu niewielkie Niektóre pola tekstowe zawierają bardzo dużo wspólnych fragmentów, np. powielone prefiksy, sufiksy Niektóre pola zawierają wartości z bardzo niewielkiej dziedziny (np. kody 200, 504, itd.) Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 32 / 69
Plan wykładu 1 CTW 2 Specjalizowane algorytmy kompresji Kompresja leksykonów Kompresja plików XML i baz danych Kompresja plików dziennika Kompresja plików wykonywalnych Kompresja DNA i białek Kompresja różnicowa i zdalna synchronizacja Kompresja różnicowa Zdalna synchronizacja plików Kompresja zdalnych sesji graficznych Kompresja HTTP Trochę egzotyki Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 33 / 69
Kompresja plików wykonywalnych Dwa podejścia 1 Kompresja pliku wykonywalnego w celu archiwizacji 2 Kompresja pliku wykonywalnego do postaci, która da się uruchamiać Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 34 / 69
Kompresja EXE do archiwum Idea Programy wykonywalne mają określoną strukturę Można przeprowadzić deasemblację kodu binarnego w celu lepszej analizy pliku Instrukcje procesora mają przypisane konkretne kody binarne można próbować to jakoś wykorzystać Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 35 / 69
Kompresja EXE do pliku wykonywalnego Idea Plik wykonywalny składa się z: krótkiego (kilkaset bajtów kilka kilobajtów) nagłówka, który jest programem dekompresującym w locie skompresowanego oryginalnego pliku wykonywalnego Po uruchomieniu program dekompresujący odtwarza oryginalny program, który jest następnie uruchamiany Dekompresja musi być szybka, ale użytkownik nie odczuwał dyskomfortu Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 36 / 69
Kompresja EXE do pliku wykonywalnego Po co taka kompresja? Mniejsze pliki wykonywalne, które jednak mogą być uruchamiane Czasami uruchomienie takiego pliku jest szybsze niż oryginalnego, jeśli medium, z którego jest on uruchamiany jest wolne, np. dyskietka Można uruchamiać program bez jego dekompresji (sam w locie się dekompresuje) Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 37 / 69
Kompresja EXE do pliku wykonywalnego Jedna z istniejących realizacji UPX (http://upx.sourceforge.net/) wydajny kompresor oferujący bardzo szybką dekompresję i bardzo dobry współczynnik kompresji Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 38 / 69
Plan wykładu 1 CTW 2 Specjalizowane algorytmy kompresji Kompresja leksykonów Kompresja plików XML i baz danych Kompresja plików dziennika Kompresja plików wykonywalnych Kompresja DNA i białek Kompresja różnicowa i zdalna synchronizacja Kompresja różnicowa Zdalna synchronizacja plików Kompresja zdalnych sesji graficznych Kompresja HTTP Trochę egzotyki Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 39 / 69
Kompresja DNA i białek Po co taka kompresja? Ogromne ilości danych biologicznych Bazy danych biologicznych rosną w bardzo szybkim tempie Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 40 / 69
Kompresja DNA i białek Cechy DNA Alfabet 4-znakowy (zasady): A (adenina), C (cytozyna), G (guanina), T (tymina) Cechy białek Alfabet 20-znakowy (aminokwasy): A (alanina), C (cysteina), D (kwas asparaginowy), E (kwas glutaminowy), F (fenyloalanina), G (glicyna), H (histydyna), I (izoleucyna), K (lizyna), L (leucyna), M (metionina), N (asparagina), P (prolina), Q (glutamina), R (arginina), S (seryna), T (treonina), V (walina), W (tryptofan), Y (tyrozyna) Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 41 / 69
Kompresja DNA i białek Cechy DNA Alfabet 4-znakowy (zasady): A (adenina), C (cytozyna), G (guanina), T (tymina) Cechy białek Alfabet 20-znakowy (aminokwasy): A (alanina), C (cysteina), D (kwas asparaginowy), E (kwas glutaminowy), F (fenyloalanina), G (glicyna), H (histydyna), I (izoleucyna), K (lizyna), L (leucyna), M (metionina), N (asparagina), P (prolina), Q (glutamina), R (arginina), S (seryna), T (treonina), V (walina), W (tryptofan), Y (tyrozyna) Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 41 / 69
Kompresja DNA i białek Struktura DNA i białek Inny typ redundancji niż zakładany przez klasyczne algorytmy Klasyczne algorytmy działają kiepsko Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 42 / 69
Kompresja DNA i białek Redundancja w DNA Łańcuchy DNA zawierają niewiele powtórzeń, ale powtórzenia te są zwykle długie a nawet bardzo długie Powtórzenia często występują w bardzo odległych miejscach (nie ma lokalności jak w tekstach) Zasady A i T oraz C i G tworzą pary Często zdarzają się w łańcuchach powtórzenia odwrócone, w których zasady są zamienione, tj. za A jest T a za C jest G, np. AACTGT ACAGTT Powtórzenia są długie ale często zawierają drobne błędy (wynik rozmaitych mutacji) Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 43 / 69
Kompresja DNA i białek Istniejące algorytmy BioCompress2 (Grumbach, Tahi, 1994) GenCompress-2 (Chen i in., 2000) DNACompress (Chen i in., 2002) MR2004 (Manzini Rastero, 2004) AN2006 (Adjeroh Nan, 2006) Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 44 / 69
Kompresja DNA i białek Czy naprawdę warto? Wyniki dla DNA są na poziomie 1.6 1.9 bita/znak (tylko sporadycznie jest istotnie lepiej) zważywszy na to, że 4-znakowy alfabet wymaga 2.0 bita/znak bez żadnej kompresji nie jest to osiągnięcie rewelacyjne Wyniki dla białek są na poziomie 2.3 3.4 bita/znak bez kompresji białka wymagają 4.32 bita/znak Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 45 / 69
Plan wykładu 1 CTW 2 Specjalizowane algorytmy kompresji Kompresja leksykonów Kompresja plików XML i baz danych Kompresja plików dziennika Kompresja plików wykonywalnych Kompresja DNA i białek Kompresja różnicowa i zdalna synchronizacja Kompresja różnicowa Zdalna synchronizacja plików Kompresja zdalnych sesji graficznych Kompresja HTTP Trochę egzotyki Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 46 / 69
Kompresja różnicowa Sytuacja 1 Istnieją różne wersje tego samego pliku, np. na komputerze firmowym wersja aktualna, a na komputerze domowym starsza Chcemy uaktualnić wersję domową do wersji nowej, a prędkość łącza nie zwala z nóg Sytuacja 2 Rozprowadzamy uaktualnienie oprogramowania Uaktualnienie polega na podmianie części plików na nowe wersje, które jednak tylko nieznacznie różnią się od wersji poprzednich Chcemy zminimalizować rozmiar uaktualnienia, żeby użytkownicy mogli wygodnie i szybko ściągnąć dane Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 47 / 69
Kompresja różnicowa Sytuacja 1 Istnieją różne wersje tego samego pliku, np. na komputerze firmowym wersja aktualna, a na komputerze domowym starsza Chcemy uaktualnić wersję domową do wersji nowej, a prędkość łącza nie zwala z nóg Sytuacja 2 Rozprowadzamy uaktualnienie oprogramowania Uaktualnienie polega na podmianie części plików na nowe wersje, które jednak tylko nieznacznie różnią się od wersji poprzednich Chcemy zminimalizować rozmiar uaktualnienia, żeby użytkownicy mogli wygodnie i szybko ściągnąć dane Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 47 / 69
Kompresja różnicowa Obserwacje Dwie wersje plików różnią się tylko nieznacznie Obie strony dysponują starszą wersją pliku, więc zamiast przesyłać cały plik można przesłać tylko różnice Problem Jak to zrobić? Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 48 / 69
Kompresja różnicowa Obserwacje Dwie wersje plików różnią się tylko nieznacznie Obie strony dysponują starszą wersją pliku, więc zamiast przesyłać cały plik można przesłać tylko różnice Problem Jak to zrobić? Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 48 / 69
Kompresja różnicowa Metoda Do kompresji różnicowej świetnie nadają się algorytmy z rodziny Ziva Lempela Algorytm kompresji pracuje na dwóch plikach: starym i nowym Kompresowany jest tylko nowy plik w następujący sposób: Dla bieżącej pozycji w nowym pliku wyszukaj najdłuższe powtórzenie zarówno w całym starym pliku jak i w zakodowanym już fragmencie nowego pliku Zakoduj informacje o powtórzeniu Odbiorca (dekompresor) zna stary plik, więc nie będzie miał problemu z odkodowaniem takiej sekwencji Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 49 / 69
Kompresja różnicowa Czy to takie proste? Jeśli pliki są małe to tak Jeśli pliki są duże, to oczywiście w nowym pliku wyszukujemy dopasowania tylko w oknie o rozmiarze np. 32 KB Problemem może być stary plik, bo tam też powinniśmy przesuwać okno niestety nie jest oczywiste jak je przesuwać Istnieją różne heurystyki przesuwania okna w starym pliku Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 50 / 69
Kompresja różnicowa wyniki eksperymentalne Algorytmy vcdiff (Hunt i in., 1998) xdelta (MacDonald, 2000) zdelta (Trendafilov i in., 2002) Dane testowe gcc 2.7.0 i gcc 2.7.1 emacs 19.28 i emacs 19.29 Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 51 / 69
Kompresja różnicowa wyniki eksperymentalne 4 Algorytm Rozmiar gcc [KB] Rozmiar emacs [KB] Bez kompresji 27 288 27 326 gzip 7 479 8 191 zdelta 250 1 465 4 Wyniki z K. Sayood, Lossless Compression Handbook, 2003 Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 52 / 69
Zdalna synchronizacja plików Problem Dysponujemy jakąś wersją pliku Serwer dysponuje najnowszą wersją pliku Chcemy uaktualnić naszą wersję pliku do wersji, która znajduje się na serwerze Serwer nie dysponuje naszą wersją pliku, bo samodzielnie ją edytowaliśmy Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 53 / 69
Zdalna synchronizacja plików Obserwacje Duże części naszej wersji pliku i wersji serwera są identyczne Identyczne fragmenty mogą być przesunięte względem siebie (występują w różnych miejscach w plikach) Serwer nie zna naszej wersji pliku Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 54 / 69
Zdalna synchronizacja plików Algorytm 1 Klient dzieli swój plik na bloki rozmiaru rzędu kilkudziesięciu kilkuset KB 2 Klient dla każdego z bloków oblicza sumę kontrolną 3 Klient wysyła sumy kontrolne do serwera 4 Serwer wyszukuje w swojej wersji pliku takie miejsca, które mają identyczne sumy kontrolne 5 Serwer wysyła informacje o różnicach i nowe fragmenty pliku 6 Klient uaktualnia swoją wersję pliku Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 55 / 69
Zdalna synchronizacja plików wyniki eksperymentalne 5 Algorytm Rozmiar gcc [KB] Rozmiar emacs [KB] Bez kompresji 27 288 27 326 gzip 7 479 8 191 zdelta 250 1 465 rsync (skompresowany) 876 4 428 5 Wyniki z K. Sayood, Lossless Compression Handbook, 2003 Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 56 / 69
Kompresja zdalnych sesji graficznych Sytuacja Pracujemy zdalnie na oddalonym komputerze np. za pomocą Podłączania pulpitu zdalnego Łącze jest stosunkowo wolne a chcemy pracować graficznie Jeden ekran komputera w rozdzielczości 1024 768 to ok. 2.25MB Wygodna praca wymaga przesyłania kilku takich ekranów na sekundę Kto ma łącze 100Mb/s? Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 57 / 69
Kompresja zdalnych sesji graficznych Gdzie tu jest redundancja? Zwykle mało się zmienia na ekranie w krótkim czasie można przesyłać tylko na początku pełny ekran, a później tylko różnice, np. wynik operacji xor na kolejnych ekranach Okna aplikacji zawierają zwykle tylko kilkanaście kilkadziesiąt różnych kolorów nie potrzeba przesyłać 24bitów/piksel Sąsiednie piksele bardzo często są identyczne Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 58 / 69
Kompresja zdalnych sesji graficznych Czy to takie proste? Jeśli użytkownik przesuwa okno, to wynik po xor będzie całkiem duży można jednak każde okno przesyłać niezależnie Pulpit może być skomplikowanym obrazkiem można pulpit przesłać tylko raz i nakładać na niego przesyłane okna Nawet pierwsze przesłanie pulpitu może długo trwać na wolnym łączu można zrezygnować z przesyłania pulpitu (może użytkownik się pogodzi z tym dyskomfortem?) Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 59 / 69
Kompresja zdalnych sesji graficznych Co jeszcze można? Często użytkownik będzie na tyle zadowolony, że ma zdalny dostęp, że pewne niedogodności zaakceptuje Przykładowo można ograniczyć paletę kolorów do 256 na zdalnym pulpicie Przesyłane dane można (należy!) dodatkowo kompresować jakimś algorytmem Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 60 / 69
Kompresja zdalnych sesji graficznych Zastosowania Zdalny dostęp (wbudowany w Windows): MS nie chwali się czego używa w środku (jakiej kompresji) technicznie jest to realizowane przez specjalizowany sterownik karty grafiki VNC: architektura klient/serwer różne systemy operacyjne analizuje ekran jako obraz a nie jako poszczególne okna, więc gorsza kompresja niż zdalny dostęp NX: idea podobna do VNC, ale większa uwaga poświęcona kompresji danych Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 61 / 69
Plan wykładu 1 CTW 2 Specjalizowane algorytmy kompresji Kompresja leksykonów Kompresja plików XML i baz danych Kompresja plików dziennika Kompresja plików wykonywalnych Kompresja DNA i białek Kompresja różnicowa i zdalna synchronizacja Kompresja różnicowa Zdalna synchronizacja plików Kompresja zdalnych sesji graficznych Kompresja HTTP Trochę egzotyki Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 62 / 69
Kompresja HTTP Opis Od wersji HTTP 1.1 dostępna jest kompresja stron internetowych (serwer kompresuje, przeglądarka dekompresuje) Wszystkie współczesne przeglądarki obsługują kompresję HTTP (przykładowo IE od wersji 4.0) Algorytm Deflate używany w formacie ZIP Co kompresować? W zasadzie tylko pliki HTML, CSS, JavaScript Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 63 / 69
Kompresja HTTP Urządzenia mobilne i niemobilne Przy stałym łączu zwykle dziś przepustowość nie jest problemem jeśli nie odbieramy multimediów W urządzeniach mobilnych przepustowość może być niewielka a dodatkowo występują limity transferów Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 64 / 69
Kompresja HTTP Charakterystyka przeglądania Internetu na komórkach Rozmiary ekranu jest znacznie mniejsza niż rozmiary ekranów komputerów W zasadzie dziś jesteśmy zadowoleni, że można przeglądać Internet Jakość renderowania stron ma mniejsze znaczenie (zwłaszcza jeśli chodzi o zdjęcia) Rozwiązanie Dostarczać dla komórek specjalizowaną stronę takie coś było (WAP) i specjalnie się nie przyjęło Obniżyć jakość zdjęć dostarczanych na komórkę wymaga współpracy serwera (trudno tego oczekiwać) bądź serwera proxy (Opera Mini) Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 65 / 69
Plan wykładu 1 CTW 2 Specjalizowane algorytmy kompresji Kompresja leksykonów Kompresja plików XML i baz danych Kompresja plików dziennika Kompresja plików wykonywalnych Kompresja DNA i białek Kompresja różnicowa i zdalna synchronizacja Kompresja różnicowa Zdalna synchronizacja plików Kompresja zdalnych sesji graficznych Kompresja HTTP Trochę egzotyki Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 66 / 69
Kompresja RAM Idea Transfer na dysk danych z RAMu, które są mało używane kosztuje z powodu wolnego interfejsu dysku Jeśli dysponujemy bardzo szybką kompresją, to zamiast przesyłać dane na dysk można je w RAMie skompresować Realizacje MagnaRAM kiedyś było (koniec XX w.) ale umarło, bo dzisiejsze dyski są wystarczająco szybkie Ram Doubler j.w. SoftRAM j.w. Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 67 / 69
Kompresja SMS-ów Obserwacje SMSy to zwykle teksty Długość SMSa ograniczona do 160 znaków Jeśli używamy polskich znaków, to rozmiar SMSa redukuje się drastycznie Realizacje SMS lossless compression kompresja SMSów za pomocą specjalizowanego algorytmu opartego na LZ (http://www.geocities.com/antaresanto/sms_compression.html) Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 68 / 69
Kompresja specjalizowana Czy to już wszystkie możliwości? Zdecydowanie nie! W zasadzie wszystkie algorytmy kompresji obrazów, dźwięków, sekwencji wideo są algorytmami specjalizowanymi W szczególności specjalizowane muszą być algorytmy kompresji stratnej, ale o tym już na kolejnych wykładach... Sebastian Deorowicz () AKD CTW, Algorytmy specjalizowane cz. 2 2009 04 23 69 / 69