
- •Лабораторна робота №1
- •Теоретичні відомості
- •Властивості ентропії
- •Хід роботи
- •Лабораторна робота №2
- •Теоретичні відомості
- •Хід роботи
- •Лабораторна робота №3
- •Теоретичні відомості
- •Оцінка вивчення алгоритму Лемпела-Зіва-Велча
- •Хід роботи
- •Лабораторна робота №4
- •Теоретичні відомості
- •Хід роботи
- •Лабораторна робота №5
- •Теоретичні відомості
- •Сторінка поліном
- •Сторінка кодер
- •Сторінка декодер
- •Сторінка кодування
- •Сторінка декодування
- •Сторінка рейтинг
- •Опції можна змінювати після того як буде введено пароль
- •“Зафіксувати”
- •Хід роботи
- •Лабораторна робота №6
- •Теоретичні відомості
- •Хід роботи
- •Лабораторна робота №7
- •Теоретичні відомості
- •Хід роботи
- •Лабораторна робота №8
- •Хід роботи.
Лабораторна робота №3
Тема роботи: Стиснення інформації на основі алгоритму Лемпела- Зіва-Велча
Мета роботи: ознайомитися з роботою алгоритму Лемпела-Зіва-Велча. Навчитися стискати інформацію на основі цього алгоритму.
Теоретичні відомості
Історія алгоритму LZW розпочинається з публікації в травні 1977р. Дж.Зівом (J.Ziv) і А.Лемпелем (A.Lempel). В подальшому цей алгоритм був доопрацьований Террі А. Велчем (Terry A.Welch) і в остаточному варіанті був опублікований в статті "A Technique for High-Performance Data Compression", у червні 1984р. В статті описувалися деталі алгоритму і деякі загальні проблеми з якими можна зіткнутися при його реалізації. Пізніше цей алгоритм отримав назву LZW (Lempel-Ziv-Welch).
Стиснення за допомогою алгоритму LZW є надзвичайно ефективним для текстових файлів, хоча коефіцієнт стиснення більше ніж 50% є можливим і для файлів інших форматів. На сьогодні алгоритм LZW є найкращим алгоритмом багатоцільового стиснення даних. Високошвидкісні модеми для стиснення даних ( V.42 bis) використовують цей алгоритм, так само як і всім відома програма-утиліта ZIP.
До основних переваг алгоритму можна віднести:
Відсутність необхідності попереднього аналізу даних;
Динамічну адаптацію до специфіки даних, що стискаються;
Не потрібно розміщати кодову таблицю у стиснений файл, тобто стиснена інформація містить всі необхідні дані для декомпресії.
Алгоритм кодування LZW
Суть алгоритму кодування LZW (наведеного нижче) полягає в тому, що створюється таблиця, в якій кожному символу або їх групі присвоюється число. Перед початком кодування в ініціюючу частину таблиці записуються всі символи вхідного тексту, які зустрічаються хоча б один раз. Під час кодування здійснюється по символьне читання вхідного тексту. Якщо зчитаний символ є в таблиці, то читається наступний. Якщо комбінації першого і другого символів ще немає в таблиці, то вона записується туди під останнім номером, а замість першого символу виводиться його числове значення з таблиці. Якщо ж комбінація двох символів є в таблиці, то читається наступний символ, і в таблиці вже перевіряється присутність комбінації із трьох символів. Процес триває доти, доки не будуть закодовані усі символи вхідного тексту.
Кодування тексту aaabbabab (див. рис.1) |
Алгоритм кодування ЛЗВ |
|
STRING = get first input character while there are more input characters CHARACTER = next input character if STRING + CHARACTER is in STRING TABLE STRING=STRING + CHARACTER else output the code for STRING add STRING + CHARACTER to STRING TABLE STRING = CHARACTER end if end while output the code for STRING
|
Алгоритм декодування LZW
Текст для декодування: 13221621 (див. рис.2)
|
Алгоритм декодування ЛЗВ |
|
OLDCODE = input first code CHARACTER = translation of OLDCODE output translation of OLDCODE while there is more input data NEWCODE = get next input code if NEWCODE is not in STRING TABLE then STRING = translation of OLDCODE STRING = STRING + CHARACTER else STRING = translation of NEWCODE end if output STRING CHARACTER = first character of STRING add OLDCODE + CHARACTER to STRING TABLE OLDCODE = NEWCODE end of while
|
Режими роботи програми
Для вивчення роботи і засвоєння алгоритму LZW було створено навчальну програму. Програма передбачає три режими роботи.
Перший режим – Демонстрація роботи алгоритму LZW – надає користувачеві можливість вивчити принцип роботи даного алгоритму шляхом візуальної демонстрації по крокового виконання кодування чи декодування заданого користувачем текстового рядка.
Другий режим – Кодування/декодування файлів – надає користувачеві можливість оцінити ефективність алгоритму LZW при здійсненні стиснення з його допомогою файлів різного формату.
Третій режим – Оцінка вивчення алгоритму LZW – дозволяє користувачеві оцінити свій рівень знання і розуміння алгоритму кодування/декодування LZW.
Демонстрація роботи алгоритму LZW
Для запуску цього режиму роботи у головному вікні програми необхідно виділити відповідний пункт і натиснути кнопку “ЗАПУСК”. Далі відкривається вікно, в якому і здійснюється режим демонстрації. Для початку роботи необхідно задати текст для кодування у відповідному вікні вводу і натиснути кнопку “ВИКОНАТИ”. Якщо вікно вводу буде порожнім, то запуск кодування є неможливим – програма видає відповідне повідомлення. Якщо задано текст і програма знаходиться в режимі кодування, активізуються кнопки “ПОКРОКОВЕ ВИКОНАННЯ” та “ПРИПИНИТИ”. При кожному натисненні кнопки “ПОКРОКОВЕ ВИКОНАННЯ” виконується один крок алгоритму кодування, що підтверджується виділенням відповідного рядка у вікні алгоритму та заповнненням таблиці. Закодувавши введений текст, користувач має можливість спостерігати процес по крокового декодування, вибравши закладку “ДЕКОДУВАННЯ” і натиснути кнопку “ВИКОНАТИ”. Режим декодування є можливим за умови, що попередньо вже було закодовано якийсь текст.
Процес кодування/декодування можна завчасно перервати натиснувши кнопку “ПРИПИНИТИ”.