Название расшифровывается как Lempel-Ziv Predictive.
И это самый просто LZ-like, который к тому же еще и быстрый и эффективный на определенных типах данных.
Оригинальный LZ77 кодирует символы в последовательность ссылок на подстроки символов уже встреченных ранее (и не вышедших за окно) и литералы.
Это приводит к тому, что при кодировании приходится искать в окне самую длинную подстроку.
LZP не ищет подстроки. Вместо этого окно, обычно совсем небольшое, по сравнению с LZ77, например 4 символа, хэшируется. Этот хэш используется как ключ в кэш символов.
Если следующий символ равен символу в кэше - кодируем один бит 0. Если нет - кодируем бит 1 и литерал. И переписывает символ в кэше на новый.
Несмотря на простоту кодирования, LZP отлично себя показывает на данных, где за последовательностью символов с большой вероятностью идет такой же, как и в прошлый раз за такой последовательностью.
Но предел сжатия -
1 / symbol_bits если всегда будет хит в кэш. Тогда как LZ77 может сжимать в тысячи и миллионы раз, если в данных совсем нет энтропии (все символы одинаковые).