s[P, P + k] = s[i, i + k], gdzie k to długość dopasowania: Jeśli k = 0 (brak dopasowania), wypisz literę s[i], przesuń okno w lewo o jedną pozycję; i := i + 1; Jeśli k > 0 (dopasowanie istnieje), wypisz liczbę k, przesuń okno o tyle pozycji w lewo; i := i + k;
Przykładowy krok kompresji - przypadek znalezienie prefiksu Długość kontekstu N = 3.
750px
Koder wypisze na wyjście liczbę 2, długość ciągu ba.
Przykładowy krok kompresji - niepowodzenie Długość kontekstu N = 3.
750px
Po poprzednim wystąpieniu kontekstu nie występuje prefiks bufora kodowania - na wyjście wypisywana jest pierwsza litera z bufora kodowania, b.
Algorytm dekompresji Parametry są dokładnie takie same jak przy kompresji.
Algorytm: N := długość kontekstu i := 0 - bieżąca pozycja Wczytaj N pierwszych liter, pierwszy kontekst Dopóki są dane: Wczytaj daną Jeśli to litera, wypisz ją na wyjście i dopisz na koniec bufora Jeśli to liczba (k), pobierz pozycję ostatniego wystąpienia kontekstu P, skopiuj na wyjście podciąg bufor[P, P+k], i ten sam ciąg dopisz na koniec bufora, zaktualizuj tablicę L
Zobacz też PPM
Linki zewnętrzne Strona z publikacjami Charlesa Blooma nt LZP (ostatni dostęp 2.09.2008)
Kategoria:Algorytmy kompresji bezstratnej