Algoytmy oowni słowniowego Koownie ze słowniiem ynmicznym (LZ77, LZ78, LZSS, LZW) Zstosowni
Koownie słowniowe - zs Chcemy zoowć znie ngielsie: A goo exmple of how ictiony se compession wos Słowni: Longmn Dictiony of Contempoy English Koownie: wsźni o słow to x/y, x n stony, y n słow n stonie. Wyni: 1/1 489/7 377/19 755/36 548/13 303/7 73/3 223/1 1270/25 Licz ston w słowniu: 1280 x oujemy pzez 11 itów Licz słów n stonie < 128 y oujemy pzez 7 itów Wsźni x/y 18 itów. Cłowit ilość itów: 9*18 = 162 Nomlne oownie ASCII 48 jtów, czyli 384 ity Stopień ompesji 2.37 : 1
Słowni ynmiczny Njwięsze znczenie metoy ze słowniiem ynmicznym Pzełomowe znczenie pce Jco Ziv i Ahm Lempel z ońc lt sieemziesiątych Słowni uowny ynmicznie n postwie pzetwozonej części nych ówny fgmentowi pzetwozonej części nych lu wytwozony ze wszystich fz pzetwozonych o tej poy NjwŜniejsze lgoytmy: LZ77, LZ78, LZW
Algoytm LZ77 Słowni fgment wcześniej zoownej części nych Pzegląmy ne pzez pzesuwjące się ono o ozmize W Ono zieli się n: ufo słowniowy zwie osttnio zoowny fgment ciągu nych ufo oowni zwie fgment ciągu, tóy włśnie mmy oowć Ptyczne implementcje ozmi ufo słowniowego: 8 16 B, ozmi ufo oowni ~ 100 jtów
Algoytm LZ77 c.. Zs ziłni: Umieszczmy wsźni pzeszuiwni n ońcu ufo słowniowego Pzesuwmy wsźni w lewo (licz miejsc o) Ŝ o npotni symolu ównego piewszemu symolowi w ufoze oowni Spwzmy, czy nstępne symole w ou ufoch nie są soie ówne. Licz ównych soie symoli ługość opsowni l Pzegląmy w ten sposó cły ufo słowniowy t, y zmsymlizowć opsownie Optymlne opsownie oujemy jo (o, l, c), gzie c o symolu w ufoze oowni występujący jo piewszy nieopsowny symol (7, 4, C()) 7 4
Algoytm LZ77 c.. Osttni element tóji n wype zeowego opsowni Po wysłniu ou (o, l, c) pzesuwmy ono o l + 1 w pwo i powtzmy poceuę Długość zpisu oującego l oowni o stłej ługości niech ozmi on = W, ozmi ufo słowniowego = S, ozmi lfetu = A wtey ługość zpisu = log 2 S + log 2 W + log 2 A Uwg: opsownie moŝe pzeoczyć ozmi ufo słowniowego
Algoytm LZ77 oownie Koujemy ciąg:.. Złmy, Ŝe pociąg jest juŝ zoowny. Pmety on: W=13, S=7 Kolejne oi oowni: (0,0,C()) (7,4,C()) (3,5,C())
Algoytm LZ77 eoownie Sttujemy z ooownego pociągu Ooowujemy (0,0,C()) czyli C() Ooowujemy (7,4,C()) Kopiownie 1 znu Pzesunięcie o 7 Kopiownie 2 znu Kopiownie 3 znu Kopiownie 4 znu Ooownie C()
Algoytm LZ77 eoownie c.. Ooownie (3,5,C()) 1 zn o 3 pozycje 2 zn 3 zn 4 zn 5 zn Ooownie C()
Algoytm LZ77 włsności Post meto ptcyjn, nie wymg wcześniejszej wiezy o chteze źół Koownie moŝe yć czsochłonne (uŝo poównń); eoownie poste i szyie NieuŜe wymgni otyczące pmięci Asymptotycznie wynii njlepsze jie moŝn uzysć pzy pełnej częstości pojwini się znów i oelcji mięzy nimi MoŜn zstosowć óŝne moyficje lgoytmu popwijące jego efetywność
Ominy LZ77 Algoytm LZSS uni onieczności wysyłni (o,l,c) Reunncj lo nie tze pointe (o jest zeowy), lo ou znu (moŝe yć pzezny w nstępnym wejściu) Dziłnie: Znjź opsownie (o,l) JeŜeli l MIN_LENGTH to wysyłmy (o, l ) i pzesuwmy ono o l JeŜeli l < MIN_LENGTH to wysyłmy o piewszego znu z ufo oowni i pzesuwmy ono o 1 Ay ozóŝnić o pzypi ich zpisy popzezmy opowienimi flgmi itowymi Inne moyficje popw efetywności oowni oownie tóje (lu wóje licz) oowniem o zmiennej ługości piety Pzip, Zip, gzip, ARJ, LHc Zstosownie efetywnych stutu nych o epezentcji zwtości ufo słowniowego (TRIE)
Algoytm LZ78 W lgoytmu LZ77 sończony czs, w jim wzozec jest pmiętny wzoce oległe o ziej niŝ szeoość ufo słowniowego nie czują swej oecności c e f g h i c e f g h i c e f g i LZ78 zstąpienie ufo słowniowego słowniiem twozonym explicite ynmicznie w tcie oowni i eoowni Słownii tel zwiejąc ines i opowijący mu wzozec. N początu oowni (eoowni) słowni pusty. Potem osttnio opsowny wzoze + nieops. zn Koownie p (i,c), gzie i ines, c o piewszego nieopsownego znu
LZ78 pzył Ciąg o zoowni: cccc e Słowni: N 0 1 2 3 4 5 6 7 8 9 10 11 12 Wzozec ^ c cc c e Koownie: (0,)(1,_)(0,)(3,)(0,_)(0,c) (6,c)(6,_)(0,)(9,)(10,_) (0,e) Do słowni wstwine są coz łuŝsze wzoce. JeŜeli jś fz się powtz, to wótce znjzie się w cłości w słowniu. Ooownie zo poste.
Włsności lgoytmu LZ78 Szysze oownie niŝ l LZ77 (zncznie mniej poównń stingów) Łtwe eoownie (choć wolniejsze niŝ l LZ77 onieczność ouowy słowni) Wzoce są stle owne o słowni (1 wzozec n jeen poces oowni) i nie zpominne nieezpieczeństwo pzepełnieni pmięci Jest puntem wyjści l lgoytmów pochonych njziej znny lgoytm LZW.
Algoytm LZW Zpoponowny w 1984 pzez Tey ego Welch Główn moyficj oe nie wysył ou piewszego nieopsownego znu ( tylo ines słowni) Ay to yło moŝliwe słowni n stcie zwie wszystie litey wyjściowego lfetu Poceu oowni: Póujemy opsowć włe łńcuch wejściowego Niech s msymlny połńcuch tóy m wzozec w słowniu (ines j) o ługości, c piewszy nieopsowny zn N wyjście: j (ines wzoc zgonego z s) Do słowni ojemy s+c Pzesuwmy znczni pozycji o
Algoytm LZW oownie Pzył: oujemy ciąg c c Ines 1 2 3 4 5 6 7 8 9 Wzozec c c c c w D, nie, o D4, wyjście 1 w D, c nie, c o D5, wyjście 2 c w D, c nie, c o D6, wyjście 3 w D, nie, o D7, wyjście 4 c w D, c nie, c o D8, wyjście 5 w D, nie, o D9, wyjście 7 w D, wyjście 1 Wyni: 1 2 3 4 5 7 1
Fomt GIF Zstosownie LZW Postw = ilość itów n pisel. Zczynmy o słowni o ozmize 2 +1. Po wypełnieniu zwięszmy o czynni 2. Msymlny ozmi 4096. Po jego osiągnięciu słowni jest zmoŝony.
Kompesj ozów - zestwienie Huffmn Huffmn Dyn. Huff. GIF Oz óŝnice óŝnice 1_ch 57 504 32 968 32 261 51 085 2_ch 61 430 38 541 37 896 60 649 Ziemi 40 543 33 880 39 501 34 276 Misto 58 374 52 643 52 321 61 580