Lempel-Ziv 77, skracane zwykle do LZ77 (algorytm LZ77), to metoda strumieniowej bezstratnej kompresji słownikowej. Zostala opracowana w 1977 roku przez Abrahama Lempela i Jacoba Ziv i opisana w arykule "A universal algorithm for sequentaial data compression" opublikowanym w IEEE Transactions on Information Theory (str. 8-19).
Obrazowo patrząc, wykorzystuje ona fakt, iż poszczególne słowa, albo przynajmniej ich części powtarzają się w danym tekście. Na LZ77 opiera się m.in. algorytm deflate. Poza tym LZ77 jest wolny od wszelkich patentów co także w dużej mierze przyczyniło się do jego popularności i szerokiego rozpowszechnienia.
Algorytm: Metoda LZ77 korzysta z bufora, który logicznie podzielony jest na dwie części:
Wadą metody jest ciągle zmieniający się słownik - jeśli kodowanych danych jest więcej niż może pomieścić bufor (a tak na ogół jest), to przy przesuwaniu bufora (punkt 3. algorytmu) dane ze słownika są bezpowrotnie tracone, więc nie będą mogły zostać ponownie użyte. (Metoda LZ78 i pochodne powiększają słownik w miarę napływania danych).
Zatem stopień kompresji LZ77 w dużej mierze zależy od długości słownika, prędkość kompresji natomiast jest uzależniona głównie od efektywności procedury wyszukującej najdłuższy wspólny podciąg.
Współczynnik kompresji danych tekstowych dla algorytmu LZ77 mieści się w granicach 40-50%
Source: Wiki
|
| s u n f l o w e r |
|
![]() |
| a r c h i v e r |
|
|Contact|
rayjk@wp.pl
|