0; 3; 127; 2; 0; 1; 255; 4 (всього 8 байтів). У даному прикладі коефіцієнт стиснення рівний 8/10 (80 %).
Програмні реалізації алгоритмів RLE відрізняються простотою, високою швидкістю роботи, але в середньому забезпечують недостатнє стиснення. Найкращими об'єктами для даного алгоритму є графічні файли, в яких великі однокольорові ділянки зображення кодуються довгими послідовностями однакових байтів. Цей метод також може давати помітний виграш на деяких типах файлів баз даних, що мають таблиці з фіксованою довжиною полів. Для текстових даних методи RLE, як правило, неефективні.
В основу алгоритмів кодування за ключовим словами (Keyword Encoding) покладено кодування лексичних одиниць початкового документа групами байтів фіксованої довжини. Прикладом лексичної одиниці може служити слово (послідовність символів, праворуч і зліва обмежена пропусками або символами кінця абзацу). Результат кодування зводиться в таблицю, яка прикладається до результуючого коду і являє собою словник. Звичайно для англомовних текстів прийнято використати двобайтне кодування слів. Пари байтів, що утворюються при цьому, називають токенами.
Ефективність даного методу істотно залежить від довжини документа, оскільки через необхідність прикладати до архіву словник довжина коротких документів не тільки не меншає, але навіть зростає. Даний алгоритм найбільш ефективний для англомовних текстових документів і файлів баз даних. Для російськомовних документів, відмінних збільшеною довжиною слів і великою кількістю префіксів, суфіксів і закінчень, не завжди вдається обмежитися двобайтними токенами, і ефективність методу помітно знижується.
В основі цього алгоритму лежить кодування не байтами, а бітовими групами.
Перед початком кодування проводиться частотний аналіз коду документа і виявляється частота повтору кожного з символів, що зустрічаються.
Чим частіше зустрічається той або інший символ, тією меншою кількістю бітів він кодується (відповідно, чим рідше зустрічається символ, тим довше його кодова бітова послідовність).
Ієрархічна структура, що утворюється внаслідок кодування, прикладається до стиснутого документа як таблиця відповідності.
Приклад кодування символів російського алфавіту поданий на рис. 1.1.
Рис. 1.. Приклад побуквеного кодування російського алфавіту по алгоритму Хафмана
Як видно зі схеми, представленої на рис. 1.1, використовуючи 16 біт, можна закодувати до 256 різних символів. Однак ніщо не заважає використати і послідовності довжиною до 20 біт – тоді можна закодувати до 1024 лексичних одиниць (це можуть бути не символи, а групи символів, склади і навіть слова).
У зв'язку з тим, що до стиснутого архіву необхідно прикладати таблицю відповідності, на файлах малих розмірів алгоритм Хафмана малоефективний. Практика також показує, що його ефективність залежить і від заданої граничної довжини коду (розміру словника). У середньому, найбільш ефективними виявляються архіви з розміром словника від 512 до 1024 одиниць (довжина коду до 18-20 біт).
У зв'язку з тим, що до стиснутого архіву необхідно прикладати таблицю відповідності, на файлах малих розмірів алгоритм Хафмана малоефективний. Практика також показує, що його ефективність залежить і від заданої граничної довжини коду (розміру словника). У середньому, найбільш ефективними виявляються архіви з розміром словника від 512 до 1024 одиниць (довжина коду до 18-20 біт).
Розглянуті вище алгоритми в "чистому вигляді" на практиці не застосовують через те, що ефективність кожного з них сильно залежить від початкових умов. У зв'язку з цим сучасні засоби архівації даних використовують більш складні алгоритми, засновані на комбінації декількох теоретичних методів. Загальним принципом в роботі таких "синтетичних" алгоритмів є попередній перегляд і аналіз початкових даних для індивідуальної настройки алгоритму на особливості матеріалу, що обробляється.
Сучасні програмні засоби для створення і обслуговування архівів відрізняються великим об'ємом функціональних можливостей, багато які з яких виходять далеко за рамки простого стиснення даних і ефективно доповнюють стандартні засоби операційної системи. У цьому значенні сучасні засоби архівації даних називають диспетчерами архівів.
До базових функцій, які виконують більшість сучасних диспетчерів архівів, відносяться:
витягання файлів з архівів;
створення нових архівів;
додання файлів в архів, що є;
створення архівів, що само-розпаковуються;
створення розподілених архівів на носіях малої місткості;
тестування цілісності структури архівів;
повне або часткове відновлення пошкоджених архівів;
захист архівів від перегляду і несанкціонованої модифікації.
Архіви, що самі розпаковуються (SFX, від англ. SelF-eXtracting). У тих випадках коли архівація проводиться для передачі документа споживачеві, потрібно передбачити наявність у нього програмного засобу, необхідного для витягання початкових даних з ущільненого архіву. Якщо у споживача немає таких засобів чи основ передбачати їх наявність, створюють архіви що само-розпаковуються. Архів, що сам розпаковується, готується на базі звичайного архіву шляхом приєднання до нього невеликого програмного модуля. Сам архів отримує розширення імені .ЕХЕ, характерне для виконавчих файлів. Споживач зможе виконати його запуск як програми, після чого розпаковування архіву станеться на його комп'ютері автоматично.
Розподілені архіви. У тих випадках коли передбачається передача вели-кого архіву на носіях малої місткості, наприклад на гнучких дисках, можливий розподіл одного архіву у вигляді малих фрагментів на декількох носіях.
Деякі диспетчери (наприклад WinZip) виконують розбивку відразу на гнучкі диски, а деякі (наприклад WinRAR і WinArj) дозволяють виконати попередню розбивку архіву на фрагменти заданого розміру на жорсткому диску. Згодом їх можна перенести на зовнішні носії шляхом копіювання.
При створенні розподілених архівів диспетчер WinZip володіє неприємною особливістю: кожний том несе файли з однаковими іменами. Внаслідок цього немає можливості встановити номери томів, що зберігаються на кожному з гнучких дисків, за назвою файлу. Тому кожний диск потрібно маркірувати помітками на наклейці, а при створенні розподіленого архіву потрібно акуратно перекладати дискети з початкової стопки в кінцеву, щоб не переплутати послідовність немаркованих томів.
У разі необхідності дізнатися номер тому можна не за назвою файлу, а за міткою на диску, хоч