- •Національний університет біоресурсів і природокористування Кафедра автоматизації сільськогосподарського виробництва
- •Методичні вказівки до виконання
- •Лабораторна робота № 1 Системи числення і цифрова техніка
- •Теоретичні відомості
- •Основою позиційної системи числення є число десять. Загальновживана форма запису числа є насправді не що інше, як скорочена форма запису розкладу за степенями основи системи числення, наприклад:
- •Алгоритми переведення чисел з однієї позиційної системи числення в іншу
- •Представлення від'ємних і дробових чисел у пам'яті комп'ютера
- •Контрольні запитання
- •Лабораторна робота № 2 Представлення даних у пам'яті електронно-обчислювальної машини (еом)
- •Теоретичні відомості
- •1. Системи числення
- •2. Кодіровка ascii
- •3. Кодіровка ascii
- •4. Альтернативна кодова таблиця
- •Завдання на лабораторну роботу
- •Контрольні запитання
- •Лабораторна робота № 3 Ентропія та її властивості. Безумовна, умовна ентропія та ентропія двох джерел
- •Теоретичні відомості
- •Основні властивості ентропії
- •Основні властивості безумовної ентропії дискретних повідомлень:
- •Умовна ентропія
- •Властивості умовної ентропії
- •Завдання на лабораторну роботу
- •Контрольні запитання
- •Лабораторна робота № 4
- •Кодування та стиснення інформації методом хаффмена та Шенона-Фано
- •Мета роботи: Вивчення принципів кодування потоків символів з різною частотою появи символів у потоці, використовуючи метод кодування Хаффмена та Шенона-Фано.
- •Теоретичні відомості
- •Порядок виконання роботи
- •Контрольні запитання
- •Лабораторна робота № 5
- •Дослідження завадозахищених кодів
- •Теоретичні відомості
- •Порядок виконання роботи
- •Контрольні запитання
- •Порядок виконання роботи
- •Дані для кодування
- •Елементи схеми пофарбовані в зелені кольори дозволяють одержати готові шаблони схем зв'язку, з яких можна створити необхідні схеми.
- •Подвійне нажимання миші в полі елемента викликає набір інструментів для цього елемента з необхідним набором параметрів.
- •Підключення до лінії з'єднання двох елементів здійснюється з використанням правої кнопки миші.
- •Порядок виконання роботи
- •Контрольні запитання
- •Лабораторна робота № 8 Способи стиснення даних методом архівації
- •Теоретичні відомості
- •Порядок виконання роботи
- •Контрольні запитання
- •Список літератури
Контрольні запитання
Характеристики двійкового симетричного каналу зв'язку.
Принцип оцінки ймовірності змінення кодової послідовності в каналах з незалежними помилками.
Порядок задавання параметрів джерела повідомлень моделі.
Порядок задавання параметрів кодера (декодера) моделі.
Порядок задавання параметрів каналу зв'язку.
Порядок виявлення помилок у системі зв'язку, що моделюється.
Порядок настроювання віртуальних осцилографів.
Принцип розрахунку й установки модельного часу.
Порядок завдання кодів Хеммінга.
Принцип синхронізації елементів імітаційної моделі.
Лабораторна робота № 8 Способи стиснення даних методом архівації
Мета роботи: вивчити призначення і можливості програм-архіваторів і стиснення файлів за їх допомогою.
Теоретичні відомості
При експлуатації персональних комп'ютерів з найрізноманітніших причин можливі псування або втрата інформації на магнітних дисках. Це може статися через фізичне псування магнітного диска, невірне коригування або випадкового знищення файлів, руйнування інформації комп'ютерним вірусом і т.д. Для того щоб зменшити втрати в таких ситуаціях, варто мати архівні копії використовуваних файлів і систематично оновлювати копії змінюваних файлів. Для зберігання архівів даних можна використовувати зовнішні запам'ятовуючі пристрої великої ємності, які дають можливість легко скопіювати жорсткий диск.
Однак при цьому резервні копії займають стільки ж місця, скільки займають вихідні файли, і для копіювання потрібних файлів може знадобитися багато дисків або дискет. Більш зручно для створення архівних копій використовувати спеціально розроблені програми архівації файлів, які стискають інформацію. При архівації ступінь стиснення файлів сильно залежить від їх формату. Деякі формати даних (наприклад, графічні) мають упаковані різновиди, при цьому стиск проводиться створючою вихідний файл програмою, проте найкращі архіватори здатні подужати і їх. Зовсім інша картина спостерігається при архівації текстових файлів. Текстові файли зазвичай стискаються на 50-70%, а програми на 20-30%.
Стиснення інформації — це процес перетворення інформації, що зберігається у файлі, до вигляду, при якому зменшується надмірність у її представленні і відповідно необхідно зменшити обсяг пам’яті для збереження.
Стиснення інформації у файлах здійснюється за рахунок усунення надмірності різними способами, наприклад, за рахунок спрощення кодів або представлення повторюваних символів або повторюваної послідовності символів у вигляді коефіцієнта повторення і відповідних символів. Застосовуються різні алгоритми подібного стиснення інформації.
Стискуватися можуть як один, так і кілька файлів, що у стиснутому вигляді містяться в так званому архівному файлі або архіві.
Архівний файл — це спеціальним чином організований файл, що містить у собі один або кілька файлів у стиснутому або нестиснутому вигляді і службову інформацію про імена файлів, дату і час їхнього створення або модифікацію, розмір і т.п.
Метою упакування файлів звичайно є забезпечення більш компактного розміщення інформації на диску, скорочення часу і відповідно вартості передачі інформації з каналів зв’язку в комп’ютерних мережах. Крім того, упакування в один архівний файл групи файлів істотно спрощує їхнє переміщення з одного комп’ютера на іншій, скорочує час копіювання файлів на диски, дозволяє захистити інформацію від несанкціонованого доступу, сприяє захистові від зараження комп’ютерними вірусами тощо.
Ступінь стиснення файлів характеризується коефіцієнтом стискання Кс, обумовленим як відношення обсягу стиснутого файла Vc до обсягу вихідного файла Vо, виражене у відсотках:
Kc = (Vc/ V0)*100%. (1)
Ступінь стиснення залежить від використовуваної програми, методу стиснення і типу вихідного файла. Найбільш стискаються файли графічних образів, текстові файли і файли даних, для яких ступінь стиснення може досягати 5-40%, менше — файли програм, що виконуються із завантажувальних модулів — 60-90%. Майже не стискаються архівні файли. Програми для архівації відрізняються використовуваними методами стиснення, що впливає на ступінь стиснення.
Архівація (упакування) — переміщення (завантаження) вихідних файлів у архівний файл у стиснутому або нестиснутому вигляді.
Програми-пакувальники (архіватори) дозволяють записувати інформацію на дисках більш щільно, а також поєднувати копії декількох файлів в один архівний файл.
Принцип роботи архіваторів
Принцип роботи архіваторів заснований на пошуку у файлі «надлишкової» інформації і наступному її кодуванні з метою одержання мінімального обсягу. Найвідомішим методом архівації файлів є стиснення послідовностей однакових символів.
Наприклад, усередині файла знаходяться послідовності байтів, що часто повторюються. Замість того, щоб зберігати кожен байт, фіксується кількість повторюваних символів та їхня позиція. Файл, що потрібно архівувати займає 15 байт і складається з таких символів: B B B B B L L L L L A A A A A.
У шістнадцятковій системі — 42 42 42 42 42 4C 4C 4C 4C 4C 41 41 41 41 41.
Архіватор може представити цей файл у такому вигляді (шістнадцятковій): 01 05 42 06 05 4C 0A 05 41.
Це означає: з першої позиції п’ять разів повторюється символ “B”, з позиції 6 п’ять разів повторюється символ “L” і з позиції 11 п’ять разів повторюється символ “A”. Для збереження файла в такій формі буде потрібно всього 9 байт, що на 6 байт менше вихідного.
Описаний метод є простим і дуже ефективним способом стиску файлів. Однак він не забезпечує великої економії обсягу, якщо оброблюваний текст містить невелику кількість послідовностей повторюваних символів. Більш витончений метод стиску даних — це оптимальний префіксний код і, зокрема, кодування символами перемінної довжини (алгоритм Хаффмена).
Код перемінної довжини дозволяє записувати символи і групи символів, які найбільш часто зустрічаються лише з декількома бітами, у той час як символи і фрази, що рідко зустрічаються, будуть записані більш довгими бітовими рядками. Наприклад, у будь-якому англійському тексті буква E зустрічається частіше, ніж Z, а X і Q належать до рідко використовуваних. Таким чином, використовуючи спеціальну таблицю відповідності, можна закодувати кожну букву Е меншим числом біт і використовувати довший код для букв, які рідше вживаються.
Широко використовують алгоритм Лемпеля-Зіва. Ці архіватори класифікуються як адаптивні словникові кодувальники, у яких текстові рядки замінюються покажчиками на ідентичні їм рядки, що зустрічалися раніше в тексті.
Наприклад, якщо у вихідному потоці вже зустрічалася подібна послідовність байт, причому запис про її довжину й зсув від поточної позиції коротший за цю послідовність, то у вихідний файл записується посилання (зсув, довжина), а не сама послідовність.
Розповсюджений метод стиску RLE (англ. Run Length Encoding) — так зване «кодування повторів», при якому послідовність однакових символів замінюється парою - «код символу + кількість його повторів у ланцюжку». У більшості випадків ланцюжки однакових символів зустрічаються нечасто. Однак, наприклад, при кодуванні чорно-білих растрових зображень, кожен рядок яких складається з послідовних чорних або білих крапок, такий підхід виявляється досить ефективним (він широко застосовується при факсимільної передачі документів).
Розглянемо, наприклад, послідовність “ААААААА”. За допомогою алгоритму RLE вона буде закодована як “(А,7)”, у той же час її можна досить добре стиснути й за допомогою алгоритму LZ77 : “А(-1,6)”.
Дискретна форма подання інформації є найбільш загальною і універсальною. У вигляді сукупності символів, що належать до обмеженого алфавіту, можна представити як текст або масиви чисел, так і оцифровані звук і зображення. З урахуванням цього очевидно, що повинні існувати універсальні методи стиснення даних (цифрової інформації), які можуть бути застосовні до всіх її різновидів. В силу своєї універсальності ці методи повинні виключати втрату інформації (така втрата може бути допустима при передачі, наприклад, дрібної деталі зображення, але неприйнятна, коли йдеться, скажімо, про код програми).
З іншого боку, в ряді програм загальні методи напевно не будуть найбільш ефективними. Наприклад, в силу особливостей зорового і слухового сприйняття деякий «огрубіння» зображення або звуку може виявитися малопомітним, при цьому виграш в обсязі переданих даних виявиться значним. У цих випадках доречно використовувати спеціальні методи стиснення з втратами.
При архівації, як і при компресуванні, ступінь стиснення файлів залежить від формату файла. Графічні файли типу TIFF і GIF уже заздалегідь скомпресовані (хоча існує різновид формату TIFF і без компресії) і тут навіть найкращий архіватор мало що знайде для упакування. Зовсім інша картина спостерігається при архівації текстових файлів, файлів PostScript, файлів *.ВМР тощо.
Програм-архіваторів існує безліч. Наведемо деякі розширення імен архівних файлів: ARJ, ZIP, RAR, CAB, LHA, ICE, PAK, HA, ZOO, AIN, YAC, UC2, HAP, PAH, JAR, BOA, ACB, 777, X1, UFA, IMP, BIX, ARI, SQZ, AKT.
Існують архіватори, написані “для себе”, для використання усередині фірми і т.д.
До основних функцій архиваторів відносяться:
архівація зазначених файлів або всього поточного каталогу;
витяг окремих або всіх файлів з архіву;
перегляд вмісту архівного файлу;
перевірка цілісності архівів;
відновлення пошкоджених архівів;
ведення багатотомних архівів;
висновок файлів з архіву на екран або на друк;
парольний захист архіву.
WINZIP
WinZip — програма-архіватор, яку можна знайти практично на кожному персональному комп’ютері.
Стиск в архів документів Word (doc або rtf) дає дуже значну економію дискового простору (до 95%). Трохи більш скромний результат досягається при стисканні html-файлів (до 80%). Складніше з графічними файлами, bmp можна стиснути до 99%, а от, скажімо, при архівуванні tif, jpg, gif економія становить, відповідно, до 35, 25, 10%. Однак при відправленні файлів електронною поштою необхідно враховувати не лише їхній фізичний розмір, але їхнє число, адже на обробку запиту про відправлення кожного “причепленого” до листа файла теж потрібен час.
WINRAR
На світовому ринку програмних засобів відома як програма-архіватор з одним із кращих алгоритмів стискання даних. Підтримує багатотомне архівування, відновлення «зіпсованих» архівів, блокування їхньої модифікації. На відміну від WinZip, припустимий розмір файла для архівування необмежений (для WinZip – обмеження 4 Gb). У WinRar є присутня можливість скористатися спеціальним алгоритмом мультимедіа-стиснення, що оптимізує компресію оцифрованого звуку і графічних файлів.
WinRar надає можливість архівувати у форматі zip (правда, при цьому істотно обмежує функціональні можливості архівування). WinRar домагається істотно кращих результатів стискання в порівнянні з WinZip. Вам пропонується вибір: або універсальність формату або ефективність компресії. WinRar підтримує так зване «багатотомне» архівування, що значно перевершує за зручністю метод розбивки «на дискети», використовуваний у WinZip.
Проте, на користь останнього свідчить не лише широка розповсюдженність, але і той факт, що в середньому він архівує трохи швидше, ніж WinRar.
Головне в оцінці архіваторів — якість виконання своїх основних задач. А тут ключовими параметрами є якість стискання і швидкість роботи.
ARJ не так давно був одним з найбільш популярних форматів архівації даних. Зараз ARJ так само популярний, як і раніше.
CAB — це стандартний формат упакованих файлів фірми Microsoft. Відповідна програма упакування є одним із самих сучасних і оптимізованих продуктів. Алгоритми не публікуються і не описуються.
JAR — Java-архіватор. Стандартний формат, прийнятий при роботі з засобами Java. Заснований на форматі ZIP.
Методи стиснення
Сучасні архіватори, як правило, використовують кілька методів одночасно. Можна виділити деякі основні.
Кодування довжин серій (RLE — скорочення від run – length encoding – кодування довжин серій).
Дуже простий метод. Послідовна серія однакових елементів даних замінюється на два символи: елемент і число його повторень. Широко використовується як додатковий, так і проміжний метод. Як самостійний метод застосовується, наприклад, у графічному форматі BMP.
Словниковий метод (LZ — скорочення від Lempel Ziv – імена авторів).
Найбільш розповсюджений метод. Використовується словник, що складається з послідовностей даних або слів. При стисненні ці слова замінюються на їхні коди зі словника. У найбільш розповсюдженому варіанті реалізації як словник виступає сам вихідний блок даних.
Основним параметром словникового методу є розмір словника. Чим більше словник, тим більше ефективність. Однак для неоднорідних даних надмірно великий розмір може бути шкідливий, тому що при різкій зміні типу даних словник буде заповнений неактуальними словами. Для ефективної роботи цього методу при стисненні потрібна додаткова пам’ять приблизно на порядок більше, ніж потрібно для вихідних даних словника. Істотною перевагою словникового методу є проста і швидка процедура розпакування. Додаткова пам’ять при цьому непотрібна. Така особливість дуже важлива, якщо необхідний оперативний доступ до даних.
Ентропійний метод (Huffman — кодування Хаффмена, Arithmetic coding – арифметичне кодування).
У цьому методі елементи даних, що зустрічаються частіше, кодуються при стисненні більш коротким кодом, а інші — більш довгим кодом. За рахунок того, що коротких кодів значно більше, загальний розмір виходить менше вихідного.
Широко використовується як додатковий метод. Як самостійний метод застосовується, наприклад, у графічному форматі JPG.
Метод контекстного моделювання (CM — скорочення від context modeling – контекстне моделювання).
У цьому методі будується модель вихідних даних. При стисненні чергового елемента даних ця модель видає своє пророкування (передбачення) або ймовірність. Відповідно до цієї ймовірності, елемент даних кодується ентропійним методом. Чим точніше модель буде відповідати вихідним даним, тим точніше вона буде видавати пророкування і тим коротше будуть кодуватися елементи даних.
Для побудови ефективної моделі потрібно багато пам’яті. При розпакуванні приходиться будувати точно таку ж модель. Тому швидкість і вимоги до обсягу оперативної пам’яті для упакування і розпакування майже однакові. Нині методи контекстного моделювання дозволяють одержати найкращий ступінь стиснення, але вони відрізняються надзвичайно низькою швидкістю.
PPM (PPM — Prediction by Partial Matching – пророкування за частковим збігом).
Це особливий підвид контекстного моделювання. Пророкування виконується на підставі визначеної кількості попередніх елементів даних. Основним параметром є порядок моделі, що задає цю кількість елементів. Чим більше порядок моделі, тим вище ступінь стиснення, але потрібно більше оперативної пам’яті для збереження цієї моделі. Якщо оперативної пам’яті недостатньо, то така модель з великим порядком показує низькі результати. Метод PPM особливо ефективний для стиснення текстових даних.
Попередні перетворення або фільтрація.
Ці методи служать не для стиснення, а для представлення інформації в зручному для подальшого стиску вигляді. Наприклад, для нестиснених мультимедіа даних характерні плавні зміни рівня сигналу. Тому для них застосовують дельта-перетворення, коли замість абсолютного значення береться відносне. Існують фільтри для тексту, баз даних тощо.
Метод сортування блоку даних (BWT — скорочення від Burrows Wheeler Transform — за іменами авторів).
Це особливий вид або група перетворень, в основі яких лежить сортування. Такому перетворенню можна піддавати майже будь-які дані. Сортування виконується над блоками, тому дані попередньо розбиваються на частини. Основним параметром є розмір блоку, що піддається сортуванню. Для розпакування даних необхідно виконати майже ті ж дії, що і при упакуванні. Тому швидкість і вимоги до оперативної пам’яті майже однакові. Архіватори, що використовують цей метод, звичайно показують високу швидкість і ступінь стиснення для текстових даних.
Безперервні блоки або безперервний режим (Solid mode — безперервний режим).
У багатьох методах стиснення початкова ділянка даних або файла кодується погано. Наприклад, у словниковому методі словник порожній. У методі контекстного моделювання модель непобудована. Коли кількість файлів велика, а їхній розмір маленький, загальний ступінь стиснення значно погіршується за рахунок цих початкових ділянок. Щоб цього не відбувалося при переході на наступний файл, використовується інформація, отримана з попередніх файлів. Аналогічного ефекту можна досягти простим представленням вихідних файлів у вигляді одного безперервного файла.
Цей метод широко використовується, але має істотний недолік. Для розпакування довільного файла необхідно розпакувати і файли, що виявилися на початку архіву. Це необхідно для правильного заповнення словника або побудови моделі. Існує і проміжний варіант, коли використовуються безперервні блоки фіксованого розміру. Втрати стиснення виходять мінімальними, але для витягу одного файла, що знаходиться наприкінці великого архіву, необхідно розпакувати тільки один безперервний блок, а не весь архів.
Сегментування
В усіх методах стиснення при зміні типу даних власне сам перехід кодується дуже погано. Словник стає не актуальним, модель набудована на інші дані. У цих випадках застосовується сегментування. Це попередня розбивка на однорідні частини. Потім ці частини кодуються окремо або групами.
Особливості даних
Ступінь стиснення в основному залежить від вихідних даних. Добре стискаються майже всі попередньо нестиснуті дані, наприклад, файли (EXE), тексти (TXT, DOC), бази даних (DBF), прості нестиснуті зображення (BMP). Обмежено стискаються нестиснений звук (WAV), складні нестиснені зображення (BMP ). Не стискуються майже всі вже стиснуті дані, наприклад, архіви (ZIP, CAB ), стиснуті документи (PDF), стиснута графіка і відео (JPG, GIF, AVI, MPG), стиснутий звук (MP3).
Програми-архіватори дозволяють створювати також архіви, які при розархівуванні не потребують програми розпакування, тому що самі архівні файли можуть її містити. Такі архівні файли називаються саморозпаковуючими або SFX-архів (SelF-eXtracting). Архіви такого типу в MS DOS звичайно створюються у формі Ехе-файла.
Розархівація (розпакування) — процес відновлення файлів з архіву точно в такому ж вигляді, який вони мали до завантаження в архів. При розпакуванні файли витягаються з архіву і розміщуються на диск або в оперативну пам’ять.
Програми, що здійснюють упакування і розпакування файлів, називаються програмами-архіваторами.
Великі за обсягом архівні файли можуть бути розміщені на декількох дисках (томах). Такі архіви називаються багатотомними. Том — це складова частина багатотомного архіву. Створюючи архів з декількох частин, можна записати його частини на кілька частин.
