LZP (P od predykacja) - metoda kompresji opracowana w 1996 roku przez Charlesa Blooma, będąca modyfikacją algorytmu LZ77, wykorzystująca kontekstowość danych - pewne ciągi występują z większym prawdopodobieństwem w sąsiedztwie innych. Mówiąc obrazowo, jeśli wcześniej po ciągu abc wystąpił ciąg def, i znów pojawił się ciąg abc, to jest szansa, że następnym ciągiem będzie def.
Metoda LZP nie została opatentowana.
Różnica w stosunku do LZ77 przedstawia się następująco:
Kontekst to ciąg określonej długości poprzedzający dane mające zostać zakodowane; Bloom proponuje stosować konteksty kilkuznakowe, w przykładowych implementacjach wykorzystywał 3 do 5 znaków. Do zapamiętywania ostatniego wystąpienia kontekstu używana jest tablica mieszająca, w której problem kolizji nie jest rozwiązywany - jest to podyktowane względami wydajnościowymi.
Tak samo jak w LZ77 jest bufor (albo okno), podzielone na słownik, tj. już zakodowane dane, oraz bufor kodowania, tj. dane mające właśnie zostać zakodowane. Kontekst poprzedza bufor kodowania, jest sufiksem słownika.
Koder wypisuje dwa rodzaje kodów:
Algorytm przebiega następująco:
Długość kontekstu N = 3.
Koder wypisze na wyjście liczbę 2, długość ciągu ba.
Długość kontekstu N = 3.
Po poprzednim wystąpieniu kontekstu nie występuje prefiks bufora kodowania - na wyjście wypisywana jest pierwsza litera z bufora kodowania, b.
Parametry są dokładnie takie same jak przy kompresji.
Algorytm: