Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
all.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.07 Mб
Скачать

55 .У чому полягають словникові методи стиснення з використанням «ковзного» вікна lz77, lzss? Чим визначається довжина кодів цих алгоритмів?

Основна ідея алгоритму LZ77 полягає в тому, що друге і подальші входження деякого підрядка символів у повідомленні замінюються покажчиками на його перше або попереднє входження. Алгоритм використовує частину повідомлення, що вже проглянуто, як словник. Щоб добитися стиснення, він намагається замінити наступну фразу повідомлення покажчиком на вміст словника.

Позначимо через N розмір «ковзного» вікна; F - розмір буфера. Тоді перші N-F символів - це вже закодовані символи, що містить словник, а останні F символів – вміст випереджуючого буфера.

При кодуванні вмісту буфера серед попередніх N-F символів, тобто у словнику, шукається найдовший підрядок, що збігається з початком буфера. Знайдений найбільший збіг кодується тріадою <i, j, a>, де i - зсув у словнику підрядка, що збігається із початком буфера; j - довжина підрядка, що збігається; а - перший символ, що йде за підрядком, що збігається. Далі алгоритм зсовує увесь вміст вікна на j+1 символів і водночас зчитує стільки ж символів вхідного потоку у буфер.

Об'єм пам'яті, що потребує алгоритм-кодер або декодер, визначається розміром вікна N. Довжина коду обчислюється так: довжина підрядка, що співпав із вмістом словника, не може бути більше розміру буфера F, а зсув цього підрядка у словнику не може бути більше розміру словника мінус 1. Отже, довжина двійкового коду зсуву i буде округлений до більшого цілого , а довжина коду довжини підрядка j буде округлений у більшу сторону , а символ а кодується 8 бітами за таблицею ASCII+.

При декодуванні виконується той же самий порядок роботи з вікном, що й при кодуванні, але на відміну від пошуку підрядків, що збігаються, вони, навпаки, копіюються декодером з вікна згідно з черговою тріадою коду.

Алгоритм LZSS є модифікацією алгоритму LZ77. Код алгоритму починається однобітовим префіксом, що відділяє код підрядка, що збігається, від незакодованого символу. Код складається з пари <i, j> - зсуву i у словнику підрядка, що збігається з початком буфера, і довжини j цього підрядка, як і для LZ77. Вікно зсовується рівно на довжину знайденого підрядка або на 1, якщо входження підрядка буфера у словнику не знайдено.

Довжина підрядка у алгоритмі LZSS завжди більше 0 і не може перевищувати розмір буфера F, тому довжина двійкового коду довжини підрядка, що збігається, j - це округлений до більшого цілого , а довжина коду зсуву i – округлений до більшого цілого .

56 Які переваги модифікованого алгоритму lzss у порівнянні з lz77?

Базовий алгоритм був поліпшений за трьома напрямками: (1) попереджуючий буфер зберігався в циклічній черги, (2) буфер пошуку (словник) зберігався у вигляді дерева двійкового пошуку і (3) мітки мали два поля, а не три. Двійкове дерево пошуку - це двійкове дерево, в якому ліве піддерево кожного вузла А містить вузли, менші ніж Л, а вузли правого піддерева все більше А.

57 У чому полягають словникові методи стиснення lz78, lzw? Чим визначається довжина кодів для цих алгоритмів? Які переваги модифікації lzw?

LZ77іLZ78- алгоритмистисненнябезвтрат, опубліковані встаттяхАбрахамаЛемпеля(англ. AbrahamLempel) і ЯкобаЗіва(англ. JacobZiv) в 1977 і 1978роках.Ціалгоритминайбільшвідомі варіантивсімействіLZ*,яке включаєвсебе такожLZW,LZSS, LZMAта іншіалгоритми. Обидва алгоритмивідносятьсядословниковимметодам,на відмінувід іншихметодів зменшеннянадлишковості, таких якRLEі арифметичнестиснення.LZ77єалгоритмомзі «ковзним вікном»,щоеквівалентнонеявномувикористаннісловниковогопідходу,впершезапропонованого вLZ78.

Принципковзаючоговікна Методкодуваннязгідно з принципомковзаючоговікнавраховуєвже ранішезустрічалосяінформацію, тобто інформацію, якавже відомадлякодувальникаідекодувальник(другеі наступнівходженнядеякою рядкисимволіввповідомленнізамінюютьсяпосиланняминаїї першевходження).

У стандартномуалгоритміLZ77збігикодуютьсяпарою:      довжиназбігу (matchlength)      зміщення (offset) або дистанція (distance)

недоліки      неможливість кодування підрядків, віддалених один від одного на відстані, більшій довжини словника      довжина підрядка, яку можна закодувати, обмежена розміром буфера      мала ефективність при кодуванні незначного обсягу даних

На відмінувідLZ77, що працює з вже отриманимиданими,LZ78орієнтуєтьсяна дані,які тількибудуть отримані(LZ78 не використовує «ковзне» вікно, він зберігаєсловникзвже переглянутихфраз).Алгоритмзчитуєсимволиповідомленнядотихпір,покинакопичуєтьсяпідрядоквходитьцілком воднуз фразсловника.Як тількицей рядокперестаневідповідати хочабодній фразісловника, алгоритм генеруєкод, що складається з індексурядкивсловнику,яка доостанньоговведеногосимволумістилавхіднірядок, ісимволу, що порушив збіг.Потімдо словникадодаєтьсявведенапідрядок.Якщословник вжезаповнений,тоз ньогопопередньовидаляютьменш всіхвикористовуванувпорівнянняхфразу.

Lzw

+ Невимагає обчисленняймовірностейзустрічальностісимволів абокодів. +Длядекомпресіїне требазберігатитаблицюрядків уфайлдлярозпакування.Алгоритмпобудованийтакимчином, що мивзмозі відновититаблицюрядків,користуючись тількипотокомкодів. +Данийтипкомпресіїне вноситьспотвореньу вихіднийграфічнийфайл, і підходить длястисненнярастровихданих будь-якоготипу. - Алгоритмне проводитьаналізвхіднихданихтому неоптимальний.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]