CTW, Algorytmy specjalizowane cz. 2

Transkrypt

CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
CTW, Algorytmy specjalizowane cz. 2
Algorytmy kompresji danych
Sebastian Deorowicz
2007–04–24
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Plan wykładu
1
CTW
2
Specjalizowane algorytmy kompresji
Kompresja plików XML i baz danych
Kompresja plików wykonywalnych
Kompresja DNA i białek
Kompresja różnicowa i zdalna synchronizacja
3
Tematy projektów
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Frans M. J. Willems
Internet:
Ważne daty
http://userver.ftw.at/~jossy/photos/
0303_NewJersey/dscn5794.jpg
1993 – Współtwórca algorytmu
CTW
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
Plan wykładu
1
CTW
2
Specjalizowane algorytmy kompresji
Kompresja plików XML i baz danych
Kompresja plików wykonywalnych
Kompresja DNA i białek
Kompresja różnicowa i zdalna synchronizacja
3
Tematy projektów
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
Kompresja XML — przykładowe dane
Plik
DBPL
NASA
SwissPr
Rozmiar [MB]
127.7
2.1
109.5
Elementy
3 332 130
48 001
2 977 031
Atrybuty
404 276
1
2 189 859
Max. głęb.
6
3
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
Kompresja XML — przykładowe wyniki (w bpc)1
Algorytm
bzip2
PPMd
zip
XMill+bzip2
XMill+PPMd
XMLPPM
XWRT+bzip2
XWRT+PPMd
XWRT+zip
1
DBPL
0.955
0.694
1.463
0.942
0.926
0.857
0.881
0.732
0.976
NASA
0.879
0.768
1.208
0.831
0.786
0.729
0.731
0.601
0.783
SwissPr
0.608
0.479
0.985
0.466
0.443
0.465
0.474
0.400
0.559
Wyniki za Sz. Grabowski, prywatna komunikacja
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
Kompresja baz danych — przykładowa tabela
Imię
Jan
Joachim
Karolina
Zofia
Tadeusz
Joanna
Sonia
Stefan
Anna
Roman
Monika
Gizela
Tadeusz
Anna
Nazwisko
Kowalski
Nowak
Banach
Zielna
Żółtko
Malinowska
Janik
Nowakowski
Kalinowska
Polny
Tuszyńska
Sroka
Tyczka
Złotopolska
Data ur.
12-04-1968
23-02-1971
05-11-1978
22-04-1972
14-05-1980
30-07-1982
09-08-1975
12-12-1972
28-03-1984
29-10-1976
16-06-1982
25-05-1977
01-06-1974
11-05-1971
Sebastian Deorowicz
Wzrost
175
189
162
170
172
175
168
178
171
180
173
165
178
179
Miasto
Gliwice
Bytom
Gliwice
Zabrze
Skoczów
Łódź
Mysłowice
Radzionków
Katowice
Zabrze
Zabrze
Katowice
Zabrze
Warszawa
Płeć
M
M
K
K
M
K
K
M
K
M
K
K
M
K
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
Plan wykładu
1
CTW
2
Specjalizowane algorytmy kompresji
Kompresja plików XML i baz danych
Kompresja plików wykonywalnych
Kompresja DNA i białek
Kompresja różnicowa i zdalna synchronizacja
3
Tematy projektów
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
Plan wykładu
1
CTW
2
Specjalizowane algorytmy kompresji
Kompresja plików XML i baz danych
Kompresja plików wykonywalnych
Kompresja DNA i białek
Kompresja różnicowa i zdalna synchronizacja
3
Tematy projektów
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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) — szybkie
AN2006 (Adjeroh–Nan, 2006) — nowość
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
Plan wykładu
1
CTW
2
Specjalizowane algorytmy kompresji
Kompresja plików XML i baz danych
Kompresja plików wykonywalnych
Kompresja DNA i białek
Kompresja różnicowa i zdalna synchronizacja
3
Tematy projektów
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
Kompresja różnicowa — wyniki eksperymentalne2
Algorytm
Bez kompresji
gzip
zdelta
2
Rozmiar gcc [KB]
27 288
7 479
250
Rozmiar emacs [KB]
27 326
8 191
1 465
Wyniki z K. Sayood, Lossless Compression Handbook, 2003
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
Zdalna synchronizacja plików — wyniki eksperymentalne3
Algorytm
Bez kompresji
gzip
zdelta
rsync (skompresowany)
3
Rozmiar gcc [KB]
27 288
7 479
250
876
Rozmiar emacs [KB]
27 326
8 191
1 465
4 428
Wyniki z K. Sayood, Lossless Compression Handbook, 2003
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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 10MB/s?
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
Kompresja
Kompresja
Kompresja
Kompresja
plików XML i baz danych
plików wykonywalnych
DNA i białek
różnicowa i zdalna synchronizacja
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
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
P1 — Kompresor plików w formacie .dbf (2 osoby)
Idea
Przeanalizować nagłówek pliku .dbf
Kompresja kolumnami a nie wierszami (większe podobieństwa)
Różne metody kompresji pól różnych typów:
tekstowe — np. LZSS + RangeCoder
logiczne — wprost RangeCoder
numeryczne — binarnie i ew. RangeCoder (pola numeryczne zapisane
znakowo!)
daty — binarnie (pola daty zapisane znakowo!)
Można zmienić kolejność kolumn
Możliwe, że kodowanie różnic pomiędzy polami (np. daty) pomoże
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
P2 — Kompresja pliku w formacie .dbf z zachowaniem
dostępu swobodnego do rekordów (2 osoby)
Idea
Każdy rekord musi być zakodowany niezależnie od pozostałych:
oprócz zakodowanych rekordów skompresowane dane winny zawierać,
wspólny dla wszystkich rekordów, opis ich charakterystyki (np. słownik dla
pól tekstowych) na podstawie którego poszczególne rekordy kodowane są
niezależnie,
ponieważ rekordy będą miały różne długości, konieczne będzie utworzenie
indeksu (tablicy offsetów początków poszczególnych rekordów w pliku)
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
P2 — Kompresja pliku w formacie .dbf z zachowaniem
dostępu swobodnego do rekordów (2 osoby)
Idea
Operacja modyfikacji rekordu może zmienić jego rozmiar (w postaci
skompresowanej):
w takim przypadku należy umieścić go na końcu pliku, a jego poprzednią
lokalizację oznaczyć jako puste miejsce (lub umieścić w wystarczająco
dużym pustym miejscu pozostałym po innym rekordzie) — zatem należy
przechowywać również indeks/listę pustych miejsc
w sposób podobny, jak wyżej, realizujemy usunięcie rekordu
zaimplementować operację przebudowy skompresowanego pliku, która
polegać będzie na usunięciu pustych miejsc; taka przebudowa powinna być
wykonywana na żądanie oraz ewentualnie w sytuacji, gdy puste miejsca
zajmują ponad (np.) 10% skompresowanego pliku
W danych wspólnych dla wszystkich rekordów konieczna jest okresowa
aktualizacja tych danych — można ją przeprowadzać co n dodanych
rekordów oraz łącznie z przebudową pliku
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
P3 — Kompresja pliku w formacie .ini z zachowaniem
dostępu swobodnego do sekcji i kluczy (1 osoba)
Idea
Temat bardzo podobny do tematu P2
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
P4 — Klasa skompresowanego stringa (1 lub 2 osoby)
Wymagania
Opracować klasę packedstring funkcjonalnie odpowiadającą klasie string
z biblioteki standardowej języka C++, ale potrafiącą wewnętrznie
przechowywać łańcuch w postaci skompresowanej.
Klasa packedstring przeznaczona jest do zastosowania tam, gdzie prawie
wszystkie operacje na łańcuchach to operacja przypisania i operacje
we/wy realizowane na całym łańcuchu oraz dopisywanie na końcu
łańcucha innego łańcucha lub pojedynczego znaku.
Można przyjąć, że typowy rozmiar łańcucha jest odpowiednio duży
(kilkaset znaków).
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
P4 — Klasa skompresowanego stringa (1 lub 2 osoby)
Idea
Rozwiązanie można zrealizować w oparciu o kodowanie słownikowe LZSS
(ewentualnie LZSS + koder arytmetyczny ze stałym modelem)
Przy dopisaniu, na końcu łańcucha, nowego znaku lub łańcucha,
kompresja będzie efektywniejsza, jeżeli „cofniemy się” do początku
ostatnio zakodowanej frazy i spróbujemy czy teraz nie znajdzie się dłuższa
fraza (można również „koniec łańcucha” kodować z opóźnieniem)
Poniżej pewnej granicznej długości łańcucha kompresja jest nieefektywna,
więc klasa packedstring winna krótkie łańcuchy przechowywać nie
skompresowane
klasa powinna obsługiwać również pozostałe typowe operacje
na łańcuchach (w tym np. swobodne indeksowanie znaków łańcucha,
metodę c str(), itp.) — niektóre takie operacje wymagać będą przejścia
na nie skompresowaną reprezentację łańcucha i pozostawienia łańcucha
w takiej postaci (np. spakowany napis[20]=’a’); klasa powinna mieć
metodę wymuszenia wewnętrznej reprezentacji skompresowanej lub nie
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
P5 — Klasa C++ reprezentująca archiwum ZIP (2 osoby)
Idea
Standard formatu ZIP dopuszcza dwa algorytmy kompresji, które są
implementowane za pomocą poznanych bibliotek: zlib oraz libbzip2 (patrz
pierwsze laboratorium)
Tematem projektu jest wykorzystanie obu tych bibliotek do stworzenia
klasy języka C++ reprezentującej archiwum ZIP
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
P5 — Klasa C++ reprezentująca archiwum ZIP (2 osoby)
Wymagania
Wymagane metody:
Create — utworzenie pustego archiwum
Open — otwarcie archiwum
Close — zamknięcie archiwum
ListContents — zwrócenie listy plików (do listy)
GetHeader — zwrócenie nagłówka konkretnego pliku z archiwum
AddFile — dodanie pliku do archiwum z kompresją (tu się ustala
parametry kompresji)
AddFileRaw — dodanie do archiwum pliku skompresowanego (przydaje się
kiedy trzeba przenosić plik z archiwum do archiwum — np. przy
wyrzucaniu niektórych plików, bądź zastępowaniu nową wersją)
GetFile — dekompresja pliku z archiwum
GetFileRaw — zwrócenie z archiwum pliku skompresowanego
Klasa powinna także umożliwiać podpięcie przez użytkownika własnego
paska postępu (np. poprzez odziedziczenie po jakiejś klasie bazowej)
i własnej obsługi błędów
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
P6 — Klasa C++ reprezentująca automat przechowujący
leksykon (2 osoby)
Wymagania
Źródła automatu reprezentującego leksykon są dostępne na stronie
http://www-zo.iinf.polsl.gliwice.pl/~sdeor/pub/cd00abs.htm
Należy te źródła przerobić na C++ i dodać funkcjonalność zapisu
automatu na dysk w postaci jeszcze bardziej skompresowanej (możliwy
jest stopień kompresji 2:1 a nawet trochę więcej)
Do kompresji należy wykorzystać RangeCoder
Struktura wewnętrzna automatu
Automat przechowywany jest wewnętrznie w postaci tablicy
Tablica ta zawiera w kolejnych komórkach krawędzie
Kilka (od 1 do kilkudziesięciu) kolejnych krawędzi opisuje jeden węzeł
Każdy węzeł kończy się krawędzią, która ma ustawiony bit (znacznik)
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
P6 — Klasa C++ reprezentująca automat przechowujący
leksykon (2 osoby)
Idea
Znaczniki końca węzła są ustawione w większości krawędzi na 0, a tylko
w tych kończących węzeł na 1
Znaczniki terminalności rzadziej są ustawione na 0 niż na 1
Krawędzie w węźle ułożone są w porządku alfabetycznym (w wersji
podstawowej automatu), tj. kontekstem symbolu może być poprzedni
symbol
Adresy zawsze wskazują na niższe pozycje w tablicy
Adres jest potencjalnie liczbą z zakresu [0, 222 − 1], więc należy go
efektywnie kodować
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
P7 — Porównanie kilku implementacji kodowania
arytmetycznego (1 lub 2* osoby)
Wymagania
Przeprowadzić porównanie kilku publicznie dostępnych implementacji
algorytmu kodowania arytmetycznego, porównywane implementacje
ocenić pod względem:
uzyskiwanych współczynników kompresji:
dla rzeczywistych danych (np. korpusu Calgary) i prostego modelu danych (np.
adaptacyjnego probabilistycznego modelu 1 rzędu, własnego lub gotowego); należy
porównać wyniki pomiędzy różnymi implementacjami oraz porównać je z efektywnością
idealnego kodera arytmetycznego (mierzoną dla użytego modelu danych tak, jak
na ćwiczeniu 2)
(*) oraz dla danych wygenerowanych przez kilka samodzielnie zaimplementowanych modeli
źródeł o znanych entropiach
prędkości kodowania i dekodowania (w miarę możliwości prędkości
wyznaczyć dla kodowania, a nie kodowania i modelowania; można
to zrealizować mierząc czasy (a) modelowania i kodowania oraz (b) tylko
modelowania),
łatwości użycia i jakości dokumentacji
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
P8 — Porównanie algorytmów LZSS i LZW
w zastosowaniu do kompresji dysku (1 osoba)
Wymagania
Przeprowadzić porównanie algorytmów LZSS i LZW (lub odmiany
LZW-AP, tj. takiej, w której po zakodowaniu nowej frazy, do słownika
wstawiamy nie tylko poprzednią frazę z dopisanym pierwszym znakiem
nowej, ale też frazy złożone z poprzedniej frazy i wszystkich pref. nowej)
Algorytmy testujemy w zastosowaniu do kompresji dysku (tj. tak, aby
zachowana była możliwość częściowo swobodnego odczytu zakodowanych
danych), co realizujemy następująco:
skompresowane dane zapisujemy w „klastrach” o rozmiarze np. 4KB
każdy, przy czym każdy klaster może zostać odkodowany niezależnie
od pozostałych — dla nas oznacza to, iż każdorazowo gdy rozmiar
zakodowanych danych osiąga granicę klastra reinicjalizujemy słownik
i kolejne dane kodujemy niezależnie od poprzednich
aby dostęp był faktycznie swobodny, do zakodowanych danych
powinniśmy dołączyć mapę/indeks z informacją jakim offsetom
nieskompresowanego pliku odpowiadają początki kolejnych klastrów
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
P9 — Algorytm kompresji oparty na transformacie
Burrowsa–Wheelera (2 osoby)
Wymagania
Zaimplementować algorytm kompresji oparty na transformacie
Burrowsa–Wheelera. Algorytm powinien składać się z następujących
etapów:
transformata Burrowsa–Wheelera — dowolna implementacja algorytmu
sortowania, może być nawet qsort z języka C; trzeba tylko pamiętać aby
nie przechowywać całej macierzy a tylko indeksy pozycji startowych
transformata MTF — w zupełności wystarcza tu naiwna implementacja,
tj. utrzymujemy posortowaną tablicę i wyszukujemy symbol zawsze
od początku, po czym przesuwamy go w tej tablicy na początek
RangeCoder — sposób modelowania można wybrać dowolny: jeden
z omówionych na wykładzie bądź dowolny własny
Otrzymany algorytm przetestować dla korpusu Calgary i porównać
uzyskiwane współczynniki kompresji a także czas przynajmniej z bzip2
oraz gzip
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
P10 — Algorytm kompresji różnicowej (2 osoby)
Wymagania
Opracować i zaimplementować algorytm kompresji różnicowej oparty
na algorytmie LZSS
Problem przesuwania okna w starej wersji pliku można rozwiązać na kilka
sposobów:
założyć, że najdłuższe znalezione dopasowania dla bieżącej pozycji
w plikach starym i nowym wyznaczają „punkt synchronizacji”
wyszukiwać w całym starym pliku — wtedy trzeba odpowiednio
zmodyfikować zapis dopasowania, aby były obsługiwane duże wartości.
Pierwszy symbol trójek/par z algorytmu LZSS powinien mieć tu
3 wartości: brak dopasowania, dopasowanie w nowym pliku, dopasowanie
w starym pliku. Opisy dopasowania w starym i nowym pliku mogą być
kodowane w osobnych kontekstach dla poprawy współczynnika kompresji
Przetestować program na kolejnych wersjach kilku (może być 2) dużych
plików. Porównać współczynniki kompresji z osiąganymi przez algorytmy
uniwersalne
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2
CTW
Specjalizowane algorytmy kompresji
Tematy projektów
P11 — Kompresja plików XML (2 osoby)
Wymagania
Opracować i zaimplementować algorytm kompresji plików XML oparty
na preprocesingu. Należy wykorzystać omówione na wykładzie przykłady
redundancji w tych plikach
Przetestować program na kilku plikach XML i porównać go z innymi
znanymi algorytmami specjalizowanymi oraz z algorytmami uniwersalnymi
Sebastian Deorowicz
AKD — CTW, Algorytmy specjalizowane cz. 2

Podobne dokumenty