Семейство алгоритмов LZ77.

Maxime, 15.10.95

Алгоритмы семейства LZ77 довольно просты в реализации и обладают большим быстродействием по сравнению с LZ78. Поэтому именно они широко используются в популярных архиваторах. Эффект сжатия у этих алгоритмов достигается за счет замены уже встречавшихся ранее в тексте фраз на пару значений (ссылка назад, длина фрагмента). Все алгоритмы этого семейства отличаются друг от друга размером окна обзора предыдущего текста и максимальным и минимальным размером заменяемого фрагмента. От выбора этих параметров существенным образом зависит быстродействие конкретной реализации алгоритма. Приведем схему наиболее популярного варианта LZSS, обладающего самым большим быстродействием при соответствующем подборе параметров:

                                                                              
        while (lookAheadBuffer not empty)                                     
                get a pointer (position, lenght) to the longest match in      
                        the window for lookahead buffer;                      
                if (lenght > MINIMUM_MATCH_LENGHT)                            
                        output a pair (position, lenght);                     
                        shift the window lenght characters along;             
                else                                                          
                        output the first character in the lookahead buffer;   
                        shift the window 1 character along;                   
                endif                                                         
        endwile                                                               

Алгоритм распаковки еще более прост и быстр: если на вход поступает пара (position, length) - выдать на выход фрагмент текста из окна длиной lenght символов начиная с позиции position, если же на вход поступает один символ, то он копируется в выходной поток. После этого окно сдвигается на соответствующее число символов.


Изменена 19.03.2011 06:45 MSK Яндекс цитирования Рейтинг@Mail.ru